Portál AbcLinuxu, 8. května 2024 16:07

Architektura IPv6 – adresace uzlů (1)

8. 6. 2011 | Pavel Šimerda
Články - Architektura IPv6 – adresace uzlů (1)  

Vítejte zpátky v IPv6. Po dávno zapomenuté trojici článků o zavádění a konfiguraci nového IP protokolu se ponoříme trochu více do technických detailů a změn, které tento protokol přináší. V nové sérii článků se dotknu i témat z diskuzí

Obsah

Jako autor článků o IPv6 mám v roce 2011 úplně jinou pozici než jsem měl v roce 2008, kdy IANA měla ještě dostatek volných bloků IPv4. IPv6 se pomalu ale jistě stává denním chlebem. Dokazuje to linková komunikace, dostupnost globálních IPv6 adres na FOSDEMu a dalších akcích a narůstající množství IPv6 providerů.

Z důvodu lepší orientace se budu snažit co nejvíce odkazovat na relevantní dokumenty, kde najdete podrobnější informace (obvykle v angličtině). Označení vrstev síťové architektury budu psát většinou podle modelu TCP/IP (linková, síťová, transportní a aplikační).

Proč?

link

Hlavním důvodem pro vývoj a nasazování IPv6 je nedostatečná 32-bitová adresace jeho předchůdce. Jaká jiná motivace by měla mít dostatečnou váhu na prosazení nového protokolu celosvětové sítě.

Málo z vás pochybuje o nutnosti přejít na protokol s většími adresami (ozvěte se v diskuzi!). Přesto realita mnohokrát ukázala, že je možné nasazení nové technologie odložit. Ale na jak dlouho?

Různí uživatelé Internetu mají různé potřeby. Důvody pro používání veřejných adres počítačů účastnících se internetové komunikace jsou všeobecně známé. Výhody a nevýhody takového postupu se jistě objeví v diskuzi pod článkem.

Nadále budu vycházet z předpokladu, že provozovatel sítě by měl mít možnost přiřadit globální (veřejnou, unikátní) adresu každému síťovému zařízení.

IPv6 versus jiné řešení

link

V diskuzích jsem narazil na velmi pěkný názor (autor nechť se sám přihlásí), že mohli pánové místo vyrábění zbrusu nového protokolu prostě zvětšit adresy a trochu vyčistit protokol původní.

Tento názor mě nevýslovně potěšil a inspiroval k hypotetické přestavě, jak by takový protokol měl vypadat. Nechte se zapojit do této hry a zkuste zformulovat svou představu v komentářích (delší zápisy formou odkazu do blogu).

Mnoho z vás se se mnou shodne na tom, že IP verze 4 byl (a stále ještě je) velmi kvalitně navržený a úspěšný protokol a pokud má být nahrazen, zaslouží si nástupce odpovídající kvality.

Můžete zkusit vaše hypotetické nástupce IPv4 porovnat právě s protokolem IPv6.

Počítače, síťová rozhraní a adresy

link

Přestože se v širším kontextu používají adresy na identifikaci počítačů, jsou pevně svázané se síťovými rozhraními. Tedy alespoň většina z nich. Síťové rozhraní může mít více IPv6 adres (v praxi bude mít alespoň dvě).

Narozdíl od IPv4 se použití několika adres na jednom rozhraní považuje od začátku za zcela standardní (a povinně implementovanou) situaci. Podpůrné protokoly tuto vlastnost hojně využívají. Na Linuxu a mnoha jiných operačních systémech vám samozřejmě nikdo nebrání používat více adres protokolu IPv4.

Zápis adres znáte z předchozích článků nebo jiných zdrojů, připomenu snad jen ukázkou IP adresy s vyznačenou délkou prefixu (v jednotkách bitů). Délka prefixu se používá při konfiguraci IPv6 na lokální síti. Při adresaci vzdálených strojů se neuvádí, stejně jako je tomu u IPv4. Zápis pomocí bitové masky se u IPv6 nepoužívá.

2001:0db8:85a3:0000:0000:8a2e:0370:7334/64 (úplná forma)

2001:db8:85a3::8a2e:370:7334/64 (zkrácená forma)

Tuto adresu jsem si opět půjčil z anglické Wikipedie.

Dělení IP adres podle způsobu doručování

link

Připomenu zde rozdělení adres na unicastové, multicastové a anycastové adresy (RFC 4291). Unicast slouží k jednoznačnému adresování jediného rozhraní (a tím i počítače). Multicast a anycast slouží k adresování několika rozhraní (počítačů). Anycast indikuje doručování nejbližšímu z nich, zatímco multicast všem.

