Princip a konfigurace PIM-Bidir Martin Blahovský- BLA0044, Jakub Hendrych- HEN0014 Abstrakt: V tomto projektu jsme zapojili a konfigurovali topologii pomocí technologie PIM-Bidir. Hlavní důraz byl kladen na sledování a zdokumentování protokolu PIMv2. Následně byly zprávy tohoto protokolu důkladně popsány. Klíčová slova: PIM, PIM-DM, PIM-SM, PIM-BIDIR
Obsah 1. TEORETICKÁ ČÁST ..................................................................................................................... 2 1.1 Směrování dat – Multicast .......................................................................................................... 2 1.2 Protocol Independent Multicast – PIM ...................................................................................... 2 2. PRAKTICKÁ ČÁST........................................................................................................................ 4 2.1 Topologie.................................................................................................................................... 4 2.2 Konfigurace síťových prvků ...................................................................................................... 5 2.3 Ověření funkčnosti konfigurace ................................................................................................. 6 2.4 Údržba a monitoring................................................................................................................... 7 2.5 Zachytávání provozu pomocí Wireshark ................................................................................... 8 2.5.1 Paket protokolu PIMv2 ........................................................................................................ 8 2.5.2 Zprávy protokolu PIMv2 ..................................................................................................... 9 3. ZÁVĚR .......................................................................................................................................... 12
květen 2013
1/13
1. TEORETICKÁ ČÁST V této kapitole budou rozebrány teoretické aspekty, které jsou nutné pro zvládnutí projektu.
1.1 Směrování dat – Multicast Je metoda přeposílání IP paketů z jednoho zdroje určitému počtu koncových stanic. Místo odesílání jednotlivých paketů ke každému cíli je odeslán jediný paket. Technologie multicast byla vyvinuta, aby doplnila technologie unicast a broadcast, které účinně nezvládaly nové aplikace. Přenášené informace mohou být např. v podobě multimédií nebo opravy chyb v operačních systémech apod. Metoda funguje na principu posílání informací (s IP adresou zdroje a adresou cílové skupiny) ze zdrojového uzlu jen jedním datovým tokem, a pokud je informace v lokální síti vyžadována, tak se informace do ní replikuje. Cílem zavedení multicastu je tedy zmenšení zátěže vysílajícího uzlu a přenosové sítě [1].
Obrázek 1 – schéma multicastu [2]
1.2 Protocol Independent Multicast – PIM PIM je rodina multicastových směrovacích protokolů pro internetový protokol (IP sítě), které poskytují rozdělení dat přes sítě LAN, WAN nebo Internet. Patří do skupiny nezávislých protokolů, protože neobsahuje vlastní topologický mechanismus, ale místo toho používá směrovací informace dodané tradičními směrovacími protokoly, jako jsou např. Open Shortest Path First (OSPF), Routing Information Protocol (RIP) a Border Gateway Protocol (BGP). Existuje několik variant PIM. Nás pak bude především zajímat PIM-BIDIR [3].
PIM Dense Mode (PIM-DM): PIM-DM vychází z představy, že téměř všichni účastníci chtějí provoz přijmout, takže jej odesílá do všech směrů (na všechny směrovače mimo toho, od kterého přišel). Pokud některý sousední směrovač provoz nechce, tak to musí oznámit.
květen 2013
2/13
Vytváří strom nejkratších cest, používá „flood and prune“ metodu (nejprve zaplaví doménu multicastem a pak ořezává větve, kde nejsou příjemci). Daná rozhraní se přidávají do multicast směrovací tabulky daného směrovače. Špatně škálovatelný, je ideální pro LAN, kde jsou členové hustě umístěni v síti [3].
PIM Sparse Mode (PIM-SM): Vychází z představy, že klienti, kteří chtějí přijímat multicast, se v síti nachází velmi řídce. Takže PIM-SM posílá provoz pouze směrovačům, kteří si o něj požádají. Používá jednosměrné sdílené stromy s kořenem v „Rendezvous Point“ (RP) a může vytvářet stromy nejkratších cest. Zdroje posílají pakety přímo připojeným směrovačům „designated router“ (DR). DR (směrovač s nejvyšší prioritou) je zabalí a jako unicast pošle na RP. Ten je posílá členům multicast skupiny. RP vytváří cestu od zdroje ke členům skupiny, teprve potom posílá multicast pakety. PIM-SM je rozšířený směrovací protokol pro multicast. Důležitou podmínkou je, aby se směrovač přihlásil do skupiny, která bude přijímat provoz [3].
Bidirectional PIM (PIM-BIDIR): PIM-BIDIR vznikl jako alternativa k PIM-SM. Na rozdíl od PIM-SM vytváří obousměrné sdílené stromy, ale nikdy nevytváří stromy nejkratších cest. Jinými slovy může mít delší „end - end“ vzdálenost. Velkou výhodou je, že tato technologie minimalizuje množství směrovacích informací, které musí být zachovány, což je důležité zejména v sítích s mnoha odesílateli [3]. Stejně jako PIM-SM, také PIM-BIDIR bezpodmínečné přesměrovává zdrojový provoz směrem k RP proti proudu na sdíleném stromě. PIM-BIDIR odstraňuje potřebu registračního procesu, protože všechny toky jdou ze zdroje do RP. To znamená, že všechny směrovače posílají provoz striktně pomocí směrovacího záznamu (*, G). V případě PIM-SM se uvádělo (S, G), kde S znamenalo „source“(zdroj) a G znamená „group“(cílová skupina). U PIM-BIDIR je důležité zmínit i důležitý mechanismus, který je nazván „designated forwarder“ (DF), který zabraňuje, aby se multicast pakety dostaly do smyčky. Na každém segmentu bude zvolen směrovač, který bude nastaven jako DF (volí RP pomocí metriky) [4]. „Rendezvous Point“ (RP) - místo setkání pro zdroje a příjemce multicast provozu (obecně známé místo pro obě strany), jedná se o společný kořen pro sdílené stromy, zdroje multicastu posílají provoz na tento bod a ten je přeposílá přes sdílené stromy všem členům skupin, díky RP se lépe využijí síťové zdroje, ale nezaručuje optimální cestu.
květen 2013
3/13
2. PRAKTICKÁ ČÁST Úkolem celého projektu, byl princip a konfigurace PIM-BIDIR. Následně měla proběhnout studie (viz teoretické část) včetně sledování a zdokumentování zpráv protokolu PIM, popřípadě uvést užitečné příkazy pro budování a údržbu distribučního stromu. Pro simulaci zapojení jsme použili profesionální nástroj GNS3 (Graphic Network Simulator 3), který je možné stáhnout na stránkách www.gns3.net. Tento nástroj je zcela zdarma, bylo však nutné obstarat požadovaný IOS (c3640-ik9o3s-mz124-13.image). Nyní již přistoupíme ke konfiguraci námi zadané topologie.
2.1 Topologie Naším prvořadým úkolem bylo vymyslet topologii, která by splňovala požadavky na správný chod protokolu PIM-BIDIR. Tím je hlavně myšleno, aby bylo možno co nejlépe otestovat a zaznamenat výsledky z celé topologie. Na obrázku 1 je zobrazeno zapojení celé topologie, včetně adresování jednotlivých rozhraní. Jako RP jsme si zvolili směrovač R3.Zapojení by mohlo být pochopitelně složitější. Nicméně pro naše účely (odchytávání provozu, konfigurace) splňuje veškeré požadavky.
Obrázek 2 – topologie pro PIM-BIDIR
květen 2013
4/13
2.2 Konfigurace síťových prvků Konfigurací je myšleno nadefinování jednotlivých rozhraní směrovačů a pochopitelně samotného PIM-BIDIR. Úvodem je nutné se zmínit, že pro metodu distribuce jsme si vybrali AutoRP (pro které skupiny bude přisouzen RP). V této kapitole si ukážeme kompletní konfigurace jednotlivých prvků, včetně jednoduchých komentářů. Směrovač R1: ip multicast-routing ! interface FastEthernet 1/0 ip pim sparse-dense-mode ! interface Serial 0/0 ip pim sparse-dense-mode ! ip pim bidir-enable
//konfigurace multicastu //konf. rozhraní FE //konf. rozhraní Serial //povolení PIM-BiDir
Směrovač R2: ip multicast-routing ! interface FastEthernet 0/0 ip pim sparse-dense-mode ! interface FastEthernet 1/0 ip pim sparse-dense-mode ! interface Serial 2/0 ip pim sparse-dense-mode ! ip pim bidir-enable
//konfigurace multicastu //konf. rozhraní FE //konf. rozhraní FE //konf. rozhraní Serial //povolení PIM-BiDir
Směrovač R3 (RP): ip multicast-routing ! interface Loopback0 ip pim sparse-dense-mode ! interface FastEthernet 0/0 ip pim sparse-dense-mode ! interface Serial 1/0 ip pim sparse-dense-mode ! interface Serial 1/1 ip pim sparse-dense-mode ! ip pim bidir-enable ip pim send-rp-announce Loopback0 scope 16 bidir ip pim send-rp-discovery Loopback0 scope 16 !
//konfigurace multicastu //konf. virtuálního rozhraní //konf. rozhraní FE //konf. rozhraní Serial //konf. rozhraní Serial //povolení PIM-BiDir //viz úvod kapitoly //viz úvod kapitoly
Směrovač R4: ip multicast-routing ! interface FastEthernet 0/0 ip pim sparse-dense-mode ip igmp join-group 239.1.1.5 ! ip pim bidir-enable
květen 2013
//konfigurace multicastu //konf. rozhraní FE //přidání směrovače do skupiny //povolení PIM-BiDir
5/13
Směrovač R5: ip multicast-routing ! interface FastEthernet 0/0 ip pim sparse-dense-mode ip igmp join-group 239.1.1.5 ! ip pim bidir-enable
//konfigurace multicastu //konf. rozhraní FE //přidání směrovače do skupiny //povolení PIM-BiDir
2.3 Ověření funkčnosti konfigurace K dispozici máme několik způsobů, jak můžeme ověřit správně nakonfigurovaný PIMBIDIR. K tomu nám slouží několik užitečných příkazů (vždy první řádek výpisu). V této kapitole si ukážeme jen některé. Funkčnost mapování R1 (RP): Pozn.: Červenou označíme důležité (a správně nakonfigurované) informace. (Hostname: Router). Router#show ip pim rp mapping PIM Group-to-RP Mappings This system is an RP (Auto-RP) This system is an RP-mapping agent (Loopback0) Group(s) 224.0.0.0/4 RP 172.16.32.3 (?), v2v1, bidir Info source: 172.16.32.3 (?), elected via Auto-RP Uptime: 02:45:39, expires: 00:02:50
Kdo je DF na aktuálním segmentu: Pozn.: DF – Viz. Kapitola 1.2 - Jediný v segmentu, který může zasílat multicast k RP. V tabulce vždy označován hvězdičkou*. Jedná se o výpis ze směrovače R1. (Hostname: Router). Router#show ip pim interface df * implies this system is the DF Interface RP FastEthernet1/0 172.16.32.3 Serial0/0 172.16.32.3
DF Winner *192.168.1.11 10.0.0.5
Metric 65 0
Uptime 02:31:55 02:32:00
Generování trafficu pomocí mroute na R3 (RP): Pozn.: Důležité informace opět označíme červeně. (Hostname: Router). Null – jsme na RP. Router#show ip mroute 239.1.1.5 IP Multicast Routing Table Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected, L - Local, P - Pruned, R - RP-bit set, F - Register flag, T - SPT-bit set, J - Join SPT, M - MSDP created entry, X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement, U - URD, I - Received Source Specific Host Report, Z - Multicast Tunnel, z - MDT-data group sender, Y - Joined MDT-data group, y - Sending to MDT-data group Outgoing interface flags: H - Hardware switched, A - Assert winner Timers: Uptime/Expires Interface state: Interface, Next-Hop or VCD, State/Mode (*, 239.1.1.5), 02:43:31/00:03:29, RP 172.16.32.3, flags: BC
květen 2013
6/13
Bidir-Upstream: Null, RPF nbr 0.0.0.0 Outgoing interface list: FastEthernet0/0, Forward/Sparse-Dense, 02:43:08/00:03:05 Serial1/0, Forward/Sparse-Dense, 02:43:31/00:03:29
Generování trafficu pomocí mroute na R2: Pozn.: Důležité informace opět červeně. (Hostname: Router). Tentokrát už nebude Null. Bude tam upstream k RP. Router#show ip mroute 239.1.1.5 IP Multicast Routing Table Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected, L - Local, P - Pruned, R - RP-bit set, F - Register flag, T - SPT-bit set, J - Join SPT, M - MSDP created entry, X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement, U - URD, I - Received Source Specific Host Report, Z - Multicast Tunnel, z - MDT-data group sender, Y - Joined MDT-data group, y - Sending to MDT-data group Outgoing interface flags: H - Hardware switched, A - Assert winner Timers: Uptime/Expires Interface state: Interface, Next-Hop or VCD, State/Mode (*, 239.1.1.5), 02:48:55/00:02:17, RP 172.16.32.3, flags: BC Bidir-Upstream: Serial2/0, RPF nbr 10.0.0.2 Outgoing interface list: FastEthernet0/0, Forward/Sparse-Dense, 02:48:55/00:02:36 Serial2/0, Bidir-Upstream/Sparse-Dense, 02:48:55/00:00:00
2.4 Údržba a monitoring Máme několik možností jak provádět monitoring a údržbu. Nejjednodušší bude použít stávající příkazy: Router# show ip pim interface [type number] [df | count] [rp-address] - Zobrazí informace o zvolené DF pro každé rozhraní RP + jiné informace (viz použití na směrovač R3): Router#show ip pim interface Address
Interface
172.16.32.3 192.168.10.1 10.0.0.2 10.0.0.5
Loopback0 FastEthernet0/0 Serial1/0 Serial1/1
Ver/ Mode v2/SD v2/SD v2/SD v2/SD
Nbr Count 0 1 1 1
Query Intvl 30 30 30 30
DR Prior 1 1 1 1
DR 172.16.32.3 192.168.10.5 0.0.0.0 0.0.0.0
Router# show ip pim rp [mapping | metric] [rp-address] – Zobrazí informace o nastavených RP směrovačích + jiné informace (viz použití na směrovač R3): Router#show ip pim rp Group: 239.1.1.5, RP: 172.16.32.3, v2, v1, next RP-reachable in 00:01:05
Další možností monitorování může být nějaký externí program. O takovém se budeme bavit v následující kapitole.
květen 2013
7/13
2.5 Zachytávání provozu pomocí Wireshark Součástí simulátoru GNS3 je i právě tento profesionální nástroj pro sledování provozu a odchytávání paketů v síti. V simulátoru jen stačí kliknout na nějakou linku a začít sledovat provoz. Následující obrázky zachycují provoz mezi jednotlivými směrovači. Obrázky většinou ukazují jen „výřezy“ z daného provozu. Důležité jsou pak pakety protokolu PIMv2.
Obrázek 3 – odfiltrovaný provoz pro PIMv2 mezi R3(RP) - R2
Obrázek 4 – odfiltrovaný provoz pro IGMP mezi R1 - R2 Jen pro úplnost uvádíme, že třetí sloupec je zdrojová adresa, čtvrtý sloupec pak cílová adresa. Pátý sloupec je název daného protokolu, pak následuje délka paketu a doplňující informace. Následující kapitola je věnována protokolu PIMv2.
2.5.1 Paket protokolu PIMv2
Obrázek 5 – hlavička paketu PIMv2 [5]
květen 2013
8/13
PIM Version - Ve hlavičce zabírá 4 bity. Má vždy hodnotu 2. Můžeme se o tom přesvědčit přímo z Wiresharku. Pokud rozklikneme doplňující informace o paketu v položce Protocol Independent Multicast najdeme hodnotu 2 [5]. Type - Ve hlavičce zabírá 4 bity. Typ specifikující PIM zprávu. Jak už jsme mohli poznat z obrázků v předchozí kapitole, existuje několik typů. Tyto typy jsou následující [5]: 0 = Hello – vysílá multicastem do všech PIM směrovačů 1 = Register – vysílá unicastem do RP 2 = Register-Stop – vysílá unicastem do zdroje, který poslal registrační paket (tedy paket Register) 3 = Join/Prune – vysílá multicastem do všech PIM směrovačů 4 = Bootstrap – vysílá multicastem do všech PIM směrovačů 5 = Assert – vysílá multicastem do všech PIM směrovačů 6 = Graft – vysílá unicastem do RP 7 = Graft-Ack – vysílá unicastem do zdroje, který poslal paket Graft 8 = Candidate-RP-Advertisement - vysílá unicastem do domény BSR Některé typy zpráv (například zprávy Hello a Join/Prune) si podrobněji popíšeme v kapitole 2.5.2. Reserved - Ve hlavičce zabírá 8 bitů. Nastaven na nulu. Ignorován po přijetí. Checksum - Neboli kontrolní součet. V hlavičce zabírá 16 bitů.
2.5.2 Zprávy protokolu PIMv2 Zpráva typu Hello – posílají se periodicky mezi jednotlivými sousedy. Tato zpráva informuje směrovače jaké rozhraní má sousední směrovač. Když směrovač příjme Hello zprávu, uloží si adresu sousedního směrovače a nastaví na toto rozhraní DR. Části zprávy Hello [6][7]: - OptionType – zabírá 16 bitů. Je zde uveden číslo vlastnosti, která je v poli OptionValue. - OptionLength – zabírá 16 bitů. Jedná se o délku vlastnosti OptionValue v bajtech. - OptionValue – zabírá 32 bitů. Nabývá různých hodnot. Například Holdtime je doba, po kterou si musí doručitel nechat zaznamenané dosažitelné sousedy. Vše se může v paketu několikrát opakovat. Více na obrázku 5.
Obrázek 6 – paket zprávy typu Hello [7]
květen 2013
9/13
Zpráva typu Register – zpráva je odeslána DR do RP, když je potřeba odeslat multicast paket do stromu. Jako zdrojová adresa je tedy uvedena adresa DR a cílovou adresou je adresa RP. Nyní si popíšeme jednotlivé části zprávy Register [6]: - B – zabírá jeden bit. Jedná se tzv. „Border bit“. Pokud je směrovač nastaven jako DR pro zdroj, (který je připojen přímo) je hodnota nastavena na 0. V opačném případě je nastavena na 1. - N – zabírá jeden bit. Jedná se o tzv. „Null-Register bit“. Nabývá hodnot 0 nebo 1. - Multicast data packet – originální paket odeslaný zdrojem. - Reserved – popsán v kapitole 2.5.1
Obrázek 7 – paket zprávy typu Register [7]
Zpráva typu Graft – formát zprávy je stejný jako u Join/Prune jen typ obsahuje číslo 6. Zpráva typu Graft-Ack – tato zpráva je odesílána jako odpověď na zprávu typu Graft. Formát zprávy je stejný jako u Join/Prune jen typ obsahuje číslo 7. Zpráva typu Join/Prune – tyto zprávy jsou posílány pro připojení nebo odříznutí části větve do multicastového stromu. Join je posílán ke stavbě sdílených stromů nebo zdrojových stromů. Kdež to Prune je posílán, když nějaký člen opustí skupinu. Složení paketu tohoto typu můžeme vidět na obrázku 7. Části zprávy Join/Prune [5][7]: - Upstream Neighbor Address – zabírá 32 bitů. Adresa souseda, který bude cílem zprávy. - Holdtime – zabírá 16 bitů. Čas platnosti Join/Prune. - Number of Groups – zabírá 8 bitů. Počet mluticastových skupin obsažených ve zprávě. - Multicast Group Address – zabírá 32 bitů. Adresa multicastové skupiny. - Number of Joined Sources – zabírá 16 bitů. Počet připojených zdrojových adres pro danou skupinu. - Joined Source Address 1..n – zabírá 32 bitů. Seznam obsahující zdroje pro danou skupinu. - Number of Pruned Sources – zabírá 16 bitů. Počet oddělených adres pro danou skupinu. - Prunes Source Address 1..n – zabírá 32 bitů. Seznam obsahující zdroje pro danou skupinu, kde směrovač nezasílá multicastové pakety.
květen 2013
10/13
Obrázek 8 – paket zprávy typu Join/Prune [5]
květen 2013
11/13
3. ZÁVĚR Hlavním úkolem tohoto projektu bylo sledování a zdokumentování zpráv protokolu PIMv2. Zvolili jsme si libovolnou topologii, kterou jsme nakonfigurovali pomocí technologie PIM-BIDIR. Pomocí programu Wireshark jsme odchytávali jednotlivé zprávy protokolu PIM, které jsme popsali v kapitole 2.5.2.
květen 2013
12/13
Použitá literatura [1] IP multicast. In Wikipedia the free ecyklopedia[Online]. St. Petersburg, Florida: Wikipedia foundation, Inc., 14 September 2002, Last modified on 2 May 2013[cit. 2012-05-22]. Dostupné z www: [2] http://upload.wikimedia.org/wikipedia/commons/3/30/Multicast.svg [3] Protocol independent multicast. In Wikipedia: the free ecyklopedia [Online]. St. Petersburg, Florida: Wikipedia foundation, Inc., 14 September 2002, Last modified on 24 April 2013[cit. 201205-22]. Dostupné z www: < http://en.wikipedia.org/wiki/Protocol_Independent_Multicast> [4] Anthony Sequeira (2012): Bidirectional PIM (BIDIR-PIM). [Online]. Dostupné z www: [5] Zarar. (2009): Pim packet formats [Online]. Dostupné z www: [6] Deering,Estrin,Farinacci,Jacobson,Helmy,Meyer,Wei (1999): Protocol independent multicast Version 2 Dense mode Specification. [Online]. Dostupné z www: [7] Williamson, Beau. (2000): Developing IP multicast networks. Cisco Press, Indianapolis, ISBN: 1-57870-077-9
květen 2013
13/13