A Glimpse into IPv6

Expansiunea continua a Internetului si adoptarea tehnologiilor de retea din ultimii 20 de ani au impins protocolul IPv4 la limitele sale maxime in ceea ce priveste capacitatea de a furniza adrese si abilitatea de suporta cresterea si dezvoltarea Internetului.

Pentru a combate acest lucru IETF a dezvoltat noua versiune de protocol IP, versiunea 6 (IPv6), inca din 1993. Pe langa spatiul de adrese, care este mult mai mare ca cel oferit de IPv4, IPv6 vine si cu alte beneficii printre care:

  • Un header mai simplu si mai eficient, care pentru routere inseamna ca pot procesa pachetele mai repede si pot face acest lucru hardware-assisted
  • Securitate integrata prin IPSec care asigura confidentialitatea si integritatea datelor intre end-point-uri
  • Eliminarea broadcast-ului si a problemelor de securitate ce deriva din folosirea sa (ex. broadcast storm)
  • Numeroase posibilitati de configurare a adreselor: autoconfiguration, stateless DHCP, stateful DHCP
  • In IPv6 pot fi configurate mai multe adrese pe aceeasi interfata, spre deosebire de IPv4
  • Gama variata de mecanisme pentru coexistenta cu IPv4 si migrare catre un mediu pur IPv6: dual stack, 6 to 4 tunneling, ISATAP (IntraSite Automatic Tunnel Addressing Protocol) , NAT-PT (Network Address Translation – Protocol Translation)

Vom discuta in continuare despre alocarea si configurarea adreselor IPv6.

O adresa IPv6 este un camp pe 128 de biti, deci ne ofera 2^128 (sau 3.4 10^38) adrese, adica un numar de 340.282.366.920.938.463.463.374.607.431.768.211.456 combinatii posibile !!! Suficiente pentru a ne ajunge un timp indelungat, avand in vedere si perioada relativ mare de timp in care cele doua protocoale IP vor coexista. Reprezentarea adresei IPv6 se face folosind scrierea hexazecimala (in baza 16, folosind cifrele 0..9, A, B, C, D, E, F), grupand cei 128 de biti in 8 grupuri fiecare cu cate 4 cifre hexazecimale.

De exemplu:

2001:4593:0364:BCEF:0000:0000:12DC:0AC3

Pare o scriere destul de lunga. Si este, insa din fericire o putem scurta utilizand urmatoarele reguli:

  • “leading zeros” se pot omite
  • grupuri consecutive de 0000 se pot inlocui cu :: insa numai o data in cadrul unei adrese

Cifrele cu rosu reprezinta cifre carora li se poate aplica prima regula, iar a doua regula se poate aplica cifrelor albastre. Astfel adresa noastra devine:

2001:4593:364:BCEF::12DC:AC3

Alte exemple se regasesc in tabelul de mai jos.

FF02:0:0:0:0:0:0:1

FF02:0:0:0:0:0:0:1

FF23:0:0:0:0:0:1:C001

FF23::1:C001

0:0:0:0:0:0:0:0

::

0:0:0:0:0:0:0:1

::1

Adresa :: este echivalentul adresei 0.0.0.0 din IPv4, iar ::1 este adresa de loopback echivalenta din IPv4, 127.0.0.1.

Spuneam mai devreme ca in IPv6 nu mai intalnim adrese de broadcast. Acestea au fost inlocuite cu adrese multicast scoped (fiecare adresa de multicast are un anumit scop). Acestea sunt cuprinse intre FF00-FF0F. Printre ele se numara si urmatoarele:

FF02::1 – toate calculatoarele dintr-o retea (similara cu 255.255.255.255)

FF02::9 – toate routerele care ruleaza RIP (analog cu 224.0.0.9)

FF05::101 – toate serverele NTP

FF05::1:3 – toate serverele de DHCP

 

Un tip nou de adresa introdus in IPv6 este adresa de anycast, folosita in contextul de 1 la cel mai aproape. Cand un pachet de date este transmis catre o adresa de anycast este rutat catre cea mai apropiata interfata care are acea adresa. Cea mai apropiata interfata este gasita folosind metrica protocolului de rutare. De exemplu, mai multe servere subscriu la un grup de anycast. Toate aceste servere vor avea aceasi adresa de anycast, care arata ca o adresa unicast obisnuita. Sa presupunem ca aceste servere fac streaming live pentru un meci de fotbal. Cand un utilizator va accesa un astfel de server, ii va raspunde cel mai apropiat server, oferind astfel o calitate superioara a transmisiei (cel putin in privinta latentei mici) decat daca s-ar conecta la oricare alt server.