Výjimkou je speciální adresa :: (128-bitová nula), která není ani jedním ze zmíněných typů, protože neukazuje nikam.

Autoři IPv6 se rozhodli nezařadit do protokolu broadcast adresy. Broadcast adresy jednotlivých podsítí nemají dnes opodstatnění (jestli ho vůbec někdy měly) a broadcast adresa pro rozeslání po celém linkovém segmentu je nahrazena multicastem.

Multicast má oproti broadcastu tu výhodu, že jej lze částečně filtrovat už na linkové úrovni na síťové kartě.

Dělení IP adres podle rozsahu platnosti

link

Druhé klíčové dělení je podle rozsahu platnosti (rovněž RFC 4291). Rozsah (nebo chcete-li oblast) může být oblast síťového rozhraní (interface-local), linkového segmentu (link-local), místa (budovy) (site-local), organizace (organization-local) a globálního Internetu (global). Standard počítá i s oblastmi definovanými administrátorem.

Oblast síťového rozhraní (interface-local) se také často označuje jak oblast uzlu (node-local) a přiřazuje se místní smyčce (loopback).

V tomto článku se budeme blíže zabývat pouze unicastovými a anycastovými adresami různých rozsahů platnosti.

Unicastové adresy

link

Všechny unicast adresy kromě globálních se vybírají ze speciálních prefixů. Globální adresy vznikají přidělením volných adresních rozsahů. Unicast adresy nemají jednotné označení rozsahu platnosti.

Tyto adresy se vybírají ze speciálních prefixů. Jejich součástí není jednotná značka rozsahu platnosti (viz multicast).

Unicastová adresa pro komunikaci v rámci uzlu (interface-local)

link

Internetové protokoly se používají i v komunikaci mezi aplikacemi v rámci jednoho stroje. Proto se závádí adresa ::1, obdoba IPv4 adresy 127.0.0.1. Adresa se obvykle přiřazuje virtuálnímu rozhraní místní smyčky (loopback).

Zajímavé je, že autoři IPv6 vyhradili pouze jednu interface-local adresu, narozdíl od IPv4, kde se využívá celý rozsah 127.0.0.0/8.

link

Link-local adresy jsou nedílnou součástí IPv6. Zajišťují adresaci na lokálním segmentu, která je nezávislá na přidělených globálních adresách. Používá se binární prefix 1111 1110 10 (fe80::/10).

Narozdíl od analogických IPv4LL (RFC 3927, rozsah 169.254.0.0/16) adresy nejsou pouhou náhražkou globálních adres, ale jejich šikovným doplňkem. Těží z nich specializované protokoly jako DHCPv6 (RFC 3315) nebo OSPFv3 (RFC 5340).

Linkové adresy se používají v podpůrných protokolech, které fungují nezávisle na přidělených IP adresách. Umožňují přenést veškerou link-local komunikaci na IP vrstvu.

Ve spojení s Multicast DNS pomůžou link-local adresy k přístupu k různým embedded zařízení (například pomocí SSH) bez ohledu na jejich síťovou konfiguraci. Obcházení síťové vrstvy, jako to dělá třeba Mikrotik (služba MAC telnet), není na IPv6 potřeba.

Unicastové adresy v rámci místa či organizace (site-local)

link

Původní rozsah místních adres fec0::/10 (RFC 3513) byl zavržen ve prospěch schématu, které se snaží v rámci možností používat globálně unikátní adresní rozsahy. Ulehčí se tak případné spojování sítí.

Současnou obdobou privátních IPv4 rozsahů (RFC 1918) jsou takzvané unikátní lokální adresy (RFC 4193). Tento standard poskytuje rozsahy, které nepodléhají přidělování a přesto jsou s velmi vysokou pravděpodobností mezi sebou odlišné a tudíž propojitelné.

Tyto adresy maji binární prefix 1111 110 (fc00::/7). Osmý bit určuje způsob přidělování, současný standard používá jedničkový bit (z toho výsledný prefix 1111 1101 neboli fd00::/8).

Následujících 40 bitů je pseudonáhodných, což zajišťuje zmíněnou možnost spojování ULA segmentů routery. Vzniká tím prefix délky 48 bitů, typický pro zákaznické IPv6 rozsahy.

Ještě si můžete všimnout jednoho rozdílu oproti IPv4, a to absence IP maškarády (lidově NATu). Použití klasické maškarády je na IPv6 zbytečné, díky dostatku IP adres a možnosti použít stavový firewall a rozšíření pro soukromí (privacy extensions).

