Internet Protocol versie 6

Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken

Internet Protocol versie 6 (IPv6) is versie 6 van het internetprotocol voor het toewijzen van IP-adressen. Het is de opvolger van Internet Protocol versie 4 (IPv4) en is de tweede versie van het internetprotocol die in gebruik is genomen. De tussenliggende versie IPv5 was een experimentele aanvulling op IPv4, maar deze werd nooit geïmplementeerd. IPv6-dag vond plaats op 6 juni 2012, in opvolging van de eerdere IPv6-dag in 2011.

Verbeteringen[bewerken]

IPv6 is onder andere ontwikkeld om de beperkingen en tekortkomingen van IPv4 te verhelpen. Met name het tekort aan beschikbare IP-nummers levert een enorm probleem op: binnen de systematiek van IPv4 zijn ongeveer 4 miljard adressen beschikbaar[1] en op 3 februari 2011 heeft de Internet Assigned Numbers Authority (IANA) de laatste IPv4-adresblokken toegewezen.[2]

IPv4-adressen bestaan uit 32 bits, terwijl IPv6-adressen uit 128 bits bestaan. Daardoor telt IPv4 ongeveer 4 × 109 adressen, terwijl onder IPv6 ongeveer 3,4 × 1038 kunnen worden toegewezen. Het nieuwe IPv6 heeft dus een bijna onuitputtelijke voorraad adressen: voor elke aardbewoner zijn er ongeveer 50 quadriljard beschikbaar.

Naast een groot adresbereik kent IPv6 nog een aantal verbeteringen:

  • Betere routing en netwerk-autoconfiguratie.
  • Overbodig maken van NAT.
  • Gegevensbeveiliging op IP-niveau.
  • Ondersteuning van mobiele nodes.

IPv6-adressering[bewerken]

Het belangrijkste verschil tussen IPv4 en IPv6 is de lengte van het netwerkadres. Een IPv6-adres, zoals gedefinieerd in RFC 2373, RFC 2374 en RFC 2460, is 128 bits lang; dit komt overeen met 32 hexadecimale cijfers, die gebruikt worden in een IPv6-adres, zoals beschreven in de volgende sectie.

Het aantal mogelijke adressen is 2128 ≈ 3,4 × 1038. Het aantal IPv6-adressen kan ook berekend worden als 1632, omdat elk van de 32 hexadecimale cijfers 16 mogelijke waarden kent.

Soms bestaat een IPv6-adres uit twee logische delen: een netwerkprefix van 64 bits en een "host-addressing"-deel van 64 bits, dat vaak automatisch van de interface ofwel het MAC-adres wordt afgeleid.

Notatie van IPv6-adressen[bewerken]

IPv6-adressen zijn 128 bits lang en worden normaal geschreven als 8 groepen van 4 hexadecimale cijfers.

3ffe:6a88:85a3:08d3:1319:8a2e:0370:7344

is een geldig IPv6-adres.

Als een groep van 4 cijfers 0000 is, dan wordt dit 0 of kan dit soms helemaal worden weggelaten. Bijvoorbeeld:

3ffe:6a88:85a3:0000:1319:8a2e:0370:7344

kan ook worden geschreven als

3ffe:6a88:85a3:0:1319:8a2e:0370:7344
3ffe:6a88:85a3::1319:8a2e:0370:7344

Wanneer er meer dan twee opeenvolgende groepen gereduceerd zijn tot dubbele punten, dan mogen ook die weer tot twee dubbele punten gereduceerd worden.

2001:2353:0000:0000:0000:0000:1428:57ab
2001:2353:0000:0000:0000::1428:57ab
2001:2353:0:0:0:0:1428:57ab
2001:2353:0::0:1428:57ab
2001:2353::1428:57ab

zijn gelijk en hebben dezelfde betekenis, maar

2001::25de::cade

is onjuist, omdat hierdoor meerdere mogelijkheden ontstaan voor de posities van de "0000".

Ook hoeven nullen vooraan in een getal niet geschreven te worden:

2001:2353:02de::0e13

is gelijk aan

2001:2353:2de::e13

Als het adres een IPv4-getal betreft, dan mogen de laatste 32 bits decimaal geschreven worden; derhalve

::ffff:192.168.89.9 is gelijk aan
::ffff:c0a8:5909, maar is niet gelijk aan
::192.168.89.9 of
::c0a8:5909

