IPv6 sameksistens med IPv4 af Laurent Flindt Muller & Jakob Pedersen
Gennemgangsplan: Network Address Translation Protocol Translation (NAT-PT) - Motivation - IPv4 NAT - NAT-PT - Stateless IP/ICMP Translation Algorithm (SIIT) - Fordele og ulemper ved NAT-PT og SIIT Forbindelse af IPv6 domæner via IPv4 skyer (6to4) - Motivation - 6to4 - Fordele og ulemper ved 6to4 Sammenligning af NAT-PT og 6to4
NAT-PT - Motivation: - Tillade sameksistens mellem IPv4 og IPv6 i en overgangsperiode - Tillade transparent kommunikation (for applikationer) mellem en IPv6-only vært og en IPv4-only vært. - Undgå dual stacking og derved spare på IPv4-adresser.
IPv4 NAT: NAT Network Address Translation
IPv4 NAT: NAT Eksempel 192.168.1.10 ønsker at kommunikere med 213.237.10.33: 1. 192.168.1.10 sender en pakke med SA = 192.168.1.10 og DA = 213.237.10.33 som bliver routet til 192.168.1.1 2. NAT routeren oversætter pakken til SA = 212.17.13.93 og DA uændret. Pakken sendes til 213.237.10.33 på WAN interfacet. 3. 213.237.10.33 svarer med en pakke med SA = 213.237.10.33 og DA = 212.17.13.93 4. Pakken bliver oversat til DA = 192.168.1.10 og SA uændret. 5. 192.168.1.10 modtager pakken.
IPv4 NAT: NAT tabel - Dynamiske indgange - Statiske indgange
NAT-PT - Oversigt: - Bruger SIIT til protokol oversættelse - Bruger IPv6 præfix til at route pakker til IPv4 værter igennem NAT-PT - Kræver en pulje af globale IPv4 adresser - Holder en NAT-PT tabel ligesom ved IPv4 NAT
NAT-PT - Typer: Traditional NAT-PT (unidirectional) - Basic NAT-PT - Network Address Port Translation Protocol Translation (NAPT-PT) Bi-directional NAT-PT - Statiske NAT-PT tabel indgange - Dynamiske NAT-PT tabel indgange (kræver DNS-ALG)
NAT-PT - Eksempel: Vært A (FEDC:BA98::7654:3210) ønsker at kommunikere med vært B (132.146.243.30): 1. A sender en pakke med SA = FEDC:BA98::7654:3210 og DA = PREFIX::132.146.243.30 som bliver routet til NAT-PT boksen. 2. Hvis pakken initialiserer en session, oprettes en ny indgang i NAT-PT tabellen, og sessionen tildeles en global IPv4-adresse fra NAT-PT boksens pool af v4-adresser (120.130.26/24). Initialiserer pakken ikke en session benyttes den forhåbentlig eksisterende indgang. Herefter oversættes pakken til SA = 120.130.26.10 og DA = 132.146.243.30 og sendes ud på IPv4 netværket. 3. B modtager pakken og sender en svar-pakke med SA = 132.146.243.30 og DA = 120.130.26.10. 4. NAT-PT boksen modtager svar-pakken, slår op i tabellen og oversætter pakken til SA = PREFIX::132.146.243.30 og DA = FEDC:BA98::7654:3210 og sender den ud på IPv6 netværket, hvor den modtages af A.
NAPT-PT - Eksempel: Vært B (132.146.243.30) ønsker at kommunikere med IPv6-netværkets HTTP-server (vært A (FEDC:BA98::7654:3210) port 8080): 1. NAPT-PT tabellen indeholder en statisk indgang: 120.130.26.10:80 -> FEDC:BA98::7654:3210 port 8080. 2. B sender en pakke med SA = 132.146.243.30 source TCP port 1025 og DA = 120.130.26.10 dest. TCP port 80. 3. NAPT-PT boksen modtager pakken og slår op i tabellen, hvorefter pakken oversættes til SA = PREFIX::132.146.243.30 source TCP port 1025 og DA = FEDC:BA98::7654:3210 dest TCP port 8080. Pakken sendes ud på IPv6 netværket. 4. A modtager pakken og kan nu svare B på port 1025.
SIIT - Egenskaber: - Tilstandsløs. - Bruges af NAT-PT til protokol-oversættelsesdelen. - Gør det muligt for IPv6 værter via NAT-PT at se IPv4 værter som IPv6 værter og omvendt. - Ved frit valg af PREFIX kræves omberegning af pseudoheaderchecksummer. - Oversætter også ICMPv4 og ICMPv6.
SIIT - Oversættelsesdetajler: - Ufragmenterede UDP pakker kræver en pseudoheader-checksum i IPv6 i modsætning til i IPv4. - ICMP payload kræver i visse tilfælde oversættelse. - IPv4 options oversættes ikke. - IPv6 routing headers, hop-by-hop extensions headers samt destination options headers oversættes ikke. - Source routing (både IPv4 og IPv6) oversættes ikke. - Multicast traffik understøttes ikke.
SIIT IPv4 til IPv6: - IPv6 kræver Path MTU Discovery, således at IPv6 routere ikke fragmenterer pakker. SIIT fragmenterer derfor IPv4 pakker, hvis MTU ikke er bestemt (DF flag) til 1280 bytes. - ICMPv4 oversættes til ICMPv6.
SIIT IPv4 til IPv6 uden fragment header: DF er sat og pakken er ikke et fragment (MF er ikke sat og Fragment Offset er nul). - TTL decrementeres med 1 og ICMP besked afsendes, hvis TTL når nul.
SIIT IPv4 til IPv6 med fragment header: DF er ikke sat eller pakken er et fragment (MF er sat eller Fragment Offset er forskellig fra nul). - Next Header sættes til fragment headeren. - De laveste 16 bit af Identification kopieres fra Identification i IPv4 pakken. Resten sættes lig nul.
SIIT IPv6 til IPv4: - Fragmentering/MTU skaber ingen problemer, da IPv4 routere jo har mulighed for at fragmentere pakker. - ICMPv6 oversættes til ICMPv4.
SIIT IPv6 til IPv4 uden fragment header: - Internet Header Length (IHL) sættes til 5 (no IPv4 options) - Flag: Don t Fragment (DF) sættes men ikke More Fragments. - Header Checksum udregnes når headeren er genereret og TTL behandles som før.
SIIT IPv6 til IPv4 med fragment header: - Payload Length justeres da IPv4 ikke indeholder fragment headeren. - De laveste 16 bit fra Identification kopieres til Identification. - DF flaget sættes ikke.
NAT-PT Fordele og Ulemper: Fordele: - Kræver kun opsætning af NAT-PT boksen på grænsen mellem IPv6 og IPv4 samt intern rutning af PREFIX på IPv6 netværk. - Kræver ingen omskrivning af programmel. Ulemper: - Alle pakker i forbindelse med en session skal rutes gennem samme NAT-PT boks. - Kræver ALG hvis applikationen sender IP felter i payload en. F.eks. DNS og FTP pakker. - Ingen end-to-end sikkerhed. - Kræver forholdsvis store hardware ressourcer
Forbindelse af IPv6 domæner via IPv4 skyer (6to4): Motivation: - Gøre sameksistens mellem IPv6 og IPv4 mulig i opstartsfasen af overgangsperioden. - Sikre kommunikation mellem IPv6 øer over f.eks. IPv4 internettet. Generelt: - Indkapsling af IPv6 pakker i IPv4 pakker. - IANA har tildelt et specifikt IPv6 PREFIX til dette formål (2002::/16) - Dynamisk tunneling. - Kræver en global IPv4 adresse pr. IPv6 ø.
6to4 - Oversigt: - I IPv4 pakkerne sættes Protocol til 41 (indkapslede IPv6 pakker). - ICMPv4 pakker droppes.
6to4 - Eksempel: Site A har 192.1.2.3 som ekstern IPv4 adresse og SITE B har 9.254.253.252, som medfører at værterne på site A og B har følgende IPv6 PREFIX 2002:c001:0203::/48 og 2002:09fe:fdfc::/48. - En vært på A ønsker at kommunikere med en vært på B. Værten på A sender en pakke til værten på B med PREFIX 2002:09fe:fdfc::/48. - Da pakken ikke har samme PREFIX som A routes pakken til 6to4 routeren, som indkapsler den i IPv4 med DA = 9.254.253.252 og protocol 41. Pakken sendes ud på IPv4 netværket. - 6to4 routeren på B modtager pakken og opdager via protokol at det er en indkapslet IPv6 pakke. IPv4 headeren fjernes og pakken sendes ud på IPv6 netværket, hvor den modtages af den korrekte vært. Værten på B kan nu svare værten på A på samme måde.
6to4 - Routeren: To nye regler skal introduceres til 6to4 routeren: - Afsendelse: Hvis det næste hop (IPv6 adresse) for en IPv6 pakke har 6to4 PREFIX et og dette præfiks ikke tilhører det lokale site, så indkapsel pakken i IPv4 og send pakken ud på IPv4 netværket. - Modtagelse: Hvis en IPv4 pakke modtages med protocol type 41, så fjern IPv4 headeren, og send pakken ud på det lokale IPv6 netværk.
6to4 Fordele og Ulemper: Fordele: - Minimal manuel konfiguration. - Kræver ingen eksplicit tunnel opsætning pr. IPv6 site, som man ønsker at kommunikere med over IPv4. - Kræver ingen omskrivning af programmel. Ulemper: - Indkapslingsoverhead.
Sammenligning: - NAT-PT er mere kompliceret at implementere og tungere hardwaremæssigt (kræver længere tid pr. pakke) end 6to4. - NAT-PT er mere fleksibel end 6to4, da kommunikation mellem IPv4 og IPv6 værter er mulig. - 6to4 er mere transparent for applikationer. - 6to4 kræver ikke ALG s, hvis applikationen sender IP-felter i payload en.