Místní IPv6 adresy tedy nejsou určené pro komunikaci se zařízeními na Internetu.

Globální unicast adresy

link

Už víte, že globální unicast adresy jsou veřejné internetové adresy počítačů (případně jejich konkrétních rozhraní). Globální adresy se dnes poznají podle binárního prefixu 001 (2000::/3, viz ipv6-address-space).

Tyto adresy jsou rozdělené na dvě poloviny po 64 bitech, kde první popisuje cestu k dotyčnému stroji a druhá slouží jako jeho identifikace. Takové rozdělení je oproti IPv4 novinkou. Identifikátor se používá buď globální (podle MAC-48/EUI-64), lokální (podle administrátora), náhodný (kvůli ochraně soukromí, viz RFC 4941) nebo kryptografický (RFC 3972).

IPv6 routery ale nemají spoléhat na to, že globální unicast je pouze rozsah 2000::/3, kvůli možným pozdějším alokacím. Router považuje za globální unicast všechny adresy, které nespadají do žádného speciálního rozsahu. V routovací tabulce se dává prefix výchozí (default) cesty ::/0.

Anycastové adresy

link

Anycastové adresy jsou vybírány ze stejných rozsahů jako unicast adresy. Unicast adresa se stane anycast adresou nasměrováním na několik počítačů (síťových rozhraní).

Mezi anycastové adresy patří adresy podsítí, které vedou na routery těchto podsítí (subnet router), kterých může být několik. Adresa podsítě se pozná podle toho, že má kromě prefixu všechny bity nulové. Délku prefixu uvádím pouze pro vaši orientaci.

2001:0db8:85a3::/64

Nejvyšších 128 adres každé podsítě je rezervováno pro speciální anycast adresy (například anycast adresy agentů mobilního IPv6).

Multicastové adresy

link

Multicastové adresy začínají binárním prefixem 1111 1111 (ff00::/8). Následující dvě čtveřice bitů určují způsob přidělování a rozsah platnosti multicast adres.

První čtyři bity fungují jako přepínače (flagy). První bit je rezervovaný pro budoucí použití. Druhý určuje, jestli je v adrese zakódován unicastový prefix (RFC 3306). Třetí značí použití adresy styčného bodu (RFC 3956). Čtvrtý říká, jestli je adresa přechodná. Pokud není nastavený, jedná se o stálou adresu s pevně definovaným významem.

Rozsah platnosti zabírá další čtyři bity a tudíž jde zapsat jednou šestnáctkovou číslicí. Na vybrané hodnoty se spolu podíváme.

Ne všechny kombinace voleb a rozsahů platnosti dávají smysl, shrneme si tedy několik užitečných možností. Registraci stálých adres najdete na ipv6-multicast-addresses.

Stálé multicastové adresy v rámci rozhraní (interface-local)

link

Tyto adresy z rozsahu ff01::/16 jsou multicastovou obdobou již zmíněných unicast interface-local adres. Jestli mají nějaký praktický význam, ukáže čas.

link

Linkové multicast adresy (ff02::/16) nahrazují broadcast adresu 255.255.255.255 protokolu IPv4. Jejím přesným ekvivalentem je adresa ff02::1, která umožňuje kontaktovat všechny uzly na linkovém segmentu.

Pokud není potřeba kontaktovat úplně všechny uzly na síti, dává se přednost specifičtějším adresám. Mezi ně patří ff02::2 (všechny routery), ff02::1:2 (všichni DHCPv6 agenti), ff02::fb (všechny mDNSv6 uzly) a mnohé další.

Zvláštním případem je multicastová adresa pro dotazování sousedů (solicited node multicast). Skládá se z prefixu ff02:0:0:0:0:1:ff00::/104 a posledních 24 bitů unicastové adresy dotazovaného souseda. Díky této adrese jdou dotazy na sousedy filtrovat na úrovni síťových rozhraní.

Stálé místní multicastové adresy (site-local)

link

Místní multicastové adresy se nacházejí v rozsahu ff05::/16.

Jeden příklad za všechny je celopodniková multicastová adresa serverů protokolu DHCPv6 (ff05::1:3), která se uplatní při použití DHCP agentů. O tom se více rozepíšu v některém z příštích článků.

Další multicastové adresy

link

Mechanismy všech druhů přechodných adres by společně s mechanismy pro globální multicastovou adresaci vydaly na samostatný článek.