Het ::ffff:1.2.3.4-formaat wordt een IPv4-mapped address genoemd en het gebruik hiervan is bedoeld om IPv4 en IPv6 samen te gebruiken op één systeem. Het ::1.2.3.4 formaat is een IPv4-compatible address en het gebruik hiervan wordt ontraden in RFC 4291.[3]

IPv4-adressen worden eenvoudig naar het IPv6-formaat geconverteerd. Het IPv4-adres 135.75.43.52 wordt dan 0000:0000:0000:0000:0000:FFFF:874B:2B34 of ::FFFF:874B:2B34. Ook kan de hybride notatie gebruikt worden (IPv4-mapped addresses), waarmee het ::ffff:135.75.43.52 wordt.

IPv6-pakket[bewerken]

Een IPv6-pakket bestaat uit twee delen: de header en de payload.

IPv6 header

IPv6 kent verschillende headers, een vaste header en een aantal optionele headers. Bij het ontwerp van IPv6 is gekozen voor een kleine, efficiënte vaste header die, naar behoefte, uitgebreid kan worden met optionele headers.

De vaste header bestaat uit de eerste 40 bytes van het pakket, met zowel het afkomstadres als het doeladres van het pakket (elk 128 bits), de IP-versie (4 bits), verkeersklasse (8 bits, Packet Priority), flow label (20 bits, QoS-management), grootte van de lading (16 bits), next header (die aangeeft wat de volgende header zal zijn) en de hoplimiet (8 bits, time to live). Hierna volgt de lading, die minimaal 1280 bytes groot moet zijn of 1500 bytes in een omgeving met een flexibele MTU-grootte. De lading kan tot 65.535 bytes groot zijn als de "jumbo payload"-optie ondersteund wordt.

Optionele headers zijn:

  • Hop-by-Hop Options header
  • Routing header
  • Fragment header
  • Destination Options header
  • Authentication header
  • Encrypted Security Payload header

Verschillen met IPv4[bewerken]

De wijze waarop het protocol werkt, verschilt nauwelijks van de wijze waarop IPv4 werkt. Een van de weinige verschillen is dat in IPv6 een subnet niet langer een netwerkadres en een broadcastadres bevat: het eerste adres in een IPv6-subnet is het router-anycast-adres (waar dat het netwerkadres is in IPv4), terwijl broadcast in IPv6 geïmplementeerd wordt als een speciaal geval van multicast, waarbij het adres ff02::1 overeenkomt met het subnet-specifieke broadcastadres in IPv4.

Routering en toekenning van IPv6-netwerken[bewerken]

Zoals reeds aangegeven, kent IPv6 een IP-adres van 128 bits. Een volledig adres wordt ook wel aangeduid als een /128-adres.

Adressen op een lokaal netwerksegment[bewerken]

Een LAN heeft een /64-adres; de eerste 64 bits van het netwerkadres zijn dus gelijk voor alle nodes in het lokale netwerk. De laatste 64 bits maken iedere node op het lokale netwerk uniek. Hierdoor is het uitdelen van IP-nummers overbodig; als gebruik gemaakt wordt van autoconfiguratie worden de laatste 64 bits automatisch zelf gekozen door de op het netwerk aangesloten systemen. Oorspronkelijk werden deze bits gekozen op basis van het MAC-adres van de netwerkkaart. Dit heeft echter het nadeel dat de laatste 64 bits van het adres altijd gelijk zijn, ongeacht op welk netwerk het apparaat is aangesloten. Een apparaat dat vanaf meerdere netwerken dezelfde websites bezoekt kan zo getraceerd worden, zelfs wanneer de gebruiker privacy-beschermende maatregelen heeft getroffen zoals het uitschakelen van cookies. Daarom worden er tegenwoordig meestal privacy-uitbreidingen[4] gebruikt die de laatste 64 bits regelmatig laten veranderen. Netwerkbeheerders die dat onwenselijk vinden kunnen autoconfiguratie uitschakelen en de adressen handmatig of middels bijvoorbeeld DHCPv6[5] uitdelen.

