Introducere
Am vorbit despre IP Multicast. Luna aceasta voi începe să abordez PIM Sparse Mode. Articole anterioare care ar putea fi de interes:
- Protocoalele de IP Multicast
- PIM Dense Mode
Sparse Versus Dense Mode
Reamintim că PIM Dense Mode este utilizat (în principiu) atunci când se dorește multicast în majoritatea locațiilor. Astfel, pachetele multicast inițiale sunt inundate pretutindeni, pruningul tăind traficul către locațiile care nu au nevoie de alimentarea multicast. Până de curând, PIM Dense Mode suferea de re-inundare periodică la fiecare 3 minute, dar în 12.1(5)T, caracteristica PIM Dense Mode State Refresh a atenuat această problemă. Cu această caracteristică, se poate spune că PIM Dense Mode este potrivit pentru o implementare simplă a multicastului. Mai ales în cazul în care nu este necesar controlul suplimentar al PIM Sparse Mode și în cazul în care inundarea ocazională „accidentală” nu ar fi foarte dăunătoare.
PIM Sparse Mode utilizează o abordare de solicitare explicită, în care un router trebuie să ceară alimentarea multicast cu un mesaj PIM Join. Modul PIM Sparse este indicat atunci când aveți nevoie de un control mai precis, în special atunci când aveți volume mari de trafic IP multicast în comparație cu lățimea de bandă. Modul PIM Sparse Mode se scalează destul de bine, deoarece pachetele merg doar acolo unde este nevoie de ele și deoarece creează stare în routere doar în funcție de necesități. Din acest motiv, a fost scris ca un protocol experimental pentru Internet.
Prețul pe care îl plătim pentru acest control suplimentar este o ușoară complexitate suplimentară. PIM Sparse Mode utilizează un router special numit Rendezvous Point (RP) pentru a conecta sursa fluxului sau arborele de multicast la routerul de lângă receptorul aspirant. RP este utilizat de obicei doar temporar, după cum vom vedea mai jos.
Pot exista RP-uri diferite pentru grupuri de multicast diferite, ceea ce reprezintă o modalitate de a distribui sarcina. De obicei, există un RP pentru fiecare grup multicast. Redundanța RP-urilor este un subiect avansat și necesită o expertiză puțin mai profundă. O modalitate de a face acest lucru este cu ajutorul protocolului MSDP (posibil un articol ulterior în această serie).
Reamintim că un mesaj PIM Join este trimis către o Sursă (sau pentru PIM-SM, eventual către un RP), pe baza unei rute unicast. Mesajul Join spune, de fapt, „avem nevoie de o copie a multicastelor de aici”. Acesta conectează expeditorul mesajului Join și routerele care intervin la orice arbore de multicast existent, până la ținta mesajului Join, dacă este necesar. Un mesaj Prune spune, de fapt, „nu mai avem nevoie de asta aici”. Un router care primește un Prune verifică dacă mai are și alte interfețe care au nevoie de fluxul de multicast și, în caz contrar, trimite propriul mesaj Prune. O tehnică avansată este de a aranja o copie separată și, eventual, diferită a informațiilor de rutare unicast doar în scopuri de multicast. Acest lucru permite „dirijarea” mesajelor Join. MultiProtocol BGP, MBGP, pentru multicast, este o modalitate de a face acest lucru (posibil un articol ulterior din serie).
Basic Rendezvous Point (RP)
Am văzut până acum că PIM-SM folosește un Rendezvous Point (RP), pentru a conecta sursa și receptorii. Poate exista un singur RP pentru fiecare grup de multicast, iar cea mai simplă implementare folosește un RP pentru toate grupurile de multicast.
Să vorbim despre elementele de bază ale modului în care este folosit RP. Să presupunem că sursa începe să trimită înainte de a exista receptori. Dacă lucrurile se întâmplă invers, unele detalii se schimbă ușor, dar nu este foarte diferit.
Așa că: sursa multicast începe să trimită. După cum am observat deja, nu există un protocol sau ceva pentru înregistrarea surselor cu IP multicast. Sursa trimite și depinde de routerul sau routerele vecine să facă ceea ce trebuie. Cu PIM-SM, routerul vecin știe despre RP. (Modul în care știe este un subiect pentru un întreg articol separat.) Routerul vecin transmite datele multicast către RP încapsulându-le într-un mesaj sau mai multe mesaje de înregistrare unicast. Rutarea normală livrează Registrul către RP. RP dezencapsulează multicastularea și transmite copii în josul oricărui arbore partajat (există unul pre-construit dacă au existat receptori conectați înainte ca sursa să înceapă să trimită). În cazul în care există receptori (interfețe de ieșire din Shared Tree), RP trimite un PIM Join înapoi către sursă. Acest lucru conectează sursa la RP cu un arbore sursă, arborele (S, G) cu cea mai scurtă cale (SPT). Odată ce RP primește multicaste de-a lungul acestui SPT, acesta trimite un Register-Stop pentru a comunica routerului de la sursă să nu mai trimită pachete Register. Motivul pentru acest comportament este că nu se pierd pachete multicast, dacă există receptori deja prezenți.
Apropoi, dacă nu există receptori prezenți, se trimite mesajul Register-Stop. Apoi, atunci când apare ulterior un receptor (IGMP către routerul vecin, PIM Join de la routerul vecin înapoi la RP), atunci RP trimite PIM Join către sursă în acel moment.
Figura următoare presupune că există o sursă și receptori activi (nu sunt reprezentați). Receptorul prezentat trimite un IGMP Report către routerul D. Routerul D trimite apoi un PIM Join către RP. Având în vedere că există și alți receptori, RP este deja alăturat arborelui sursă (arătat în albastru) și primește fluxul de multicast. Acesta transmite mai departe pachetele de flux din Arborele Sursă prin Arborele Partajat, arătat în verde.
Bine, acum avem pachetele care merg de la Sursă la RP de-a lungul Arborelui Sursă (Arborele cu Drumul cel mai Scurt, SPT), și de la RP la receptor de-a lungul Arborelui Partajat. Atunci când rata agregată (*, G) a pachetelor (de la toate sursele) depășește un prag în Kbps, acest lucru declanșează routerul cel mai apropiat de receptor să încerce să se alăture Arborelui Sursă. Acesta trimite un Join către sursa fluxului de multicast. De reținut că ultima îmbinare trimisă a fost către RP. Join-ul către sursă merge de la un router la altul către sursă până când întâlnește un router care face deja parte din arborele sursă. Astfel, routerul din apropierea receptorului este adăugat în arborele sursei. Atunci când se primește efectiv un pachet de-a lungul acestui arbore, se trimite un Prune către RP. De fapt, „mulțumesc, dar acum primesc multicastul cu ridicata, nu cu amănuntul”, deoarece acest proces elimină RP de la mijloc.
Figura următoare arată cum funcționează acest lucru. Săgețile roșii din stânga sus arată îmbinarea către sursă. Acest lucru pune în mișcare fluxul albastru de sus, pachetele fiind redirecționate de-a lungul Source Tree. Săgețile roșii din dreapta jos reprezintă apoi Prunes, deoarece fluxul Shared Tree nu mai este necesar (prezentat ca linie verde punctată). Rețineți că pachetele din Arborele Sursă ajung la Receptor pe o cale mai directă, în general cu o latență mai mică.
Prin modul în care controlăm pragul. Acesta este configurabil. Valoarea implicită este zero Kbps: se primește un pachet și se trece la Source Tree. Dacă avem mai multe surse pentru un anumit grup multicast (gândiți-vă la teleconferință, VoIP), atunci există o intrare Source Tree (S, G) pentru fiecare dintre ele. Dacă setăm pragul să nu se activeze niciodată, atunci toate pachetele trec prin RP (un fel de punte de conferință telefonică), folosind doar Arborele partajat (*, G). Pragul este, de asemenea, utilizat pentru switchback, precum și pentru switchover. Arborele sursă cu rată scăzută (S, G) este comutat înapoi la Arborele partajat. Volumul de trafic este verificat la fiecare minut.
Dacă un receptor dorește să se alăture, iar routerul său vecin se află pe SPT (Source Tree), atunci intrarea Shared Tree a interfeței de ieșire este copiată în intrarea Source Tree, ceea ce protejează împotriva faptului că trebuie să trimită trafic către RP și apoi „înapoi” către routerul de pe SPT.
Apropoi, poate vă întrebați, care este rostul de a avea RP aici? Datorită mecanismului de prag, RP ne oferă o modalitate de a utiliza Arborele Partajat și de a controla crearea explozivă a informațiilor de stare în routere dacă mulți receptori se alătură în același timp.
Arborele Partajat versus Arborele Sursă
PIM Sparse Mode (PIM-SM) poate utiliza atât Arborele Partajat (care trece prin RP), cât și Arborele Sursă (pentru livrare directă eficientă de-a lungul celei mai „scurte” căi de la sursă la receptor). În mod obișnuit, le poate utiliza pe ambele. Dacă livrarea eficientă este mai puțin importantă pentru dumneavoastră, iar diminuarea cantității de informații de stare păstrate de routere este mai importantă, atunci PIM poate fi configurat pentru a utiliza doar un Arbore partajat.
Când un router PIM-SM primește un pachet multicast, acesta verifică Arborele sursă pentru acea anumită adresă sursă și adresă de grup multicast (destinație). Dacă nu este prezentă nicio intrare, acesta verifică apoi dacă există o intrare Shared Tree (*, G) pentru grupul de multicast. În cazul în care există intrări pentru ambii arbori, interfața de intrare îi spune routerului ce arbore trebuie să folosească. Dacă ambii arbori au aceeași interfață de intrare, atunci bitul RP pentru o intrare (S, G) previne duplicarea pachetelor: acest lucru indică faptul că interfața RPF se află de-a lungul Arborelui partajat.
Pentru un flux de multicast cu cel puțin un receptor activ, calea dintre sursă și RP va face parte din Arborele sursă. (Rețineți că „calea dintre” este puțin vagă aici, încerc să nu dau prea multe detalii.)
Entrările Arborelui Partajat vor conecta RP la unii dintre receptori. Interfața RPF pentru Arborele partajat (*, G) este interfața în direcția RP, nu sursa grupului de multicast. De aceea există posibilitatea ca Arborele partajat (S, G) Sursă și (*, G) să aibă interfețe RPF diferite.
Înregistrările Arborelui partajat (*, G) arată interfețele unde a fost primită o alăturare la RP sau interfețele cu membri de grup conectați direct (configurați sau IGMP primiți). Intrările Source Tree (S, G) arată unde s-a primit un Join sau un Prune sau un Register.
Configurarea PIM Sparse Mode
Partea de bază de care aveți nevoie este:
ip multicast-routing
interface ethernet 0
ip address 10.1.1.1.1 255.255.255.255.0
ip pim sparse-mode
interface ethernet 1
ip address 10.1.2.1 255.255.255.255.0
ip pim sparse-mode
De asemenea, trebuie să spuneți fiecărui router care este RP, fie pentru toate grupurile, fie pentru grupurile selectate (folosind liste de acces pentru a specifica ce RP pentru ce grupuri). Acest lucru se poate face static cu:
ip pim rp-address 1.2.3.4
Ne vom uita la celelalte opțiuni de gestionare a RP în articolul următor.
În concluzie
Luna viitoare ne vom uita la diversele modalități de lucru cu punctele de întâlnire (Rendezvous Points). De asemenea, este posibil să atingem ușor alte câteva subiecte mai avansate legate de IP multicast.
.