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.
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.
Shared Tree
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.
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?