PIM-protokoll on protokollide kogum, mis edastab multikaastivĂ”rgus rikutud marsruuterite vahel. Naabrussuhted luuakse sarnaselt dĂŒnaamiliste marsruutimisprotokollidega. PIMv2 saatab iga 30 sekundi jĂ€rel Hello sĂ”numid reserveeritud multikaast aadressile 224.0.0.13 (All-PIM-Routers). SĂ”num sisaldab Hold Timereid â tavaliselt 3,5 korda Hello Timer, mis tĂ€hendab vaikimisi 105 sekundit.
PIM kasutab kahte pĂ”hireĆŸiimi â Dense ja Sparse mode. Alustame Dense mode'ist.
Allika-pÔhised jaotustead.
Dense-mode reĆŸiimi on mĂ”istlik kasutada palju kliente erinevatest multikaasgruppidest. Kui marsruuter saab multikaasiliiklust, kontrollib ta kĂ”igepealt selle RPF-reegli jĂ€rgi. RPF â see reegel kontrollib multikaasi allikat unikaastia marsruuditabeliga. Liiklus peab tulema sellele liidesele, mille taga on see host unikaastia marsruuditabeli kohaselt. See mehhanism lahendab multikaasi edastamise kĂ€igus tekkida vĂ”ivate silmade probleemi.
R3 multicast sĂ”numist tuvastab multicasti allika (Source IP) ja kontrollib R1 ja R2 kahte voogu oma unikaalses tabelis. Voog, mis tulevast liidese kaudu edasi saadetakse (R1-st R3-ni), edastatakse edasi, samas kui R2 voog lĂŒkatakse tagasi, kuna multicasti allikasse jĂ”udmiseks tuleb pakette edastada S0/1 kaudu.
KĂŒsimus, mis juhtub siis, kui teil on kaks ekvivalentset marsruuti sama meetriga? Sellisel juhul valib marsruuter need marsruudid next-hop'i pĂ”hjal. KĂ”rgema IP-aadressiga marsruut on vĂ”itnud. Kui on vaja seda kĂ€itumist muuta, vĂ”ib kasutada ECMP-d. Lisainfot. .
PĂ€rast RPF reegli kontrollimist saadab marsruuter multicast-paketti kĂ”igile oma PIM-naabritele, vĂ€lja arvatud see, kellelt pakett saadi. ĂlejÀÀnud PIM-marsruuterid kordavad seda protsessi. Tee, mida multicast-pakett lĂ€bib allikast kuni lĂ”ppsaajateni, moodustab puu, mida nimetatakse â allikaspĂ”hiseks jaotuspuiduks, lĂŒhima tee puuks (SPT), allikapuu. Kolm erinevat nime, valige ĂŒks.
Kuidas lahendada kĂŒsimust, et mĂ”ned ruuterid ei saanud mĂ”nedest multimeedia voogudest ja ei suuna neid kellelegi, samas kui kĂ”rgem ruuter saadab. Selleks on vĂ€lja mĂ”eldud Prune mehhanism.
Prune sÔnum.
NÀiteks R2 jÀtkab R3-le multimeedia saatmist, kuigi R3 viskab selle RPF reegli tÔttu kÔrvale. Miks koormata kanalit? R3 saadab PIM Prune sÔnumi ja R2, pÀrast selle sÔnumi vastuvÔttu, eemaldab S0/1 liidese (vÀljuvate liideste loendist) antud voogude jaoks, loenditest, millest seda liiklust tuleb saata.
Allpool on PIM Prune sÔnumi formaalne definitsioon:
PIM Prune sĂ”num saadetakse ĂŒhelt ruuterilt teisele, et sundida teist ruuteri eemaldama Prune'i vastuvĂ”tmise linki konkreetsest (S,G) SPT-st.
PÀrast Prune sÔnumi vastuvÔtmist seab R2 Prune taimeri kolme minuti peale. Kolme minuti möödudes alustab ta taas liikluse saatmist, kuni saab jÀrgmise Prune sÔnumi. See kehtib PIMv1 puhul.
PIMv2-s on lisatud oleku uuendamise taimer (vaikimisi 60 sekundit). Kui R3-lt saadetakse Prune sÔnum, kÀivitub see taimer R3-l. PÀrast taimeri aegumist saadab R3 oleku uuendamise sÔnumi, mis lÀhtestab R2-l 3-minutilise Prune Taimeri antud grupi jaoks.
Prune sÔnumi saatmise pÔhjused:
- Kui multicast-paketti ei lÀbitud RPF-i kontrolli.
- Kui ei ole kohapealseid ĂŒhendatud kliente, kes on taotlenud multicast-gruppi (IGMP Join), ning pole PIM naabreid, kellele multicast-trafikut edastada (Non-prune Interface).
Grafti sÔnum.
Kujutame ette, et R3 ei soovinud R2-lt trafikuit, saatis Prune ja sai multicastit R1-elt. Kuid Àkki katkeb kanal R1-R3 vahel ja R3 jÀÀb ilma multicastita. Tuleb oodata 3 minutit, kuni R2-l aegub Prune Timer. 3 minutit on liiga kaua oodata, et seda mitte teha, tuleb saata sÔnum, mis kohe viib antud liini S0/1 R2-lt pruned-olekust vÀlja. Selliseks sÔnumiks on Grafti sÔnum. PÀrast Grafti sÔnumi vastuvÔtmist saadab R2 vastuseks Graft-ACK.
Prune Override.
Vaadakem sellele skeemile. R1 edastab multikaast segmendis, kus on kaks ruuteri. R3 saab ja edastab liiklust, R2 saab, kuid edastamiseks pole kedagi. Ta saadab R1-ile Prune sĂ”numi antud segmendis. R1 peab Fa0/0 loendist eemaldama ja lĂ”petama edastamise antud segmendis, aga mis juhtub R3-ga? R3 on samas segmendis, sai samuti selle Prune sĂ”numi ja mĂ”istis kogu olukorra tragöödia. Enne kui R1 lĂ”petab edastamise, seadistab ta taimeri 3 sekundiks ja lĂ”petab edastamise 3 sekundi pĂ€rast. 3 sekundit â just nii palju aega on R3-l, et oma multikaast mitte kaotada. SeetĂ”ttu saadab R3 niipea kui vĂ”imalik Pim Join sĂ”numi antud rĂŒhmale ja R1 ei mĂ”tle enam lĂ”petamisele. Join sĂ”numitest allpool.
Assert Message.
Kujutage ette olukorda, kus kahe ruuteri kaudu edastatakse sama voog ĂŒhes vĂ”rgus. MĂ”lemad saavad selle sama voolu allikast ning edastavad selle e0 liidese kaudu ĂŒhte vĂ”rku. SeetĂ”ttu peavad nad mÀÀrama, kes on selle vĂ”rgu jaoks ainus edastaja. Selleks kasutatakse Teavitusi. Kui R2 ja R3 tuvastavad dubleeritud mitme saatja liiklust, st et R2 ja R3 saavad mitme saatja voogu, mida nad ise edastavad, mĂ”istavad ruuterid, et siin on midagi valesti. Sellisel juhul saadavad ruuterid Teavituse, mis sisaldab haldusvahemaad ja marsruudi mÔÔdikut, mille kaudu saavutatakse mitme saatja allikas â 10.1.1.10. VĂ”itja mÀÀratakse jĂ€rgmiselt:
- See, kelle haldusvahemik on madalam.
- Kui haldusvahemikud on vÔrdsed, siis see, kellel on madalam mÔÔdik.
- Kui ka siin on vÔrdne, siis see, kellel on kÔrgem IP aadress vÔrgus, kuhu nad seda mitme saatjat edastavad.
Selles hÀÀletuses vÔitnud ruuter muutub mÀÀratud ruuteriks (Designated Router). DR valimiseks kasutatakse samuti PIM Hello-sid. Artikli alguses nÀidati PIM Hello sÔnumit, kus vÔib mÀrgata DR vÀlja. VÔitja on see, kelle IP aadress on sellel lingil kÔrgem.
Kasulik tabel:
MROUTE tabel.
PIM-protokolli algsete ĂŒlevaatuste jĂ€rel peame selgeks saama, kuidas töötada multikaastabeliga. Mroute tabelis hoitakse teavet selle kohta, milliseid voogusid on kliendid taotlenud ja millised voogud tulevad multikaasserveritest.
NĂ€iteks, kui mĂ”nel liideseal saabub IGMP Membership Report vĂ”i PIM Join, lisatakse marsruutimistabelisse kirje tĂŒĂŒpi (*, G):
See kirje nĂ€itab, et on saabunud pĂ€ring voogudele aadressilt 238.38.38.38. DC lipp tĂ€hendab, et multikaas töötab tihedas reĆŸiimis (Dense mode) ja C tĂ€hendab, et saaja on ĂŒhendatud otse marsruuteriga, st marsruuter on saanud IGMP Membership Report'i ja PIM Join'i.
Kui kirje on tĂŒĂŒpi (S, G), siis tĂ€hendab see, et meil on multikaasivoog:
S-vĂ€ljal on 192.168.1.11, meil on mÀÀratud multikaallika IP-aadress, just tema kontrollitakse RPF-reegliga. Probleemide korral tuleb kĂ”igepealt kontrollida unicast-tabelit, et leida marsruut allika juurde. Incoming Interface vĂ€ljal nĂ€idatakse liidest, mille kaudu multikaallikad tulevad. Unicast marsruuditabelis peab allikani viiv marsruut viitama siin nĂ€idatud liidesele. Outgoing Interface vĂ€ljal nĂ€idatakse, kuhu multikaal suunatakse. Kui see on tĂŒhi, tĂ€hendab see, et ruuterile ei ole selle liikluse jaoks pĂ€ringuid saabunud. TĂ€iendavat teavet kĂ”igi lippude kohta leiate .
PIM Sparse-mode.
Sparse-mode strateegia on vastupidine Dense-mode'le. Kui Sparse-mode saab multikaaliliiklust, suunab ta liikluse ainult nendele liidesele, kus on olnud pÀringud selle voogu, nÀiteks Pim Join vÔi IGMP Report sÔnumid, mis pÀrivad seda liiklust.
SM ja DM sarnased elemendid:
- NaaberĂŒhendused luuakse nagu PIM DM-is.
- RPF-reegel töötab.
- DR valik on sarnane.
- Prune Overrides mehhanism ja Assert sÔnumid on sarnased.
EttevĂ”tte vĂ”rgus, et hallata, kellele, kus ja millist multicastingi liiklust vaja on, on vajalik ĂŒhine teabe keskus. Selleks keskuseks on meil Rendezvous Point (RP). KĂ”ik, kes soovivad mingisugust multicastingi liiklust vĂ”i on hakanud saama multicastingi liiklust allikast, saadavad selle RP-le.
Kui RP saab multicastingi liiklust, siis saadab see selle marsruuteritele, kes on varem seda liiklust kĂŒsinud.
Kujutame ette sellist topoloogiat, kus RP on R3. Niipea kui R1 saab liiklust S1-lt, kapseldab ta selle multicastingi paketi unicast PIM Register sĂ”numiks ja saadab selle RP-le. Kuidas ta teab, kes on RP? Antud juhul on see seadistatud staatiliselt, kuid dĂŒnaamilise RP seadistamise teemal rÀÀgime hiljem.
ip pim rp-address 3.3.3.3
RP vaatab, kas on olnud teavet kellegi kĂ€est, kes sooviks selle liikluse saada? Oletame, et ei ole. Siis saadab RP R1-le PIM Register-Stop sĂ”numi, mis tĂ€hendab â et keegi ei vaja seda multicast'i, registreerimine on keelatud. R1 ei saada multicast'i. Kuid host-allika multicast saadab selle, nii et R1, pĂ€rast Register-Stopi saamist, kĂ€ivitab Register-Suppression timer'i, mis kestab 60 sekundit. 5 sekundit enne selle taimeri lĂ”ppemist saadab R1 tĂŒhja Register sĂ”numi koos Null-Register bit'iga (st ilma kapseldatud multicast paketi). RP kĂ€itub jĂ€rgmiselt:
- Kui saajaid ei olnud, ei ole neid ka nĂŒĂŒd, siis vastab ta Register-Stop sĂ”numiga.
- Kui saajad on ilmunud, siis ei vasta ta sellele kuidagi. R1, kui ta ei saa 5 sekundi jooksul registreerimisele keeldumist, rÔÔmustab ja saadab Register sÔnumi kapseldatud multicast'iga RP-le.
Kuidas multicast jĂ”uab RP-ni, oleme enam-vĂ€hem aru saanud, nĂŒĂŒd proovime vastata kĂŒsimusele, kuidas RP edastab liiklust saajateni. Siin on vaja tutvustada uut mĂ”istet â root-path tree (RPT). RPT on puu, mille juured on RP-s, ulatudes saajateni ja hargnedes igas PIM-SM ruuteris. RP loob selle, saades PIM Join sĂ”numeid ja lisab puusse uue meie. Ja nii teeb iga madalam ruuter. Ăldine reegel on jĂ€rgmine:
- Kui PIM-SM ruuter saab PIM Join sÔnumi mÔnel liidesel, vÀlja arvatud liides, mille taga on RP, lisab ta puusse uue haru.
- Haru lisatakse ka siis, kui PIM-SM ruuter saab IGMP Membership Reporti vahetult ĂŒhendatud hostilt.
Kujutame ette, et meil on klient, kes kasutab multicasti ruuteris R5 aadressi 228.8.8.8. Kui R5 saab IGMP liitumisraporti hostilt, saadab R5 PIM Join'i RP suunas ning lisab liidese puusse, mis vaatab hosti poole. SeejĂ€rel R4 saab PIM Join'i R5-lt, lisab liidese Gi0/1 puusse ja saadab PIM Join'i RP suunas. LĂ”puks RP (R3) saab PIM Join'i ja lisab Gi0/0 puusse. Nii toimub multicasti saaja registreerimine. Meil tekib puu, mille juured on R3-Gi0/0 â R4-Gi0/1 â R5-Gi0/0.
PÀrast seda saadetakse PIM Join R1-le ja R1 hakkab saatma multicasti liiklust. On oluline mÀrkida, et kui host taotles liiklust enne, kui multicasti edastus algas, siis RP ei saadet PIM Join'i ja ei saadet midagi R1 suunas.
Kui juhuslikult, kui multicasti saadetakse, lÔpetab host selle saamise soovi, siis kui RP saab PIM Prune'i liidese Gi0/0 pealt, saadab ta koheselt PIM Register-Stop'i R1-le ning seejÀrel PIM Prune'i sÔnumi liidese Gi0/1 kaudu. PIM Register-Stop saadetakse unicastina aadressile, millest PIM Register tuli.
Nagu varem rÀÀkisime, kui ruuter saadab PIM Join teisele, nÀiteks R5-le R4-l, siis R4 lisab sissekande:
Ja kÀivitatakse taimer, mille mÀÀramist R5 peab pidevalt PIM Join sÔnumeid saatma, vastasel juhul R4 jÀtab selle vÀljamineku loendist vÀlja. R5 saadab iga 60 PIM Join sÔnumit.
LĂŒhimaa puu vahetus.
Lisame R1 ja R5 vahele liidese ning vaatame, kuidas liiklus sellise topoloogia korral voolab.
Oletame, et liiklus saadeti ja saadi vana skeemi jĂ€rgi R1-R2-R3-R4-R5 ning siis ĂŒhendame ja seadistame liidese R1 ja R5 vahel.
Esite, meil on uuendatud unicast-routed tabel R5-s ning nĂŒĂŒd saavutatakse vĂ”rk 192.168.1.0/24 R5 Gi0/2 kaudu. NĂŒĂŒd, kui R5 saab multikaid Gi0/1 liidese kaudu, mĂ”istab ta, et RPF reegel ei ole tĂ€idetud, seega oleks mĂ”istlikum saada multikaid Gi0/2 kaudu. Ta peab RPT-st lahti ĂŒtlema ja looma lĂŒhema puu, mida nimetatakse lĂŒhimaks tee puuks (SPT). Selleks saadab ta Gi0/2 kaudu PIM Join sĂ”numi R1-le ja R1 hakkab saatma multikaid ka Gi0/2 kaudu. NĂŒĂŒd peab R5 RPT-st lahti ĂŒtlema, et mitte saada kahte koopiat. Selleks saadab ta Prune sĂ”numi, nĂ€idates allika IP-aadressi ja lisades spetsiaalseBit - RPT-bit. See tĂ€hendab, et ei ole vaja mulle liiklust saata, mul on siin paremad puud. RP saadab samuti R1 suunas PIM Prune sĂ”numeid, kuid ei saada Register-Stop sĂ”numit. Veel ĂŒks eripĂ€ra: R5 hakkab pidevalt saatma PIM Prune RP-le, kuna R1 saadab iga minuti tagant PIM Register RP-le. RP, kuni ei tule uusi huvilisi, nagu see liiklus, vastab talle keeldumisega. R5 teavitab RP-d, et ta jĂ€tkab multika saamist lĂ€bi SPT.
DĂŒnaamiline RP otsing.
Auto-RP.
See tehnoloogia on Cisco omand ja ei ole eriti populaarne, kuid siiski on elujÔuline. Auto-RP töö koosneb kahest pÔhietapist:
1) RP saadab RP-Announce sÔnumeid reserveeritud aadressile 224.0.1.39, kuulutades end RP-ks kas kÔigi vÔi teatud gruppide jaoks. SÔnumit saadetakse iga minuti jÀrel.
2) On vajalik RP mapping agent, mis saadab RP-Discovery sĂ”numeid, mĂ€rkides, milliste gruppide jaoks peab konkreetne RP olema kuulatav. Just sellest sĂ”numist saavad tavalised PIM ruuterid oma RP-d mÀÀrata. Mapping Agent vĂ”ib olla nii RP ruuter kui ka mĂ”ni eraldi PIM ruuter. RP-Discovery saadetakse aadressile 224.0.1.40 ĂŒhe minuti intervalliga.
Vaatame protsessi lÀhemalt:
Seadistame R3 RP-ks:
ip pim send-rp-announce loopback 0 scope 10
R2 kui mapping agent:
ip pim send-rp-discovery loopback 0 scope 10
Ja kÔikidel teistel ootame RP-d lÀbi Auto-RP:
ip pim autorp listener
Niipea kui oleme R3 seadistanud, hakkab ta saatma RP-Announce:
Ja R2, pĂ€rast mapping agendiks seadmist, hakkab ootama RP-Announce sĂ”numeid. Alles siis, kui ta leiab vĂ€hemalt ĂŒhe RP, hakkab ta saatma RP-Discovery:
Seega, kui tavalised marsruutorid (PIM RP Listener) saavad selle teate, teavad nad, kust RP-d otsida.
Ăks peamisi Auto-RP probleeme on see, et RP-Announce ja RP-Discovery sĂ”numite saamiseks peab saatma PIM Join aadressidele 224.0.1.39-40, kuid selleks, et saata, tuleb teada, kus RP paikneb. Klassikaline muna ja kana probleem. Selle probleemi lahendamiseks loodi PIM Sparse-Dense-Mode reĆŸiim. Kui marsruutor ei tea RP-d, töötab see tiheda reĆŸiimi (Dense-mode) reĆŸiimis, kui teab, siis hĂ”redas reĆŸiimis (Sparse-mode). Kui tavaliste marsruutorite liidetes on seadistatud PIM Sparse-mode ja kĂ€sk ip pim autorp listener, siis töötab marsruutor tiheda reĆŸiimi ainult Auto-RP protokolli multikastiks (224.0.1.39-40).
BootStrap Router (BSR).
See funktsioon töötab sarnaselt Auto-RP-le. Iga RP saadab sÔnumi mappimise agendile, kes kogub mappimise teavet ja edastab selle seejÀrel kÔigile teistele marsruutoritele. Kirjeldame protsessi samamoodi nagu Auto-RP puhul:
1) Niipea kui seadistame R3 RP kandidaatideks, kÀsuga:
ip pim rp-candidate loopback 0
R3 ei tee midagi, et alustada spetsiifiliste sÔnumite saatmist; selleks peab ta esmalt leidma mapping agent'i. Niisiis, liigume teise sammu juurde.
2) Seadistame R2 mapping agent'ina:
ip pim bsr-kandidaat loopback 0
R2 hakkab saatma PIM Bootstrap sÔnumeid, kus ta mÀÀratleb end mapping agent'ina:
SÔnum saadetakse aadressile 224.0.0.13, mida PIM protokoll kasutab ka oma teiste sÔnumite jaoks. Ta saadab neid igas suunas ja seetÔttu ei esine kana ja muna probleemi, nagu see oli Auto-RP-s.
3) Kui RP saab sÔnumi BSR ruuterilt, saadab ta kohe unicast sÔnumi aadressile BSR ruuter:
PÀrast seda saadab BSR, saades teavet RP kohta, need multikastina aadressile 224.0.0.13, mida kuulavad kÔik PIM ruuterid. SeetÔttu ei ole BSR-is analoogset kÀsku ip pim autorp listener tavalistele ruutereile.
Anycast RP koos Multicast Source Discovery Protocol'i (MSDP) abil.
Auto-RP ja BSR vĂ”imaldavad meil jagada koormust RP-le jĂ€rgmiselt: igal multika grupil on ainult ĂŒks aktiivne RP. Ăhe multika rĂŒhma jaoks ei saa koormust jagada mitme RP vahel. MSDP teostab selle, andes RP marsruuteritele sama IP-aadressi maskiga 255.255.255.255. MSDP kogub teavet ĂŒhe meetodi abil: staatika, Auto-RP vĂ”i BSR.
Pildil on meil Auto-RP konfiguratsioon koos MSDP-ga. MĂ”lemad RP-d on seadistatud IP-aadressiga 172.16.1.1/32 Loopback 1 liidesel ja seda kasutatakse kĂ”igi rĂŒhmade jaoks. RP-Announce'i ajal rÀÀgivad mĂ”lemad marsruuterid endist, viidates sellele aadressile. Auto-RP mapping agent, saades teavet, levitab RP-Discovery teavet RP kohta aadressiga 172.16.1.1/32. Aadressi 172.16.1.1/32 kohta rÀÀgime marsruuteritele IGP kaudu. Seega kĂŒsivad vĂ”i registreerivad PIM marsruuterid voogusid vastavalt sellele RP-le, mis on mĂ€rgitud next-hop-ina marsruudile aadressile 172.16.1.1/32. MSDP protokoll on loodud RP-de jaoks, et vahetada teavet multika kohta.
Vaatleme jÀrgmist topoloogiat:
Switch6 suunab liiklust aadressile 238.38.38.38 ja sellest teab praegu ainult RP-R1. Just sellepÀrast on Switch7 ja Switch8 selle grupi kohta pÀrinud. Ruuterid R5 ja R4 saadavad PIM Join R1 ja R3, vastavalt. Miks? R5 marsruut 13.13.13.13 suunab R1, kasutades IGP mÔÔdet, nagu R4 samuti.
RP-R1 teab voogust ja hakkab seda suunama R5 suunas, kuid R4 ei tea sellest midagi, kuna R1 ei kavatse seda lihtsalt nii saata. SeetÔttu on vajalik MSDP. Seadistame selle R1 ja R5 peal:
ip msdp peer 3.3.3.3 connect-source Loopback1 R1-l
ip msdp peer 1.1.1.1 connect-source Loopback3 R3-l
Nad loovad teineteise vahel seansi ja kui saavad mÔne voolu, teavitavad nad sellest oma RP naabrile.
RP-R1 saadab kohe voolu saades Switch6-lt unicastiga MSDP Source-Active sĂ”numi, mis sisaldab teavet tĂŒĂŒpi ( S, G) â teavet allika ja multika sihtkoha kohta. NĂŒĂŒd, kui RP-R3 teab, et selline allikas nagu Switch6 eksisteerib, saadab ta R4 taotluse korral sellele voole suunamise Switch6 suunas PIM Join, tuginedes marsruutimistabelile. Seega, kui R1 saab sellise PIM Join-i, hakkab ta liiklust saatma RP-R3 suunas.
MSDP töötab TCP protokollil, RP-de vahel saadetakse keepalive sÔnumeid elujÔulisuse kontrollimiseks. Taimer on 60 sekundit.
MSDP peeride jagamise funktsiooni erinevatesse domeenidesse jÀÀb ebaselgeks, kuna keepalive ja SA sĂ”numites ei nĂ€idata kuulumist ĂŒhtegi domeeni. Samuti testiti selles topoloogias konfiguratsiooni erinevate domeenide mÀÀramisega - töödes ei olnud mingeid erinevusi.
Kui keegi suudab selgust tuua, oleksin rÔÔmus, kui loeksin kommentaarides.
Allikas: habr.com
