IPv6 ULA

Dacă pentru protocolul IPv4 avem rezervate anumite blocuri de adrese IP pentru uz privat (a se vedea RFC1918), pentru protocolul IPv6 avem ca și echivalent prefixele  „Unique local address” (ULA).

Aceste adrese nu sunt rutabile în internet, dar pot fi rutate între anumite site-uri (de exemplu: două sedii ale aceleiași firme, sedii situate în orașe diferite și interconectate prin VPN). Ele vor fi filtrate pe echipamentele de interconectare ale ISP-iștilor.

Se dorește ca aceste adrese IPv6 să fie unice la nivel global, astfel încât să nu apară conflicte cu ocazia interconectării a oricăror două site-uri care folosesc adrese de acest tip. S-a propus chiar să existe o autoritate care să gestioneze alocarea acestora, dar nu s-a ajuns la un consens.
Soluția aleasă a fost propunerea unui algoritm de generare a acestor adrese astfel încât să se asigure un grad cât mai mare de unicitate.

Înainte de vorbi de acest algoritm, să vedem structura unei adrese de acest tip:

  • 7 biti – prefix – FC00::/7 – identifica adresa ca fiind de tipul Local IPv6 unicast address;
  • 1 bit – L – setat cu valoarea 1, specifică faptul că adresa este generată local;
  • 40 biti – Global ID – identificator global folosit pentru realizarea unicității adresei;
  • 16 biti – Subnet ID
  • 64 biti – Interface ID

Deci algoritmul menționat mai sus se aplică pentru generarea câmpului Global ID (40 biti). Astfel:

  • se obține timpul curent în format NTP 64 bițî;
  • se obține identificatorul EUI-64 al sistemului pe care rulează algoritmul. Dacă acesta nu există se poate obține folosind adresa MAC;
  • se concatenează cele două șiruri obținute anterior, generându-se astfel o cheie;
  • se calculează un hash SHA-1 pentru cheie, obținându-se un rezultat pe 160 biți;
  • se folosesc cei mai puțini semnificativi 40 biți ai rezultatului pentru Global ID;

Mai departe, se concatenează FC00::/7 cu câmpul L (valoarea 1) și cei 40 de biți ai Global ID obținut, rezultând altfel prefixul pentru adresa IPv6  locală.

Trebuie reținut faptul că acest tip de adrese nu „apar” în mod automat ca și adresele de tip link-local ci trebuiesc configurate (manual, DHCPv6 etc).

Un script online pentru generarea automată de astfel de adrese pe care să le folosiți în rețeaua voastră găsiți la adresa:

http://www.sixxs.net/tools/grh/ula/

Cu toate că aceste adrese trebuiesc generate după cum am povestit, personal am încălcat aceste reguli și folosesc în rețeaua internă ceva de genul:

fd00:771:2348::/48

fd00:771:2348:105::/64

Revenind la discuția cu asignarea locală sau globală de către o autoritate, cum această autoritate nu este definita în prezent, bitul 8 este tot timpul 1, deci aceste adrese nu pot fi din plaja fc00::/8 ci doar din fd00::/8.

Pentru exemplificare, considerăm adresa MAC 00:22:19:5a:61:4c, din care rezultă EUI-64: 022219fffe5A614C. Timpul NTP 64 biti este acum d47639af. Folosind algoritmul prezentat rezultă ULA: fd79:8889:1ec1::/48.

În schema de mai jos am propus o împărțire a acestui prefix în mai multe /64 pentru interconectarea diverselor echipamente de rețea. A se vedea adresele atribuite pe fiecare interfață.

Alocare adrese IPv6 ULA

Parcă nu era așa  distractiv cu IPv4, nu?

Dacă aveți comentarii, propuneri, corecturi, înjurături, nu ezitati – scrieți mai jos!

Încă sunt la început de drum cu IPv6 și este posibil să fac și greșeli.

Articole asemanatoare:

Bogdan Turcanu

Bogdan Turcanu

One thought on “IPv6 ULA

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

Acest site folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.