MC's journal

Setting Orange, the 23 day of The Aftermath in the YOLD 3175

Varför behövs IPv6?

Jag har flera gånger försökt förklara vad IPv6 går ut på. De flesta gånger jag föreläst har det varit för en publik fylld av programmerare eller systemadministratörer som kan förväntas veta åtminstone något om nätverk, men ibland har jag missbedömt min publik totalt. Jag gjorde det när jag för första gången besökte en BarCamp, på BarCamp Copenhagen i januari 2008.

En BarCamp är en slags 'unconference' döpt enligt samma tema som bokförlaget O'Reillys berömda FooCamp (tänk "foobar"). Det finns inget färdigt program på en unconference utan deltagarna förväntas själva skapa programmet på plats. En regel jag hade läst om var att om det här var ens första BarCamp så måste man föreläsa, ungefär som i filmen/boken Fight Club där en av reglerna är "If this is your first night at Fight Club, you have to fight", om ni minns.

Allt efter att kvällen led och ölen (dansk konferens, ju!) gled ner så blev jag alltmer nervös. Jag hade ännu inte skrivit upp mig på programmet och jag måste ju presentera något enligt reglerna. Jag skrev till slut upp något i stil med "Samtal om IPv6".

I stället för en klassisk föreläsning tänkte jag mig något mer liknande ett samtal, så jag flyttade runt stolarna i rummet till en cirkel. Jag förväntade mig ett stilla samtal bland skapligt nätverkskunniga människor om de problem vi ju alla visste fanns i IPv6, rapporter från olika fall av IPv6-införande där vi kunde utbyta erfarenheter och kanske lära av varandras misstag. Det var bara det att jag totalt hade missbedömt min publik.

Många av de närvarande visste kanske mycket om webdesign och möjligen utvecklingen av AJAX-baserade program, men i princip ingenting om nätverk. En del visste kanske inte ens vad en IP-adress var för något. Lite frustrerad försökte jag anpassa mig och i stället göra det hela till en introduktion, men jag tycker nog det blev ganska förvirrat, även om några efteråt tyckte det var den mest innehållsrika presentationen för kvällen! Den danska ölen hjälpte nog tyvärr till att göra det mer förvirrat än det kunde ha varit.

Jag tänkte nu försöka lista ut ungefär vad jag egentligen borde ha sagt till den här publiken och liknande publik i framtiden. Jag tänkte koncentrera mig på att svara på frågorna: Vad löser egentligen IPv6 för problem? Vad behövs det för?

Först lite bakgrund…

Adressöversättning

Datorer på Internet måste ha en adress för att andra datorer skall kunna nå dem. Dagens adresser är för det mesta IPv4-adresser, som brukar skrivas så här: 194.109.217.58.

Det är ont om IPv4-adresser nu för tiden. Eftersom det är så ont om IPv4-adresserna har väldigt många datorer idag i stället privata IP-adresser, som inte direkt kan nås från andra datorer på Internet. Den ser likadan ut som en publik adress, till exempel som 10.0.0.3, men tillhör alltså ett antal reserverade adresser som aldrig skall dyka upp på det riktiga Internet.

I ett typiskt hemmanätverk sitter en hemmarouter ansluten till Internet- leverantören. Denna router har en publik IP-adress och är därmed tillgänglig på Internet. I ditt hemmanät, bakom routern, har alla datorer i stället privata adresser. Hemmaroutern översätter vanligen alla dessa privata adresser till sin enda publika adress. Den här funktionen kallas Network Address Translation eller NAT.

I ett nät som använder NAT 'försvinner' alltså många potentiella slutpunkter för kommunikation. Det går inte utan vidare att etablera en förbindelse direkt till noderna med privata adresser utifrån Internet.

Det finns nu för tiden så få IPv4-adresser kvar att det är troligt att det snart kommer att finnas NAT även hos Internet-leverantörerna. Det betyder alltså att din hemmarouter inte heller kommer att ha en publik IP-adress. Den kommer inte att vara direkt tillgänglig på Internet och ingen kommer att kunna etablera direkta förbindelser till den. Den här funktionen brukar kallas Carrier-Grade NAT och somliga, speciellt mobiloperatörer, har redan infört något liknande.

Ganska snart kommer vi alltså leva i en miljö med adressöversättningar i flera lager. De här lagren kommer på ett sätt att spärra viss trafik, inte genom policy, utan för att den sortens trafik inte utan vidare fungerar med adressöversättning utan extra hjälp. Finns inte rätt program som förstår sig på just det protokoll du vill köra i routern som gör översättningen kommer många saker helt enkelt sluta att fungera.

