Applica'on Level Control of Ports in a Service Provider - - PowerPoint PPT Presentation

applica on level control of ports in a service provider
SMART_READER_LITE
LIVE PREVIEW

Applica'on Level Control of Ports in a Service Provider - - PowerPoint PPT Presentation

Applica'on Level Control of Ports in a Service Provider NAT environment Dave Thaler Dan Wing Alain Durand 1 Port Control Protocol Service


slide-1
SLIDE 1

Applica'on ¡Level ¡Control ¡of ¡Ports ¡in ¡ a ¡Service ¡Provider ¡NAT ¡environment ¡

Dave ¡Thaler ¡ ¡ Dan ¡Wing ¡ Alain ¡Durand ¡

1 ¡

slide-2
SLIDE 2

Port ¡Control ¡Protocol ¡

  • Service ¡Provider ¡NATs ¡have ¡problems: ¡

– Lack ¡of ¡control ¡of ¡port ¡reserva'on ¡/port ¡ forwarding ¡ – Some ¡legacy ¡applica'ons ¡will ¡break ¡

  • A+P ¡was ¡one ¡approach ¡to ¡address ¡those ¡issues ¡
  • PCP ¡is ¡another ¡approach ¡to ¡give ¡back ¡control ¡

to ¡the ¡customers ¡via ¡their ¡applica'ons. ¡

– Enable ¡applica'ons ¡to ¡dynamically ¡nego'ate ¡ports ¡ with ¡the ¡service ¡provider ¡NAT ¡ – Provide ¡some ¡level ¡of ¡backward ¡compa'bility ¡with ¡ exis'ng ¡APIs ¡(UPnP/NAT-­‑PMP) ¡

slide-3
SLIDE 3

Port-­‑Forwarding ¡APIs ¡

Dave ¡Thaler ¡ ¡ dthaler@microsoQ.com ¡

3 ¡

slide-4
SLIDE 4

Model ¡

  • No ¡change ¡to ¡IP ¡model: ¡

– A ¡full ¡IP ¡address ¡is ¡s'll ¡assigned ¡to ¡every ¡interface, ¡ including ¡on ¡NATs ¡

  • App/framework ¡wants ¡to ¡learn ¡the ¡(full) ¡IP ¡

address ¡of ¡another ¡machine’s ¡(the ¡NAT’s) ¡ interface, ¡and ¡a ¡port ¡that ¡machine ¡will ¡forward ¡

– Can’t ¡be ¡done ¡using ¡normal ¡IP ¡address ¡APIs ¡without ¡ changing ¡the ¡IP ¡model ¡ – App/framework ¡can ¡then ¡adver'se ¡in ¡app-­‑specific ¡ manner ¡(SRV ¡record, ¡email, ¡DHT, ¡etc.) ¡

  • Hence ¡this ¡is ¡opt-­‑in ¡for ¡an ¡app ¡or ¡framework ¡

4 ¡

slide-5
SLIDE 5

Two ¡separate ¡app ¡scenarios ¡

  • Manage ¡sta'c ¡port ¡mapping ¡

– Management ¡style ¡applica'on ¡wants ¡to ¡configure ¡ a ¡given ¡external ¡port ¡to ¡be ¡permanently ¡ forwarded ¡to ¡a ¡given ¡port ¡on ¡a ¡given ¡machine ¡

  • Manage ¡dynamic ¡port ¡mapping ¡

– Run'me ¡applica'on ¡wants ¡to ¡get ¡an ¡external ¡port ¡ allocated ¡and ¡forwarded ¡to ¡its ¡port ¡on ¡its ¡machine ¡ for ¡some ¡dura'on ¡

5 ¡

slide-6
SLIDE 6

NATUPnP ¡Library ¡ (Windows) ¡

