Hlavní navigace

TIPC: Topologie a adresování v systému

26. 7. 2007
Doba čtení: 4 minuty

Sdílet

Po úvodním seznámení s TIPC (Transparent Interprocess Communication) protokolem je konečně na čase se podívat trošku více na principy, na kterých je protokol postaven. Dnešní článek se soustředí spíše na popis samotných principů než na konkrétní detaily jejich implementace.

předcházejícím článku byl představen protokol TIPC, motivace pro jeho návrh a zhruba načrtnuty jeho vlastnosti. Nyní je čas zabývat se vlastnostmi detailněji. Pozornost bude tentokrát soustředěna na popis topologie a adresování.

Topologie

TIPC používá pětiúrovňovou topologii. Jednotlivé úrovně je možné vnímat jako různě detailní pohledy na provozovaný systém a je možné s nimi podle toho pracovat.

Nejvyšší úrovní je (TIPC) Síť. Síť je seskupení počítačů, které mohou vzájemně komunikovat s použitím TIPC protokolu. Při adresování počítačů na této úrovni je možné používat pouze (TIPC) síťové adresy, tzn. lokační transparence (viz dále) není na této úrovni podporována.

Síť se dále rozpadá na zóny. Všechny zóny v rámci sítě musí být přímo propojeny, protože neexistuje routování na úrovni zón. Zóna již poskytuje lokační abstrakci – uživatel se nemusí starat o síťové adresy a může komunikovat přímo. V celé síti může být maximálně 255 různých zón.

Přejdeme-li o další úroveň níž, pak se zóna dále rozpadá na clustery. Cluster se sestává z přímo propojených uzlů (nody). Všechny clustery v zóně navzájem přímo propojené být nemusí. Maximální počet clusterů v zóně je 4095.

Poslední běžnou úrovní je (systémový) node. V rámci clusteru jich může být nejvýše 2047. Zbytek adresního prostoru (pro adresu nodu je určeno 12 bitů – viz dále) je vyhrazen pro sekundární nody. Všechny nody v rámci clusteru musejí být vzájemně propojené.

Sekundární nody mají stejné vlastnosti (dostupnost, lokační transparenci,…) jako systémové nody. S výjimkou, že nemusí být propojeny se všemi zbývajícími uzly clusteru. Postačuje propojení s jedním nodem. Vzhledem k funkčně totožným vlastnostem, nebude-li v dalším textu řečeno jinak, jsou informace týkající se nodů platné jak pro systémové, tak i sekundární nody.

Fyzická adresace

V TIPC jsou adresovatelné všechny výše zmíněné entity (nody, cluster, …) pomocí jedné adresy. TIPC pracuje s 32 bitovými adresami. Adresa je logicky dělena na části o 8/12/12 bitech, kdy jednotlivé části identifikují zónu/cluster/node (z tohoto dělení už by měly být zřejmé důvody pro omezení např. na počet uzlů v clusteru, která byla dříve zmíněna). V dokumentaci se adresy zapisují <x.y.z>. Použijeme-li tuto notaci, pak <3.0.0> je adresa zóny 3 a <3.1.5> konkrétního uzlu v clusteru 1 zóny 3. Tato TIPC adresa je interně mapována na příslušnou fyzickou adresu niží vrstvy (tj. např. IP adresu).

Aby bylo možné jednoznačně identifikovat požadovanou službu, zavádí se identita portu. Jedná se o dvě 32 bitová čísla, kdy první z nich je náhodně vygenerované, druhé je výše popsaná adresa. Použití identity portu je alternativou k pojmenovaným portům (viz dále – odstavec Lokační transparence). Identity portu jsou limitované požadavkem na znalost fyzické adresy služby, ale ve srovnání s pojmenovanými porty mají nižší overhead.

Lokační transparence

Aby mohl systém poskytovat lokační transparenci pro nějakou službu, musí ukrýt veškeré informace, ze kterých by mohlo být odvoditelné umístění této služby v systému, resp. nesmí požadovat znalost umístění služby. Jednoduše řečeno se jedná o to, aby při komunikaci se serverem poskytujícím nějakou službu nebylo nutné kdykoli během spojení zadávat fyzickou adresu serveru. Pro tyto účely zavádí TIPC funkční adresový typ, který označuje jako pojmenovaný port. Při použití pojmenovaného portu je pak TIPC zodpovědný za vyhledání a překlad na fyzické adresy. Protokol TIPC sice mechanismy pro lokační transparenci nabízí, ale nevyžaduje. Tj. je možné pracovat přímo s fyzickými adresami a mít tak zcela pod kontrolou, ke kterému nodu se aplikace připojuje.

Pojmenovaný port se skládá ze dvou složek a je unikátní v celém clusteru. Jednotlivé složky jsou identifikátor typu služby a číslo instance dané služby. Je definován postup jak místo jednoho čísla instance určit rozsah instancí (min-max). Výhodou, kterou nabízí definování rozsahu, je například, že je možné rozdělit systém na oblasti spadající pod jednotlivé servery nabízející danou službu. Následně se provede propojení pojmenovaného portu (bind) se socketem, obdobně jako při práci v TCP/IP síti, a tím je služba zpřístupněna.

Pokud aplikace adresuje službu pomocí pojmenovaného portu, TIPC převádí pojmenovaný port na fyzickou adresu z jejího pohledu transparentně. Využívá k tomu tabulku, která je replikována přes všechny nody. Protokol TIPC musí udržovat tyto tabulky konzistentní v rámci celé zóny (nejvyšší úroveň lokační transparence v systému – viz výše). Aby tabulky byly konzistentní, je node povinen v okamžiku navázání kontaktu s novým uzlem (v zóně, do které náleží) bez prodlení odeslat synchronizační zprávy. Obdobně jakmile ztratí s nějakým uzlem kontakt, je povinnen okamžitě vymazat z tabulky veškeré záznamy týkající se ztraceného uzlu. Samozřejmě mohou i nadále vznikat krátkodobé inkonzistence. Filozofie je pak taková, že když požadavek na překlad uspěje, ale vede na neplatnou fyzickou adresu, je opakován, a to nejvýše šestkrát. Pokud ani na šestý pokus neuspěje, je požadavek odmítnut.

Pokud aplikace definuje jako adresáta zprávy rozsah pojmenovaných portů, pak TIPC pošle na každou adresu definovaného rozsahu právě jednu kopii zprávy (spolehlivý multicast). Je garantováno, že služa dostane zprávu právě jednou, i pokud dochází k překrytí rozsahů na serverech poskytujících danou službu (je totiž např. možné mapovat stejný rozsah pojmenovaných portů na více soketů). K tomu používá podporu pro broadcast/multicast u nižších vrstev. K zajištění spolehlivosti multicastu používá vlastní interní protokol.

CS24_early

Závěr

Protokol TIPC podporuje komunikaci s použitím jak fyzických adres, tak i funkčních adres. Při použití funkčních adres zajišťuje jejich transparentní překlad na fyzické a tím zavádí do systému lokační transparentnost. Překlad je zajišťován s použitím replikovaných překladových tabulek, které jsou synchronizovány napříč celou zónou pomocí triviálního algoritmu.

Zdroje

[1] Dokumentace open source implementace TIPC

Seriál: Protokol TIPC

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

Autor článku