Neviem ako si na svoj prvýkrát spomínate vy, ale keď som sa ja pozrel prvýkrát na IPv6 adresu, zostal som celkom zhrozený a v obavách. Adresy zrazu obsahovali písmená a boli podstatne dlhšie. Pomyslel som si, že robiť nejaký subnetting bez chyby, nemýliť sa v zápisoch a podobne, je nemožné. Toto bol, samozrejme, hlboký omyl a neznalosť začiatočníka. Keďže nechcem, aby ste trpeli podobnými traumami aj vy, skúsim na pár príkladoch ukázať krásu a jednoduchosť IPv6 adresácie.
Názvoslovie a porovnanie s IPv4
IPv4 adresy pozostávajú zo štyroch častí. Každá časť je 8 bitové číslo (spolu teda máme 32 bitov) a nazýva sa oktet. Adresný rozsah ďalej delíme na rôzne ďalšie podsiete (pomocou subnettingu) a tieto podsiete nazývame prefixy. Máme teda adresu našej podsiete, ale potrebujeme vedieť ešte aká je veľká. Na toto používame spolu s adresou ešte aj tzv. dĺžku prefixu. Dĺžka prefixu (angl. prefix lenght) je číslo, ktoré udáva aká časť adresy vyjadruje adresu prefixu (adresa našej podsiete) a akú časť môžeme používať na zariadenia v podsieti. Inými slovami, kde začína a končí náš adresný rozsah. IPv4 adresy zapisujeme v decimálnom tvare, napríklad:
IPv6 adresný rozsah taktiež delíme na menšie časti. Tiež rozoznávame prefix, čo je adresa podsiete a dĺžku prefixu, ktorá vyjadruje veľkosť danej podsiete. Rozdiel je samozrejme v dĺžke adresy, ktorá je dlhá 128 bitov. IPv6 adresu delíme na 8 častí po 16 bitov, ktoré nazývame hextety. Pre lepšiu čitateľnosť ľudským očiam, zapisujeme IPv6 adresu v hexadecimálnom tvare. Jednotlivé hextety sú v zápise oddelené dvojbodkou. Dĺžka prefixu je rovnako ako v IPv4 udávaná ako decimálne číslo za lomítkom, napr:
Dĺžka prefixu značí aká časť adresy patrí adrese siete a akú časť môžeme použiť pre konkrétne zariadenia v danej sieti (hm, toto sme už niekde počuli). Decimálne číslo za lomítkom znamená počet bitov. V skratke, ak je dĺžka prefixu /64, adresa prefixu je prvých 64 bitov. Ak je dĺžka prefixu /48, prvých 48 bitov celej adresy patrí prefixu, zvyšných 80 bitov môžeme použiť na adresy konkrétnych strojov v danej podsieti. Decimálno-bodkovú notáciu masky, ktorú poznáme z IPv4, už v IPv6 nemáme.
Skracovanie adries
Keďže IPv6 adresy sú pomerne dlhé je umožnené skracovanie častí adries, ktoré obsahujú samé 0 troma spôsobmi, a to v nasledovných prípadoch:
- hextet obsahuje iba nuly – tu je možné jeho zápis skrátiť na jednu nulu:
- hextet má na začiatku nuly – ak sa v hextete nachádzajú aj iné čísla, môžeme vynechať nuly na začiatku hextetu:
- viacero nasledujúcich nulových hextetov – ak máme viacero za sebou nasledujúcich hextetov obsahujúcich samé 0, môžeme ich skrátiť pomocou dvoch dvojbodiek (::):
Druhý spôsob je však možné použiť v zápise adresy len raz. Predstavme si adresu 2001:db8::1234::1, to môže byť aj 2001:db8:0000:0000:0000:1234:0000:1, alebo napríklad aj 2001:db8:0000:1234:0000:0000:0000:1. Na prvý pohľad rôzne pravidlá a použitie viacerých dvojbodiek vyzerá zložito, v skutočnosti je veľmi ľahké si ich osvojiť. Ak to dokážeme, môžeme zjednodušiť zápis zbytočne dlhých adries:
Variabilné subnety
Ako som už spomínal, pri IPv6 taktiež používame rôznu dĺžku prefixu na delenie adresného rozsahu. Dĺžka prefixu je variabilná a svoj pridelený adresný rozsah môžeme sekať na ľubovoľne veľké prefixy (rovnako ako pri IPv4). Tu však IETF a rôzne iné organizácie ako aj RIPE vydávajú odporúčania s cieľom zjednotiť používané veľkosti prefixov. Pri IPv4 sme zvyknutí šetriť a používať rôzne veľkosti podsietí, pričom sa snažíme siete rozdeliť čo najefektívnejšie a ušetriť čo najviac adries, kde sa len dá. Pri IPv6 máme ale iný prístup. Nie je potreba šetriť žiadne adresy, pretože ich máme naozaj dosť. Dbá sa teda hlavne na jednoduchosť delenia a prehľadnosť.
Najmenší prefix – /64
Najmenší subnet, aký by sme mali používať je /64. Toto je bežná veľkosť pre jednu LAN sieť, ale napríklad aj pre p2p prepoje. Keď to zjednoduším, sú hlavne 2 dôvody prečo používať takýto prefix:
- metóda automatického prideľovania adries SLAAC – SLAAC je metóda automatického pridelenia adresy – nič netreba konfigurovať a operačný systém si nastaví adresu sám (adresu prefixu si vypýta od routra a tú si sám doplní o vygenerované číslo pomocou metódy EUI-64). Táto metóda používa presne 64 bitov na generovanie adresy. Zvyšných 64 bitov teda môže byť použitých na adresu siete. Pri menšom subnete nie je možné použiť SLAAC.
- prehľadnosť adresovania – pri tejto dĺžke prefixu mám presne polovicu adresy použitú na adresu siete a druhá polovica je adresa samotného zariadenia. Je to úplne prehľadné bez nutnosti prepočítavania a šialeného subnettingu.
Možno sa takýto veľký prefix zdá na prvý pohľad ako mrhanie adresným priestorom. Sú aj isté výnimky, ako napríklad p2p prepoje, kde sa môže použiť /126 a podobne. Nechcem však ísť do veľmi odborných detailov. Dôvody prečo používať práve /64 výborne popísal pred 9 rokmi Greg Ferro v jeho článku: Why Allocating a /64 is Not Wasteful and Necessary:
https://etherealmind.com/allocating-64-wasteful-ipv6-not/
Viacero podsietí – /48
V prípade, že máme väčšie riešenie a potrebujeme adresný rozsah rozmeniť na menšie podsiete, použijeme prefix o dĺžke /48. Je to z jednoduchého dôvodu, a to kvôli prehľadnosti. 48 bitov sú prvé tri hextety, čiže adresa siete vyzerá nasledovne:
Máme teda prefix o dĺžke /48, ako ho rozdelíme na menšie siete? Here it comes: No predsa použijeme subnety o veľkosti /64. Povedzme, že máme od operátora pridelený prefix 2001:db8:123::/48. Vyzerá to nejako takto:
Pri zachovaní tejto konvencie je adresovanie naozaj jednoduché a prehľadné. Skrátka 4-tý hextet je pre každú podsieť iný. Dajú sa s tým vymýšľať rôzne konvencie, ako napríklad použiť číslo VLANy, ku ktorej je prefix pridelený. Alebo si vymyslieť geografický vzor. Ja rád používam v našich datacentrách subnety, kde je z prvého pohľadu jasné odkiaľ subnet pochádza – v SHC3 používam “:3333:“ alebo v Digitalise “:dc4:“ (neviem, či tento dodatok “prepašujem cez gramatickú kontrolu“, ale nebol by som prekvapený, keby som narazil na hextet “:666:“ na niektorom prepoji z peeringového centra SIX..).
V každom prípade, znova nastáva otázka, či je rozumné míňať takto vo veľkom adresný priestor. Z jedného /48 prefixu môžeme spraviť presne 65536 prefixov o dĺžke /64 a nie každé riešenie vyžaduje tak veľa podsietí. Ak by sme však /48 prefix pridelili každému človeku na planéte, IPv6 by mala životnosť 480 rokov. To nám dáva celkom optimistické vyhliadky.
To je všetko?
Áno, tieto dve dĺžky prefixov je všetko, čo potrebujeme na začiatok subnettingu v IPv6 vedieť. V skratke, ak potrebujem viacero podsietí, vypýtam si od providera /48 subnet. Prefix o veľkosti /64 použijem v prípade prepojovacích subnetov alebo ako najmenší prefix pre jednu LAN. To taktiež zahŕňa servehousing, kde potrebujem jednu IP pre server – provider ju najskôr pridelí zo /64 spoločného subnetu.
Z môjho pohľadu je toto oveľa jednoduchší subnetting ako pri IPv4, kde si musím prerátavať počet bitov pri variabilnej maske. Vždy mám, samozrejme, možnosť sekať si svoj adresný priestor na ľubovoľné dĺžky. Môžem si ho upraviť podľa svojich potrieb avšak tento štandard, ktorý som opísal, je vhodný na väčšinu prípadov. Ako som ukázal subnetting pri IPv6 nie je vôbec zložitý. Keď to skombinujeme spolu s pravidlami skracovania adries, tak (podľa môjho názoru) nie sú tie IPv6 adresy až také strašidelné.