NATUPNPLib.UPnPNATClass upnpnat = new NATUPNPLib.UPnPNATClass(); NATUPNPLib.IStaticPortMappingCollection mappings = upnpnat.StaticPortMappingCollection; err = mappings.Add(8080, // External port "TCP", // Protocol 80, // Internal port "192.168.1.100", // Internal IP true, // Enabled "Local Web Server"); // Description

  • External ¡port=0 ¡means ¡wildcard, ¡but ¡many ¡NATs ¡don’t ¡support ¡

6 ¡

slide-7
SLIDE 7

NATUPnP ¡API ¡Observa'ons ¡

  • Either ¡requested ¡port ¡is ¡allocated ¡or ¡call ¡fails ¡
  • Internal ¡IP ¡parameter ¡allows ¡for ¡management ¡

applica'ons ¡

  • Only ¡supports ¡sta'c ¡port ¡mapping ¡(no ¡

life'me) ¡

– UPnP ¡protocol ¡allows ¡life'mes, ¡but ¡NATs ¡may ¡not ¡ support ¡them ¡

  • Interface ¡can ¡be ¡determined ¡based ¡on ¡internal ¡

IP ¡parameter ¡

7 ¡

slide-8
SLIDE 8

DNSServiceNAT ¡(Apple) ¡

DNSServiceRef sdRef; err = DNSServiceNATPortMappingCreate(&sdRef, 0, 0, // ifIndex or 0 kDNSServiceProtocol_TCP, // Protocol htons(80), // Internal port htons(8080), // External port 3600, // Lifetime callBack, NULL);

  • External ¡port=0 ¡means ¡wildcard ¡

8 ¡

slide-9
SLIDE 9

DNSServiceNAT ¡Observa'ons ¡

  • Life'me ¡parameter ¡allows ¡for ¡run'me ¡

applica'ons ¡

  • External ¡port ¡is ¡just ¡a ¡preference, ¡it ¡may ¡

succeed ¡and ¡return ¡something ¡else ¡

  • Lack ¡of ¡internal ¡IP ¡parameter ¡means ¡not ¡

designed ¡for ¡arbitrary ¡management ¡app ¡

9 ¡

slide-10
SLIDE 10

draQ-­‑wing-­‑soQwire-­‑port-­‑control-­‑protocol ¡ 10 ¡

Port ¡Control ¡Protocol ¡

draQ-­‑wing-­‑soQwire-­‑port-­‑control-­‑protocol-­‑01 ¡ IETF77, ¡March ¡2010 ¡

Dan ¡Wing, ¡dwing@cisco.com ¡ Reinaldo ¡Penno, ¡rpenno@juniper.net ¡ Mohamed ¡Boucadair, ¡mohamed.boucadair@orange-­‑Qgroup.com ¡ ¡

slide-11
SLIDE 11

draQ-­‑wing-­‑soQwire-­‑port-­‑control-­‑protocol ¡ 11 ¡

Port ¡Control ¡Protocol ¡

  • Need ¡to ¡offer ¡port ¡forwarding ¡capability ¡when ¡

Service ¡Provider ¡NAT ¡are ¡deployed ¡

– Ability ¡to ¡offer ¡similar ¡service ¡features ¡as ¡per ¡current ¡CPE ¡ model ¡

  • Need ¡to ¡delegate ¡port ¡numbers ¡to ¡reques'ng ¡

applica'ons/hosts ¡to ¡avoid ¡enforcing ¡ALGs ¡at ¡the ¡ Provider ¡NAT ¡

– Overall ¡performance ¡of ¡the ¡Provider ¡NAT ¡not ¡altered ¡

slide-12
SLIDE 12

draQ-­‑wing-­‑soQwire-­‑port-­‑control-­‑protocol ¡ 12 ¡

PCP ¡Requirements ¡

  • Support ¡Large ¡Scale ¡NATs ¡

– Spanning ¡many ¡subscribers ¡

  • Allow ¡subscriber ¡apps ¡to ¡open ¡ports ¡
  • IPv6 ¡ ¡
  • Simple, ¡lightweight ¡

– Applica'on, ¡proxying ¡in ¡CPE, ¡and ¡server ¡

  • Discover ¡and ¡control ¡LSN ¡

– Without ¡interfering ¡with ¡intermediate ¡ infrastructure ¡

slide-13
SLIDE 13

draQ-­‑wing-­‑soQwire-­‑port-­‑control-­‑protocol ¡ 13 ¡

Why ¡Not ¡My ¡Favorite ¡Protocol? ¡

(MIDCOM, ¡UPnP ¡IGD, ¡NAT-­‑PMP, ¡DHCP ¡…) ¡

  • None ¡meet ¡all ¡requirements ¡
slide-14
SLIDE 14

draQ-­‑wing-­‑soQwire-­‑port-­‑control-­‑protocol ¡ 14 ¡

PCP ¡Applicability ¡

  • IPv4 ¡address ¡sharing ¡ ¡

– No ¡NAT44 ¡(fixed ¡port ¡range) ¡ – Stateful ¡NAT44 ¡(e.g., ¡DS-­‑Lite, ¡LSN) ¡ – Stateless ¡NAT64/NAT46 ¡ – Stateful ¡NAT64/NAT46 ¡

  • IPv6 ¡Simple ¡CPE ¡Security ¡
slide-15
SLIDE 15

draQ-­‑wing-­‑soQwire-­‑port-­‑control-­‑protocol ¡ 15 ¡

PCP ¡Basics ¡

  • Lightweight ¡

– Designed ¡for ¡deployment ¡at ¡large ¡scale ¡ – Does ¡not ¡require ¡heavy ¡treatment ¡at ¡the ¡Server ¡side ¡

  • ¡Quick ¡convergent ¡Request/answer ¡model ¡

– No ¡permanent ¡sessions ¡are ¡required ¡to ¡be ¡maintained ¡ between ¡the ¡Client ¡and ¡the ¡Server ¡

  • A ¡subscriber ¡can ¡only ¡open ¡pinholes ¡for ¡his ¡own ¡

devices ¡

– PCP ¡isn’t ¡needed ¡in ¡every ¡internal ¡server ¡ – E.g., ¡Customer ¡Premise ¡router ¡can ¡open ¡pinhole ¡for ¡ webcam ¡or ¡TiVo ¡

slide-16
SLIDE 16

draQ-­‑wing-­‑soQwire-­‑port-­‑control-­‑protocol ¡ 16 ¡

PCP ¡and ¡IPv6 ¡

  • NAT64 ¡

– Open ¡ports ¡for ¡incoming ¡IPv4 ¡traffic ¡

  • E.g., ¡IPv6 ¡HTTP ¡server ¡in ¡the ¡home ¡accessed ¡from ¡IPv4 ¡

Internet ¡

  • draQ-­‑iel-­‑v6ops-­‑cpe-­‑simple-­‑security-­‑09 ¡

– Open ¡pinholes ¡in ¡IPv6 ¡CPE ¡

slide-17
SLIDE 17

draQ-­‑wing-­‑soQwire-­‑port-­‑control-­‑protocol ¡ 17 ¡

Client ¡Models ¡

slide-18
SLIDE 18

draQ-­‑wing-­‑soQwire-­‑port-­‑control-­‑protocol ¡ 18 ¡

PCP ¡Client ¡Model: ¡UPnP ¡IGD ¡Proxy ¡

  • Proxies ¡UPnP ¡IGD ¡to ¡PCP ¡
  • Provides ¡compa'bility ¡for ¡UPnP ¡IGD ¡
  • Applica'ons ¡which ¡want ¡specific ¡port ¡will ¡

likely ¡get ¡an ¡error ¡

– Can’t ¡help ¡that ¡

PCP ¡Server ¡ Customer ¡Premise ¡ Router ¡ UPnP ¡IGD ¡proxy ¡ UPnP ¡IGD ¡ PCP ¡Client ¡

slide-19
SLIDE 19

draQ-­‑wing-­‑soQwire-­‑port-­‑control-­‑protocol ¡ 19 ¡

PCP ¡Client ¡Model: ¡NAT-­‑PMP ¡Proxy ¡

  • Proxies ¡NAT-­‑PMP ¡to ¡PCP ¡
  • Provides ¡compa'bility ¡for ¡UPnP ¡IGD ¡
  • No ¡loss ¡of ¡seman'cs ¡

PCP ¡Server ¡ Customer ¡Premise ¡ Router ¡ NAT-­‑PMP ¡proxy ¡ NAT-­‑PMP ¡ PCP ¡Client ¡

slide-20
SLIDE 20

draQ-­‑wing-­‑soQwire-­‑port-­‑control-­‑protocol ¡ 20 ¡

PCP ¡Client ¡Model: ¡HTTP ¡

  • Subscriber ¡manages ¡their ¡own ¡port ¡forwarding ¡

– Similar ¡to ¡hmp://192.168.1.1, ¡login ¡as ¡“admin” ¡ – Instruc'ons ¡at ¡hmp://www.porlorward.com ¡

  • Not ¡for ¡“Grandma” ¡

PCP ¡Server ¡ Customer ¡Premise ¡ Router ¡ HTTP ¡managed ¡ HTTP ¡ PCP ¡Client ¡

slide-21
SLIDE 21

draQ-­‑wing-­‑soQwire-­‑port-­‑control-­‑protocol ¡ 21 ¡

PCP ¡Client ¡Model: ¡PCP ¡on ¡host ¡

  • Applica'on ¡(or ¡OS) ¡implements ¡PCP ¡client ¡
  • Customer ¡premise ¡router ¡does ¡nothing ¡

– Does ¡not ¡proxy ¡PCP ¡

  • draQ-­‑iel-­‑v6ops-­‑cpe-­‑simple-­‑security ¡

PCP ¡Server ¡ Customer ¡Premise ¡ Router ¡ PCP ¡Client ¡

slide-22
SLIDE 22

draQ-­‑wing-­‑soQwire-­‑port-­‑control-­‑protocol ¡ 22 ¡

Server ¡Models ¡

slide-23
SLIDE 23

draQ-­‑wing-­‑soQwire-­‑port-­‑control-­‑protocol ¡ 23 ¡

PCP ¡Server ¡Model: ¡Embedded ¡

PCP ¡Client ¡ Service ¡Provider ¡ NAT ¡ PCP ¡Server ¡

Internet ¡

  • PCP ¡Server ¡embedded ¡in ¡Service ¡Provider’s ¡

NAT ¡

  • Similar ¡to ¡UPnP ¡IGD, ¡NAT-­‑PMP ¡
slide-24
SLIDE 24

draQ-­‑wing-­‑soQwire-­‑port-­‑control-­‑protocol ¡ 24 ¡

PCP ¡Server ¡Model: ¡Separate ¡

PCP ¡Server ¡ PCP ¡Client ¡ Service ¡Provider ¡ NAT ¡

Internet ¡

H.248, ¡MIDCOM, ¡proprietary, ¡etc. ¡

  • PCP ¡Server ¡is ¡outside ¡of ¡the ¡NAT ¡
  • Allows ¡exis'ng ¡NAT ¡control ¡protocol ¡
slide-25
SLIDE 25

draQ-­‑wing-­‑soQwire-­‑port-­‑control-­‑protocol ¡ 25 ¡

Ques'ons ¡

draQ-­‑wing-­‑soQwire-­‑port-­‑control-­‑protocol-­‑01 ¡

slide-26
SLIDE 26

draQ-­‑wing-­‑soQwire-­‑port-­‑control-­‑protocol ¡ 26 ¡

PCP ¡Server ¡Models ¡

PCP ¡Client ¡ PCP ¡Server ¡ PCP ¡Client ¡ Service ¡Provider ¡ NAT ¡ Service ¡Provider ¡ NAT ¡ PCP ¡Server ¡

Internet ¡ Internet ¡

H.248, ¡MIDCOM, ¡proprietary, ¡etc. ¡

IPv6 ¡

slide-27
SLIDE 27

draQ-­‑wing-­‑soQwire-­‑port-­‑control-­‑protocol ¡ 27 ¡

PCP ¡Client ¡Models ¡

PCP ¡Server ¡ Customer ¡Premise ¡ Router ¡ UPnP ¡IGD ¡proxy ¡ UPnP ¡IGD ¡ PCP ¡Server ¡ Customer ¡Premise ¡ Router ¡ NAT-­‑PMP ¡proxy ¡ NAT-­‑PMP ¡ PCP ¡Server ¡ Customer ¡Premise ¡ Router ¡ PCP ¡Client ¡ PCP ¡Client ¡ PCP ¡Client ¡ PCP ¡Server ¡ Customer ¡Premise ¡ Router ¡ HTTP ¡managed ¡ HTTP ¡ PCP ¡Client ¡

slide-28
SLIDE 28

Mapping ¡APIs/protocols ¡to ¡PCP ¡

  • Apps ¡shouldn’t ¡have ¡to ¡know ¡which ¡case ¡they’re ¡in ¡
  • DNSServiceNAT ¡API ¡/ ¡NAT-­‑PMP ¡protocol ¡maps ¡directly ¡
  • NATUPnP ¡(v1) ¡API ¡/ ¡UPnP-­‑IGD ¡protocol ¡more ¡complicated ¡

– It ¡can ¡be ¡done ¡successfully, ¡but ¡it’s ¡kludgy ¡

28 ¡