IETF 72 - RD1 IPv4-IPv6 Interworking without using NATs in ISP infrastructures The Global Address Protocol (GAP) Rémi Després draft-despres-v6ops-apbp-01 IETF
IETF 72 - RD2 Considered Scenarios
IETF 72 - RD3 ? 64 4p Client Server ? ? 44 CPE The 4p-6-4 Scenario 4 4p RFC Client NAT4p4 ALGs (App Level Gways) - FTP, RTSP, etc. UPnP+ (Port Frwrdng, var. NAT-PMP) Router CPE Server Applis(CPE ALGs) UPnP+ (CPE) Global Address Server GAS
IETF 72 - RD4 DS The 6-4 Scenario 6 4 Client or Server Server or Client Client or server Server or Client All Applis GAS ? ?
IETF 72 - RD5 The GAP Solutions for these 2 scenarios
IETF 72 - RD6 The GAP Solution - 4p-6-4 Scenario Applis(CPE ALGs) UPnP+(CPE) 64 4p Client Server 44 Router CPE NAT4p4 ALGs UPnP+ GAP client GAP server Per site port range The GAP client obtains from the GAP server a public IPv4 address AND, in IPv4, a reserved port range Then, IPv4 packets are tunnelled between CPE and GAPS GAPS (*) Reserved ports only in the obtained port range (*)
IETF 72 - RD7 The GAP Solution Scenario 6 4 DS 4 GAP client DSTM-like socket handling All Applis GAP server Per site port range (*) Server ports only in the reserved port range GAPS Client or Server Server or Client The GAP client obtains from the GAP server a public IPv4 address AND, in IPv4, a reserved port range Then, IPv4 packets are tunnelled between CPE and GAPS (*)
IETF 72 - RD8 The Carrier Grade NAT Solutions (CGN) for these 2 scenarios
IETF 72 - RD9 The CGN solution - 4p-6-4 Scenario Applis(CGN ALGs) UPnP (CGN) 64 4p Client Server (No NAT) Tunnel req. Tunnel accept. Per site port max number? NAT4p4 ALGs (App Level Gways) UPnP+? 44 CPE CGN
IETF 72 - RD10 The CGN solution Scenario 6 4 DS 4 Tunnel estab. Dummy 4p address Applis(CGN ALGs) UPnP+(CGN) Tunnel accept. Per site port max number NAT4p4 ALGs UPnP+ CGN Client or Server Server or Client
IETF 72 - RD11 Comparison of CGN and GAP solutions Pro CGN CPEs are simpler and more stable (no NAT) NAT behavior is unified by each ISP (ALGs and UPnP+) Port max numbers may be overbooked Almost completely based on existing specifications Pro GAP GAS are simpler, more stable, easier to dimension (data pkt encap- decap; no NAT, no ALG, no UPnP+ ) NAT behavior may differ from CPE to CPE (->Easier guarantee of backward compatibility with existing NAT44s; localized bug effect, etc.) IPv4 E2E transparency for IPv6 address DS hosts A GAS and a router CPE can do both to leave the choice
IETF 72 - RD12 GAP vs APBP Terminology APBP = Address-port-borrowing-protocol GAP = Global Address Protocol The purpose is to provide global addresses (to devices that need one but have none locally) Extensions to IPv6 scenarios are envisaged IPv6 devices may also have private scope addresses (ULAs) If they have no public address locally, they may need one There are enough addresses to work without ports OUT OF SCOPE TODAY
IETF 72 - RD13 Questions ?
IETF 72 - RD14 Detailed protocol slides for an experiment
IETF 72 - RD15 Basics of a proposed GAP Reservation => IPv6,C,D(UDP,c,d(REQ)) IPv6,C,D(UDP,c,d(ALL,F,f-range,E)) <= => IPv6,C,E(UDP,c,d(ON,F,f-range)) Data exchanges (fi in f-range) IPv6,C,E(P41(IPv4,F,G(any,fi,g(…)))) IPv4,A,G(any,fi,g) Keep Alive IPv6,C,E(UDP,c,d(ALL,F,f-range,E)) <= => IPv6,C,E(UDP,c,d(ON,F,f-range)) Release by server IPv6,C,E(UDP,c,d(OFF,F,f-range)) <= Release by client => IPv6,C,E(UDP,c,d(RLS)) IPv6,C,E(UDP,c,d(TST)) <= 5 times in 2s No answers CAnycast Dd E CcFG g v6 v4 DS GAP clientGAP server
IETF 72 - RD16 Format of messages | COMMAND | Nb of bits | Port range prefix | | | of port range | | | Global IPv4 address | | | + Global address server unicast address + | Successive fields are present or not depending on the command
IETF 72 - RD17 Test Active Inactive - ? Recieve. IPv6,C,D(UDP,c,d(REQ)) - ? C is not in known list - ? k is first in inactive list - > Insert C in known list - > extract k from inactive list > Send IPv6,C,D(UDP,c,d(ALL,F,APrange-k,E)) > Start TO (.5s) ? TO counter ≠ 0 > TO decreased by 1 - ? Recieve IPv6,C,E(P41(IPv4,F,?(any,fi,?(…)))) - ? fi is in APrange-k - > Forward IPv4,F,?(any,fi,?(…)) > Start TO (10 min) > TO conter 5 - ? Recieve IPv6,C,E(UDP,c,d(ONF,f-range)) ? TO conter ≠ 0 > TO counter decreased by 1 ? TO counter = 0 - ? Recieve IPv6,C,E(UDP,c,d(OFF,F,f-range)) > TO counter 5 ? TO expired > Send IPv6,C,E(UDP,c,d(OFF)) > Insert k into inactive list > Insert C into unknown list ? TO counter = 0 Global address server Final State Machine FSM of address-port range k
IETF 72 - RD18 A Idle ? Recv. IPv6,C,D(UDP,c,d(ALL,F,f-range,E)) > Send IPv6,C,E(UDP,c,d(ONF,f-range)) ? TO expired > Send IPv6,C,E(UDP,c,d(OFF,F,f-range)) Global address client Final State Machine Waiting Active Releasing - Internal decision - N 1 ? Send IPv6,C,D(UDP,c,d(REQ)) > Start TO (.5s x N) > IF N < 128 THEN N N x 2 - ? TO expired - Internal decision - > Start TO (2s)
IETF 72 - RD19 Next Steps?
IETF 72 - RD20 Thank you