200 likes | 337 Views
IPv4-IPv6 Interworking without using NATs in ISP infrastructures The Global Address Protocol ( GAP ) Rémi Després draft-despres-v6ops-apbp-01 IETF 72 - 2008-07-28. Considered Scenarios. The 4p-6-4 Scenario. Global Address Server GAS. Server. Client. CPE. 4p. 6. 4. 4. 4. ?. ?. ?.
E N D
IETF 72 - RD IPv4-IPv6 Interworking without using NATs in ISP infrastructures The Global Address Protocol (GAP) Rémi Després draft-despres-v6ops-apbp-01 IETF 72 - 2008-07-28
IETF 72 - RD Considered Scenarios
IETF 72 - RD The 4p-6-4 Scenario Global Address Server GAS Server Client CPE 4p 6 4 4 4 ? ? ? Router CPE Server Client 4p RFC 1918 4 4 4 NAT4p4 ALGs (App Level Gways) - FTP, RTSP, etc. UPnP+ (Port Frwrdng, var. NAT-PMP) Applis(CPE ALGs) UPnP+ (CPE)
IETF 72 - RD 4 6 4 The 6-4 Scenario Server or Client Client or Server GAS DS 4 ? ? Server or Client Client or server 4 4 All Applis
IETF 72 - RD The GAP Solutionsfor these 2 scenarios
IETF 72 - RD The GAP Solution - 4p-6-4 Scenario Router CPE Server GAPS Client 4p 6 4 4 4 Applis(CPE ALGs) UPnP+(CPE) NAT4p4 ALGs UPnP+ GAP client (*) GAP server Per site port range <====== GAP ======> 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 (*) Reserved ports only in the obtained port range
IETF 72 - RD 4 The GAP Solution - 6-4 Scenario Server or Client Client or Server GAPS (*) 6 DS 4 GAP client DSTM-like socket handling All Applis GAP server Per site port range <============= GAP ============> 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 (*) Server ports only in the reserved port range
IETF 72 - RD The Carrier Grade NAT Solutions (CGN)for these 2 scenarios
IETF 72 - RD The CGN solution - 4p-6-4 Scenario Server CGN Client CPE 4p 6 4 4 4 Applis(CGN ALGs) UPnP (CGN) (No NAT) Tunnel req. Tunnel accept. Per site port max number? NAT4p4 ALGs (App Level Gways) UPnP+?
IETF 72 - RD 6 4 The CGN solution - 6-4 Scenario Server or Client Client or Server CGN DS 4 Tunnel accept. Per site port max number NAT4p4 ALGs UPnP+ Tunnel estab. Dummy 4p address Applis(CGN ALGs) UPnP+(CGN)
IETF 72 - RD 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 - RD 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 withoutports • OUT OF SCOPE TODAY
Questions ? IETF 72 - RD
Detailed protocol slides for an experiment IETF 72 - RD
IETF 72 - RD Basics of a proposed GAP GAP client GAP server c C C Anycast D d F G g DS v6 E v4 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
IETF 72 - RD Format of messages 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 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 - RD Global address server Final State Machine 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 FSM of address-port range k > Send IPv6,C,E(UDP,c,d(OFF)) > Insert k into inactive list > Insert C into unknown list > TO counter 5 ? TO counter ≠ 0 > TO decreased by 1 Test > Send IPv6,C,D(UDP,c,d(ALL,F,APrange-k,E)) > Start TO (.5s) ? TO counter = 0 ? TO expired • ? Recieve IPv6,C,E(P41(IPv4,F,?(any,fi,?(…)))) • ? fi is in APrange-k • > Forward IPv4,F,?(any,fi,?(…)) • ? Recieve IPv6,C,E(UDP,c,d(ONF,f-range)) > Start TO (10 min) > TO conter 5 ? TO counter = 0 Active ? TO conter ≠ 0 > TO counter decreased by 1 ? TO expired • ? Recieve IPv6,C,E(UDP,c,d(OFF,F,f-range))
Global address client Final State Machine IETF 72 - RD Idle • 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 Waiting • ? TO expired ? Recv. IPv6,C,D(UDP,c,d(ALL,F,f-range,E)) > Send IPv6,C,E(UDP,c,d(ONF,f-range)) Active • Internal decision • > Start TO (2s) A ? TO expired > Send IPv6,C,E(UDP,c,d(OFF,F,f-range)) Releasing
IETF 72 - RD Next Steps?
Thank you remi.despres@free.fr IETF 72 - RD