Ultimul tip de adrese intalnit in IPv6 este unicast. Sunt cateva tipuri de adrese unicast, printre care se numara si link-local, global unicast, unique.

Adresele link-local se intalnesc pe segmentul local de retea si sunt folosite pentru autoconfigurare; comunicarea in reteaua locala poate avea loc fara a fi nevoie de vreo adresa globala sau privata. Sunt  create automat pe fiecare interfata folosindu-se prefixul FE80::/10 si un interface-identifier de 64 biti, derivat din adresa MAC asociata acelei interfete (numit si extended unique identifier 64 ↔ eui-64). Daca o interfata nu are adresa MAC, cum ar fi cazul unei interfete seriale, pentru a se calcula eui-64 se va folosi adresa MAC a interfetei Ethernet cu ID-ul cel mai mic, de exemplu FA0/0.

Daca avem adresa MAC 2c3a:dce3:4ab2 (reprezentarea hexazecimala este case insensitive), interface-identifier se obtine inserand dupa prima jumatate a adresei MAC cifre FFFE.  Adica: 2c3a:dcff:fee3:4ab2. Regula mai spune ca al saptelea bit din primul octet de la stanga spre dreapta trebuie schimbat astfel:

  • daca este 0 se va inlocui cu 1
  • daca este 1 se va inlocui cu 0

Aplicand si acest aspect rezulta ca partea de interface-identifier devine:

  • primul octet este reprezentat de cifrele hexazecimale 2c, adica in binar 00101100. Bitul rosu reprezinta al saptelea bit din primul octet. Fiind zero il inlocuim cu 1. Rezultatul va fi:
  • 00101110, adica 2E; iar intregul eui-64 va fi  2e3a:dcff:fee3:4ab2

Atunci adresa IPv6 link-local asociata acestei interfete  este:

FE80::2E3A:DCFF:FEE3:4AB2

Adresele global unicast au rolul adreselor publice din IPv4 si au cea mai mare pondere din spatiu de adrese IPv6.  Au urmatoarea structura:

 

De obicei n consta in 48 de biti si este asignat de catre un ISP unei organizatii; se mai numeste si global routing prefix. m este de obicei egal cu 16 si se foloseste in interiorul organizatiei; numit si site prefix. Restul de 64 de biti sunt folositi pentru autoconfigurarea nodurilor din retea.

Ultimul tip de adrese unicast sunt adresele unique local si sunt similare cu adresele private specificate in RFC 1918 din IPv4. Sunt formate din prefixul FD00::/8, un identificator global de 40 de biti, un subnet prefix de 16 biti si 64 de biti ramasi pentru configurarea hosturilor. Structura sa este redata in figura de mai jos:

 

Acestea sunt pricipalele tipuri de adrese IPv6 folosite astazi, insa pe viitor, pe masura ce se vor dezvolta noi echipamente si tehnologii poate se vor mai crea si alte tipuri de adrese.

Cum sunt asignate adresele IPv6? Am vorbit deja despre un mod, si anume autoconfigurarea. Un echipament obtine o adresa de tip link-local de indata de ce protocolul IPv6 este activat pe interfata sa.

Apoi putem configura manual o adresa IPv6 specificand atat prefixul (partea de network), cat si partea de host, deci introducand toate cele 32 de cifre hexazecimale, sau configuram doar partea de prefix si lasam ca partea de host sa fie derivata cu ajutorul lui eui-64.

Adresele IPv6 se pot aloca folosind, ca si in IPv4, un server DHCP. Calculatoarele gasesc astfel de  servere folosind adresa multicast  FF05::1:3,si nu adresa 255.255.255.255, de broadcast din IPv4.

Serverul de DHCP poate fi configurat sa ofere o adresa unicast si alti parametrii (server de DNS, alte optiuni speciale), caz in care serverul de DHCPv6 se numeste Stateful DHCP, sau poate oferi doar parametrii optionali, caz in care serverul de DHCPv6 poarta numele de Stateless DCHP.

Operatiunea de obtinere a unei adrese IPv6 este similara cu cea din IPv4:

  • clientul incearca sa descopere serverele de DHCP existente in retea
  • serverele care primesc mesajele de clienti raspund cu o oferta care include adresa si alti parametrii
  • clientului daca ii “plac” parametrii primiti ii accepta solicitandu-i serverului sa ii aloce lui
  • serverul ii confirma clientului rezervarea parametrilor

Se observa ca adresele IPv6 au anumite similaritati cu cele din protocolul IPv4, pentru a face tranzitia mai usoara si mai transparenta, insa prezinta si deosebiri, care reflecta avantajele noului protocol IPv6.