Hlavní navigace

Úvod do IP multicastu (díl třetí)

8. 10. 2004
Doba čtení: 5 minut

Sdílet

Dnešní díl seriálu nás zavede více do hloubky multicastového routingu. Povíme si, jaké routovací protokoly se pro multicast používají a na jakých stojí principech. Na úvod se ale neobejdeme bez trochy té teorie.
minulém díle jsme si pověděli o multicastovém forwardování, dnešní díl se soustředí na způsoby, jak sestavovat vlastní multicastové routovací tabulky.

Pro pochopení, jak IP multicast funguje, si povíme něco o multicastových distribučních stromech. V IP multicastu existují dva základní typy těchto stromů: zdrojový strom (source tree) a sdílený strom (shared tree).

Zdrojový strom

Tomuto stromu se také někdy říká strom nejkratších cest (Shortest Path Tree – SPT) a je to strom, jehož kořenem je zdroj multicastových dat, a listy tohoto stromu jsou příjemci tohoto vysílání. Příklad takového stromu vidíte na následujícím obrázku.

1385
Source Tree

Pro označení stromu se obvykle používá notace (S, G), což se anglicky čte jako „S comma G“, kde S je adresa zdroje a G je adresa multicastové skupiny. Náš příklad na obrázku bychom označili jako (192.168.0.2, 225.1.1.1). Je tedy zřejmé, ze pro různé zdroje posílající data do stejné multicastové skupiny existují různé zdrojové stromy. Někdy se také tento způsob práce s multicastem označuje source specific multicast (SSM).

Sdílený strom

Oproti zdrojovým stromům mají sdílené stromy kořen vždy na jednom místě, nezávisle na tom, kdo data posílá. Tomuto kořenu se obvykle ríka rendesvous point (RP), a proto se také tyto stromy někdy nazývají RP stromy. Příklad takového stromu máme na následujícím obrázku.

1384
Shared Tree

Jako označení pro tyto stromy se používá notace (*, G), anglicky „star comma G“. Hvězdička označuje, že strom není závislý na zdroji multicastu. Náš příklad by se dal označit jako (*, 225.1.1.1). Jak je vidět, router F tvoří kořen stromu. Aby situace nebyla tak jednoduchá, tyto stromy jsou dvojího druhu: jednosměrné a obousměrné. Distribuce multicastu v obousměrném stromu probíhá tak, že zdroj data vysílá směrem ke kořenu a zároveň po směru stromu k listům. U jednosměrného se data pošlou unicastem ke kořenu a ten se o jejich distribuci již postará.
Tento způsob chápání multicastu má také označení ASM (any source multicast).

Nyní se vraťme k praxi a podívejme se na používané routovací protokoly. Lze je rozdělit do tří základních skupin: Link state, Dense mode a Sparse mode.

Dense mode protokoly

Protokoly této skupiny používají zdrojové stromy k doručování SSM a pracují na tzv. push principu. Tento princip předpokládá, že každý subnet má příjemce (S, G) multicastového provozu a tento provoz je tedy primárně přenášen všude. Aby se zabránilo plýtvání pásma, listy stromu, které nemají žádné příjemce pro předmětnou skupinu, pošlou směrem ke kořenu tzv. prune zprávu. Směr, ze kterého taková zpráva přišla, je pak ve stromě ořezán, až zůstanou pouze větve, které mají některé aktivní posluchače. Prune zpráva platí pouze po omezenou dobu, takže po chvíli je ji nutné opět obnovit, jinak začne nadřazený router data posílat. Naopak ve chvíli, kdy se objeví nějaký nový posluchač dané skupiny, pošle router svému nadřazenému zprávu graft a data začnou téct okamžitě.

Mezi dense mode protokoly patří například DVMRP a PIM-DM.

DVMRP (Distance Vector Multicast Routing Protocol) je jedním z nejstarších protokolů, navrhnul ho sám Steve Deering a svou koncepcí velmi připomíná unicastový RIP. Jeho přesný popis je v RFC-1075. Poměrně netypicky si sám sestavuje i unicastovou routovací tabulku a dělá to podobně jako RIP. V minulosti byl velmi využíván v síti mbone. A podobně jako RIP se v dnešní době používá už spíše z důvodů kompatibility a ve velmi malých sítích.