Typiska saker som inte fungerar bra tillsammans med NAT är de flesta UDP- baserade protokoll, men också FTP, IP-telefoni med SIP, strömmande ljud och video med RTSP och RTP och många fler. I en del fall kan man komma förbi problemen genom att konfigurera sin NAT att vara snäll mot de protokollen och i en del fall kan NAT-tillverkaren ha stoppat in ett speciellt program som känner till just det protokollet och hjälper till att öppna upp NAT:en, men det är långt ifrån säkert. Tänk också på att om man har flera lager av NAT måste det här stödet i så fall finnas i alla lagren.

Utvecklar någon en ny tjänst som inte arbetar bra ihop med NAT (typiskt tidskritiska saker) måste kanske alla NAT-lager uppdateras på nytt, nya program måste skrivas och installeras i alla NAT-lådor för att den nya tjänsten skall fungera. Det går mycket trögt att få ut ett sådant stöd, så NAT hämmar alltså också utvecklingen av nya tjänster.

Användarhistorier

VoIP

Om jag köper ett IP-telefoniabonnemang idag så måste jag vanligen konfigurera min hemmarouter för att överhuvudtaget kunna använda telefonen. Det är inte säkert att hemmaroutern stöder den sortens konfiguration, så det är inte säkert att jag kan använda IP-telefoni överhuvudtaget.

En del leverantörer av IP-telefoni levererar egen hårdvara som skall sättas före eventuell hemmarouter för att komma förbi det här problemet, men när Internet-leverantören också kör NAT (Carrier-Grade NAT) så kommer det ändå inte att fungera, för den översättningen kan ju du inte konfigurera som kund.

Videochat

Samma situation som gäller IP-telefoni ovan gäller också tvåvägskommunikation med strömmande video. Videochattar du och vill se din motpart i något som inte släpar efter blir det svårt att få det att fungera med NAT utan specialstöd i form av extra programvara i alla adressöversättare eller manuell konfiguration.

Samma sak gäller här, att när din Internet-leverantör inför egen NAT så spelar din egen konfiguration inte längre någon roll. Du kan inte längre videochatta.

Nätverksspel

Många nätverksspel är tidskritiska. Om du inte hinnar styra din karaktär så dör du i spelet. För att det skall fungera bra så använder man för spel vanligen protokoll som sällan fungerar bra bakom NAT.

Alla som någon gång spelat nätverksspel vet att man kan behöva konfigurera sin hemmarouter för att få det att fungera. Ibland kanske det överhuvudtaget inte kan fungera med den hemmarouter man har. Just den routern kanske inte har den funktionen.

När din hemmarouter sitter bakom Carrier-Grade NAT så kan du förstås inte konfigurera den leverantörens NAT. Du kommer inte längre kunna spela ditt spel.

Strömmande video

Om du köper en mediacenter-PC att ha i vardagsrummet där du också lagrar dina egeninspelade filmer på din nyfödda bäbis kanske du enkelt vill kunna hänvisa till de filmerna så att far- och morföräldrar kan titta på filmerna. Självklart vill du inte i onödan lägga upp filerna på Youtube. Du vill visa dem i hög upplösning och inte i onödan dela med dig till andra än de du bestämmer.

För att far- och morföräldrar skall kunna komma åt ditt mediacenter måste du ha en publik IP-adress. Du får bara en av din Internet-leverantör och den adressen använder just nu din hemmarouter.

På en del routers kan du konfigurera så den vidarebefordrar viss trafik till ditt mediacenter, men det är inte alla som stöder det.

När din Internet-leverantör slutar ge din hemmarouter en publik adress slutar din konfiguration fungera. Ingen av dina nära och kära kan längre titta på dina filmer.

Andra tjänster

Naturligtvis finns det många andra tjänster som fungerar på liknande som de jag räknat upp här. Min förhoppning är att de här tämligen konkreta exemplen skall ge en känsla för vad som finns där ute, hur krångligt det redan nu är och vad som snart kommer att hända.

IPv6 löser problemet för alla de här tjänsterna. Eftersom det i IPv6 finns så många fler adresser än i IPv4 så kan alla noder i nätet återigen få riktiga, publika adresser. Det behövs alltså inte längre några privata adresser och alla noder blir potentiellt nåbara igen, så länge som du tillåter dem vara det.

Med IPv6-adresser fungerar allihop utan mer konfiguration av hemmaroutern, så länge som den stöder IPv6, och det är dessutom framtidssäkert när din Internet-leverantör inför ett till lager av NAT för IPv4. Dina noder kan fortfarande nås, om du tillåter det, eftersom de har riktiga adresser som är en del av Internet. Just att vara en del av Internet är väl ändå hela poängen?


Written by MC using Emacs and friends.