Voorbeeld van hoe een lokaal adres wordt aangemaakt op basis van het MAC-adres:

  • Het MAC-adres is bijvoorbeeld 00-12-34-56-78-90.
  • Dit wordt in 2 stukken verdeeld: 00-12-34 en 56-78-90.
  • Daartussen wordt FFFE geplaatst: 0012-34FF-FE56-7890.
  • De universal/local bit wordt aangepast. Die bit bevindt zich op de voorlaatste plaats van het eerste octet.
  • In dit voorbeeld wordt 00 veranderd in 02, want 0000 0000 wordt 0000 0010.
  • De host-ID ziet er dan als volgt uit: 0212:34FF:FE56:7890.
  • Dit wordt samengevoegd met de prefix, wat dan FE80::0212:34FF:FE56:7890 vormt.

De prefix _fe80_ duidt altijd op een adres in het lokale segment; het adres FE80::1319:8a2e:0370:7344/128 duidt dus per definitie op een node in het lokale segment. Elk LAN maakt gebruik van deze prefix, zelfs als er niets geconfigureerd is. Daarnaast kunnen er mogelijk andere prefixen gebruikt worden welke door de op het LAN aangesloten routers geadverteerd worden.

Een netwerkinterface kan bij IPv6 meerdere adressen hebben. Het is heel gebruikelijk dat een aangesloten systeem een _fe80_ adres heeft en voor elke door de routers geadverteerde prefix een adres gebaseerd op het MAC-adres en mogelijk één of meerdere adressen volgens de privacy-uitbreidingen[4].

Adressen binnen een netwerk[bewerken]

Een campus- of bedrijfsnetwerk heeft een /48-adres. Alle nodes binnen dit netwerk delen dus dezelfde eerste 48 bits. De bits 49 tot en met 64 worden gebruikt om het segment binnen het bedrijfsnetwerk aan te geven.

De prefix _fc80_ duidt altijd op een adres binnen het campusnetwerk. Op deze wijze kan een node binnen het netwerk geadresseerd worden.

Adressering op hoger niveau[bewerken]

Een van de uitgangspunten van het ontwerp van IPv6 is de betere routeerbaarheid. Door de overvloed van IP-nummers is het mogelijk netwerknummerhiërarchie op te zetten.

Op hoog niveau wordt een onderscheid gemaakt tussen netwerknummers voor de verschillende continenten. Binnen de continenten kunnen internet exchanges en internetaanbieders hiërarchische nummerplannen opstellen.

Deze hiërarchie kent twee voordelen:

  • Routeringstabellen in routers worden minder complex.
  • Applicaties kunnen, aan de hand van het IP-nummer, bepalen welke nodes netwerktechnisch dichterbij staan. Zo kunnen applicaties als BitTorrent distributiealgoritmen ontwikkelen die efficiënter netwerkverkeer opleveren doordat bij voorkeur peers worden gekozen die dichter bij elkaar staan.

Overbodig maken van NAT[bewerken]

NAT is ontwikkeld als techniek om het adresprobleem op internet te omzeilen; NAT maakt het mogelijk meerdere nodes samen één IPv4-adres te laten delen.

De meningen over NAT zijn verdeeld: deze variëren van "de grootste weeffout van het internet" tot "een zegen voor de veiligheid van achterliggende systemen".

NAT op IPv4 kent verschillende situaties:

  • In client-server-situaties (bijvoorbeeld waar een computer verbinding zoekt met een mail- of webserver) biedt NAT geen belemmeringen.
  • Bij peer-to-peer-situaties, waarbij twee clients een verbinding willen opbouwen, ontstaat er een probleem wanneer beide clients achter een NAT-voorziening zitten; ze kunnen geen verbinding opbouwen. Er zijn verschillende oplossingen, zoals de portforwarding aanzetten op de NAT-voorziening (zoals bij BitTorrent) of gebruikmaken van een derde, niet ge-NAT-te client die als doorgeefstation dienst doet (zoals bij Skype). In deze situatie biedt IPv6 een uitkomst doordat NAT niet meer nodig is.

NAT op IPv4 biedt slechts een schijn van veiligheid voor systemen achter het NAT-systeem. De achterliggende systemen kunnen in eerste instantie niet meer rechtstreeks vanaf het internet aangesproken worden. Verschillende[6] methoden[7] laten echter zien dat het gros van de NAT-methoden te omzeilen valt. Deze semiveiligheid kan in een IPv6-situatie worden gesimuleerd door IP-poortnummers op de netwerkrouter van het (campus)netwerk dicht te zetten. Er kan bijvoorbeeld voor worden gekozen om alle VoIP-verkeer rechtstreeks door te laten, terwijl web- en mailverkeer wordt verwezen naar de daarvoor aangewezen servers.