PIM-DM (Protocol Independent Multicast – Dense Mode) je protokol o něco mladší. Nesestavuje si sám unicastovou routovací tabulku, ale místo toho využívá tabulku od nějakého unicastového protokolu. Slůvko independent v názvu označuje, že PIM umí spolupracovat s libovolným protokolem, tedy třeba i se statickým routingem apod.

Sparse mode protokoly

Mezi sparse mode protokoly patří například PIM-SM (Protocol Independent Multicast) nebo CBT (Core Based Trees). Tyto protokoly využívají sdílené stromy pro distribuci multicastových dat a využívají tzv. pull model. Tento model předpokládá, že data se nesmějí posílat do sítě, pokud si je někdo explicitně nevyžádá. Pokud se tedy některý stroj chce připojit do multicastové skupiny, jeho příslušný router pošle zprávu join směrem ke kořenu stromu. Takto je sestavena další větev stromu a data můžou proudit. Platnost zprávy join je časově omezena, takže je nutné ji obnovovat. Pokud už v dané větvi není žádný příjemce skupiny, router pošle zprávu graft, která větev uřízne.

Důvodem pro zavedení sparse mode protokolů byla především snaha šetřit výpočetní výkon routerů. V případě, že je více přispěvovatelů do skupiny, musí dense mode protokoly počítat strom pro každý zvlášť. To u sparse mode protokolů odpadá, ale na oplátku může být jejich routing méně efektivní, a je tedy nutné velmi pečlivě volit RP.

CBT se nikdy velikého rozšíření nedočkal, naopak PIM-SM má pár implementací a je běžně v multicastových sítích používán.

Link state protokol

Jediným známým (alespoň mně) zástupcem link state protokolů je MOSPF (Multicast Open Shortest Path First), který je definován v RFC-1584. Tento protokol je modifikací velmi používaného unicastového protokolu OSPF. Pro distribuci multicastu také používá zdrojové stromy, nicméně nepoužívá prune/graft zprávy. Místo toho si routery vyměňují informace o rychlosti (zjednodušeně řečeno, jde o metriky, které by to měly vyjadřovat) a stavu linek vedoucích k příjemcům multicastových skupin. Každý router si tyto informace ukládá do své databáze a z ní si pak sám sestaví pro každou (S, G) skupinu strom. Při každé změně stavu nějaké linky v síti je nutné tyto stromy přepočítat. Vzhledem k tomu, že těchto skupin může být potenciálně velmi mnoho, nároky na routery mohou být v nejhorším případě značné. Snad právě z tohoto důvodu se tento protokol téměř neujal.

Content tip EARLY

Za zmínku stojí ještě dva protokoly, a těmi jsou MSDP (Multicast Source Discovery Protocol) a BGMP (Border Gateway Multicast Protokol). Stojí trochu stranou našeho výčtu, protože se nejedná o běžné protokoly. Úkolem MSDP je umožňovat propojení více PIM-SM domén mezi sebou. Každá si přitom zachová svůj vlastní RP. Jeho definice je uvedena v RFC-3618. Naopak BGMP se více hodí pro propojování SSM domén, tedy hlavně DVMRP, MOSPF a PIM-DM. Nicméně umí i ASM, pouze vyžaduje, aby se jedna doména stala kořenem globálního stromu a ostatní s ní byly asociované. BGMP je popsán v RFC-3913.

V dalším díle se pokusíme podívat blíže na zprávy, které si multicastové protokoly vyměňují, a na protokol IGMP.

Čeká podle vás multicast velká budoucnost?

Autor článku

Autor je výkonným ředitelem CZ.NIC a členem představenstva NIX.CZ. Ve volném čase se věnuje vývoji routovacího démona BIRD.

Upozorníme vás na články, které by vám neměly uniknout (maximálně 2x týdně).