Hlavní navigace

Shim6: Multihoming pro IPv6

25. 6. 2009
Doba čtení: 4 minuty

Sdílet

 Autor: 29
Pokud je pro provozovatele služeb opravdu kritická dosažitelnost jeho serverů, připojí se k několika různým poskytovatelům a provozuje multihoming. Shim6 představuje v této oblasti zajímavé řešení. Nevyžaduje ani speciální adresy, ani podporu v infrastruktuře, jen implementaci v koncových strojích.

Klasický multihoming vychází ze speciálních adres nezávislých na poskytovateli (Provider Independent, PI), které lze pro IPv6 v našich končinách získat od letošního jara. Nepříjemné je, že jejich vlastník musí z hlediska směrování fungovat jako autonomní systém a příslušné prefixy se dostávají do globálních směrovacích tabulek. To znamená netriviální zátěž jak pro vlastníka PI adres, tak pro páteřní směrování. Bylo by záhodno mít k dispozici i nějaké „lehčí“ metody.

IPv6 jim vychází vstříc, když umožňuje, aby rozhraní počítače neslo několik různých adres. Můžete se tedy připojit k několika poskytovatelům, od každého si pořídit prefix z jeho adresního rozsahu, počítačům (nebo alespoň těm, na jejichž dostupnosti záleží) přidělit adresy vycházející z obou prefixů a spolehnout se na standardní mechanismy pro výběr IPv6 adresy při komunikaci.

To je ovšem jen první krok ke skutečnému multihomingu. Ten by měl zajistit, že pokud dostupnost jednou cestou padne, komunikace bude pokračovat dál jinými cestami, aniž by aplikace cokoli poznaly. Před časem se objevil nápad využít pro tento účel podporu mobility – stroje používající nedostupné adresy by se tvářily jako mobilní uzly, které jsou momentálně dosažitelné na jiné ze svých adres. Fatálním problémem je, že mobilita potřebuje domácího agenta a zde má řešit situaci, kdy je „domácí síť“ nedostupná.

Ovšem základní myšlenka, že stroj identifikovaný určitou IPv6 adresou je momentálně dostupný na jiné adrese, se stala východiskem pro pracovní skupinu shim6. Způsob jejího využití se pochopitelně od mobility poněkud liší, jak se můžete přesvědčit v čerstvě vydaných RFC 5533, 5534 a 5535 definujících shim a jeho doprovodné mechanismy.

Shim jako zkratka znamená Site Multihoming by IPv6 Intermediation. Shim jako slovo označuje podložku, případně v programování jednoduchou knihovnu pro převod jednoho aplikačního rozhraní na druhé. To odpovídá, pouze se místo API převádějí adresy. Mechanismus shim je vložen do IP vrstvy mezi podvrstvu realizující směrování a podvrstvu, která se stará o operace mezi koncovými uzly, jako je fragmentace či šifrování.

Celý návrh se snaží, aby byl transparentní, nezdržoval a nepletl se ostatním mechanismům pod nohy. Komunikace proto začíná zcela bez shim – aplikace navážou spojení standardním způsobem, pokud jedna či obě strany mají k dispozici větší počet adres, vybere se dvojice pro komunikaci standardním způsobem podle RFC 3484 a pakety se začnou vyměňovat jako normálně. Pokud je komunikace krátká (třeba DNS dotaz a odpověď nebo odeslání krátkého dopisu), u toho i zůstane.

Až po určité době (rozhodne implementace podle času nebo počtu paketů) se shim probudí z letargie, vymění si čtyři zprávy a jejich prostřednictvím naváže tak zvaný kontext. Základní myšlenkou je, že adresy, s nimiž daná komunikace začala, jí už zůstanou trvale. I kdyby se přešlo na náhradní, shim je bude pro vyšší vrstvy přepisovat, aby se vůbec o ničem nedozvěděly. Původní adresy tedy slouží jako identifikátory, v terminologii shim jsou označovány jako Upper Layer IDentifiers (ULID). Kontext se týká dvojice ULID, tedy jedné probíhající komunikace. V rámci jeho vytvoření mu každý z komunikujícíc strojů přidělí svou značku (context tag) a oznámí na druhou stranu:

  • jakou značku danému kontextu přidělil
  • jaké adresy má k dispozici (a jejich priority) – lze je později použít jako lokátory pro směrování datagramů

Výměnou čtyř zpráv a vytvořením kontextu na obou stranách činnost shim prozatím skončí a pakety se nadále přenášejí bez jakýchkoli specialit. Shim pouze monitoruje, zda komunikace probíhá bez problémů. Pokud zjistí zádrhel, pokusí se najít v rámci dostupných adres (lokátorů) funkční pár. Když se podaří, začne upravovat datagramy:

  • Při odesílání změní adresy odesilatele a příjemce na nalezený funkční pár. Zároveň do datagramu přidá rozšiřující hlavičku shim obsahující značku, již danému kontextu přidělil protější stroj.
  • Pokud přijatý datagram obsahuje rozšiřující hlavičku shim, příjemce si z ní vyzvedne značku kontextu a přepíše adresy v datagramu na ULID podle příslušného kontextu.

Vyšší vrstvy se vůbec nedozvědí, že datagram byl přepravován s jinými adresami. Jim se zdá, že se stále používají původní adresy a komunikace pokračuje nerušeně dál. Mezi vyšší vrstvy z tohoto pohledu patří i podvrstva IP, která řeší fragmentaci, IPsec a další služby mezi koncovými stroji. Zejména bezpečnostní mechanismy by změnu adresy nepřežily ve zdraví.

Pokud později shim zjistí, že původní dvojice adres (ULID) je opět funkční, přestane se do věci míchat a nechá datagramy zase procházet beze změny. Toto je stručný souhrn základních funkcí shim. Specifikace je poměrně složitá a řeší celou řadu více či méně obvyklých situací, definuje bezpečnostní opatření a různé doprovodné mechanismy.

BRAND24

Základní přednosti i zápory shim vyplývají z jeho implementace v koncových strojích. Nepotřebuje speciální adresní prostor ani větší zásahy do konfigurace síťové infrastruktury. Jednoduše přiřadíte svým strojům adresy s prefixy od různých poskytovatelů, zavedete je do DNS a shim se o vše postará. Pokud ale není na druhé straně podporován, multihoming pro tohoto klienta nebude k dispozici.

Svým charakterem je určen spíše pro menší instalace. Jste-li Seznam nebo Komerční banka, bude pro vás klíčová neustálá dostupnost pro všechny a stojí vám za vyšší náklady, které s sebou nesou adresy nezávislé na poskytovateli. Pokud ale třeba provozujete nepříliš velký e-shop, může pro vás shim představovat rozumný kompromis mezi výkonem a cenou. Tedy až bude v rozumné míře implementován – specifikace vyšla teď v červnu.

Byl pro vás článek přínosný?

Autor článku

Autor dělá nepořádek v příslovích, protože sítě nejen dělá, ale i učí a dokonce také řídí. Působí na Ústavu nových technologií a aplikované informatiky na Technické univerzitě v Liberci. Píše knihy.
Upozorníme vás na články, které by vám neměly uniknout (maximálně 2x týdně).