Gegevensbeveiliging op IP-niveau[bewerken]

IPv6 maakt het mogelijk om gegevens tijdens het transport te voorzien van beveiliging door middel van IPsec. Deze beveiliging kent twee vormen:

  • Versleuteling (encryptie) van gegevens. Zender en ontvanger kunnen een sleutel afspreken waarmee het gegevenstransport beveiligd wordt. IPv4 kende deze mogelijkheid oorspronkelijk niet, waardoor veel beveiligingsvarianten boven de IP-laag ontwikkeld zijn, bijvoorbeeld VPN, HTTPS of SSH. De versleuteling van IPsec maakt beveiliging op bovenliggende niveaus overbodig: ieder gegevenstransport op basis van IPv6 kan immers veilig gebeuren. In de praktijk gebeurt dat echter zelden en worden dezelfde beveiligingsvarianten als bij IPv4 gebruikt.
  • Authenticatie van gegevens. Hierbij kan de zender ieder pakket voorzien van een elektronische waarborg. Andere partijen kunnen de gegevens niet ongemerkt wijzigen, noch zich als de oorspronkelijke afzender voordoen. Hierdoor heeft de ontvanger zekerheid over de herkomst van de ontvangen IP-pakketten.

Deze gegevensbeveiliging maakt het onder andere mogelijk "closed user groups" te creëren van computers die alleen onderling contact mogen hebben, terwijl zij toch op willekeurige plekken op het internet aangekoppeld worden.

IPsec is gelijktijdig met IPv6 ontwikkeld. Het is echter toe te passen op zowel IPv4 als IPv6.

Ondersteuning van mobiele nodes[bewerken]

IPv6 maakt het mogelijk een node (tijdelijk) van een ander IP-adres gebruik te laten maken.

Wanneer een IPv6-node (node A) een andere IP-node (node B) aanroept, die (tijdelijk) een ander IP-adres gebruikt, ontvangt node A een redirect waarbij wordt aangegeven wat het actuele IP-adres van node B is. Hierna kan het verkeer tussen A en B plaatsvinden.

Om het redirectmechanisme van B goed te laten verlopen, is het natuurlijk essentieel dat er nog wel een node is die reageert op het oorspronkelijke IP-adres van B. Hiervoor is het mogelijk om het IP-adres van B te laten termineren op een homenode (node H). Tijdens het opstarten van het systeem geeft B door aan H wat het actuele IP-adres is. Wordt een verbinding van A naar B aangevraagd, dan komt deze uit op H. H geeft een redirect aan A, waarna de daadwerkelijke verbinding opgezet kan worden.

Het IP-adres van B (zoals dit uitkomt op H) kan uiteraard gewoon in DNS opgenomen worden.

Samen met de faciliteiten voor gegevensbeveiliging biedt deze faciliteit de mogelijkheid voor het opbouwen van volkomen virtuele netwerken. Alleen het homing device (node H) vereist nog een vaste plek.

Wereldtestdag[bewerken]

Op 8 juni 2011 was de wereldtestdag voor IPv6. Een aantal grote bedrijven, zoals Microsoft en Google, bood de websites voor één dag aan over zowel IPv4 als IPv6 om zo de impact hiervan te testen.[8]

Wereldstartdag[bewerken]

Op 6 juni 2012 activeerden een aantal Internet Service Providers (ISPs) en bedrijven permanent IPv6.[9]

Externe links[bewerken]

Bronnen, noten en/of referenties
  1. Minder dan 1 per bewoner van de aarde; de wereldbevolking telt ruim 7 miljard mensen.
  2. (nl) ipv4-blocks zijn toegewezen, door Joost Schellevis, www.tweakers.net, 3 februari 2011
  3. RFC 4291, IP Version 6 Addressing Architecture
  4. a b RFC 4941, Privacy Extensions for Stateless Address Autoconfiguration in IPv6
  5. RFC 3315, Dynamic Host Configuration Protocol for IPv6 (DHCPv6)
  6. (en) UDP hole punching op de Engelstalige Wikipedia.
  7. NAT to NAT client-server communication, beschrijving van de pwnat tool van Samy Kamkar
  8. Wereld IPv6 Dag op 8 juni 2011, Stichting IPv6 Nederland
  9. World IPv6 Launch