Co bych ale nerad opomenul je, že teprve IPv6 umožňuje plnohodnotnou globální adresaci zahrnutím prefixu sítě nebo zkrácené adresy styčného bodu přímo do multicastové adresy. Podobné to je s počtem stálých i přechodných multicastových skupin.

IPv4 na hladké nasazení globálního multicastu nestačí.

Ohlédnutí za délkou adresy

link

Adresy jsou oproti IPv4 delší a složitější na zapamatování, tedy většina z nich. Jako světlé výjimky připomenu adresy ::1, ff02::1, fd02::fb a v případě mírného přiohnutí standardu náhodnou nulou i lokální fd00::1, fd00::2, atd. U ostatních se příliš nepočítá s jejich pamatováním a častým ručním zadáváním.

Složitost globálních internetových adres nechme na příště a soustředíme se spíš na to, jestli 128-bitová adresa není příliš krátká nebo příliš dlouhá. Typická globální adresa může být 2001:0db8:85a3:08d3:1319:8a2e:0370:7344 (levé nuly v jednotlivých políčkách se můžou vynechat).

Použití fifty-fifty (přesněji 64:64) dělení adresy na část síťovou a lokální identifikátor se ukazuje jako nesmírně užitečné. Umožňuje mimojiné bezstavově konfigurovat statické veřejné IP adresy.

Jemnější dělení síťové části

link

Původně autoři IPv6 počítali s velmi jemným dělením globálních unicast adres. V současné době se 64-bitový prefix dělí na 48-bitovou část poskytovatelskou a 16-bitovou část zákaznickou. A i od toho se částečně ustupuje.

V tuto chvíli se globální unicast adresy vybírají z již zmíněného rozsahu 2000::/3. Ale i kdyby se využíval jen 2000::/16, pořád by zbylo 32 bitů na rozdělení mezi internetové providery. To je přesně tolik, kolik je možných IPv4 adres celkem. IPv6 tedy počítá s nějakými miliardami ISP, to nebude tak lehké překonat.

Hrubé počty

link

Zaregistroval jsem různé obavy, že by IP adresy došly znovu. Za použití trochy matematiky a představivosti se dá ukázat, jak vzdálená taková hrozba je. IPv6 umožňuje vytvářet desítky tisíc 48-bitových prefixů na každého obyvatele země. Ty jdou dále dělit na desítky tisíc 64-bitových prefixů linkových segmentů.

Samozřejmě i 64-bit prefix se dá přerozdělit na podsítě, pokud obětujete bezstavovou automatickou konfiguraci. Uzly na vnějším Internetu nerozliší, jestli se jedná o 64-bitový prefix nebo třeba několik 80-bitových.

Neomezené adresy

link

Zlí jazykové říkají, že každý konečný prostor adres lze vyčerpat. Technologie s variabilní délkou adresy je možná (viz třeba DNS, který pracuje s textovými řetězci), ale z hlediska zpracování relativně komplikovaná.

Hrozba vyčerpání IPv6 adres je většinou věcí mimozemských úvah. Potřebu řešení mimozemských problémů v adresaci dnes navrhovaného protokolu uvažte sami.

Závěrem

link

Zvláštní díky patří portálu AbcLinuxu.cz, že je od nedávna přístupný po IPv6.

$ host www.abclinuxu.cz
www.abclinuxu.cz is an alias for abclinuxu.cz.
abclinuxu.cz has address 82.208.17.55
abclinuxu.cz has IPv6 address 2001:1528:124:200:216:3eff:fe00:37

Příště se budeme detailně věnovat celé proceduře automatické konfigurace adres na síti IPv6.

Pavel Šimerda je lektor a konzultant z oblasti Internetu, počítačových sítí a Linuxu. Podívejte se na seznam jeho kurzů pro firmy a zvláště pak na IPv6-ready školení z oblasti sítí TCP/IP.

Seriál IPv6 (dílů: 5)

První díl: IPv6 - nový Internet, poslední díl: Architektura IPv6 – konfigurace adres a objevování sousedů (2).
Předchozí díl: IPv6 - správa vlastní podsítě
Následující díl: Architektura IPv6 – konfigurace adres a objevování sousedů (2)

Další články z této rubriky

PowerDNS – přívětivý a jednoduchý DNS server
Bootování ze sítě: pxelinux a kořenový adresář na NFS
Těžký život Do Not Track
OpenAFS – servery
Architektura IPv6 – konfigurace adres a objevování sousedů (2)

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.