Protocolul STP permite topologii fizice redundante în topologiile copacilor fără bucle. Cea mai mare problemă cu protocolul STP este că unele defecțiuni hardware pot provoca eșecul acestui protocol. Acest eșec are ca rezultat formarea buclelor de expediere (sau bucle STP). Buclele STP provoacă întreruperi grave ale rețelei.
Acest document descrie funcția de protecție a buclei STP destinată îmbunătățirii stabilității rețelelor Layer 2 (L2). Aici este descrisă și funcția de detectare a pierderii BPDU. Funcția de detectare a pierderilor BPDU este un instrument de diagnosticare care generează mesaje syslog dacă pachetele BPDU nu sunt primite în timp util.
Acest document nu are o obligație rigidă la variantele specifice ale software-ului și ale hardware-ului.
Funcția de protecție a buclei STP a fost implementată pentru prima oară în CatOS versiunea 6.2.1 a programului Catalyst pentru platformele Catalyst 4000 și Catalyst 5000 și în versiunea 6.2.2 pentru platforma Catalyst 6000.
Funcția de detectare a pierderilor din BPDU este implementată pentru prima oară în CatOS versiunea 6.2.1 a programului Catalyst pentru platformele Catalyst 4000 și Catalyst 5000 și în versiunea 6.2.2 pentru platforma Catalyst 6000.
Funcția de protecție a STP bucle implementat pentru prima dată în Cisco IOS Software Release 12.1 (12c) EW pentru Catalyst 4500 switch-uri și Cisco IOS Software Release 12.1 (11b) EX pentru Catalyst 6500.
Funcția de detectare a pierderilor din BPDU nu este acceptată de comutatoarele Catalyst cu software-ul de sistem Cisco IOS.
Pentru scopuri interne, protocolul STP atribuie roluri fiecărui port al podului (sau comutatorului) pe baza configurației, topologiei, poziției relative a portului în topologie și a altor factori. Rolul portului determină comportamentul portului în termenii protocolului STP. În funcție de rolul atribuit, portul trimite sau recepționează pachetele STPP BPDU și transmite sau blochează traficul de date. Următoarea listă oferă o scurtă descriere a fiecărui rol port STP:
Numit. Pentru fiecare conexiune (segment), este selectat un port atribuit. Portul desemnat este portul cel mai apropiat de podul rădăcină. Acest port trimite pachete BPDU peste această conexiune (segment) și transmite traficul către podul rădăcină. Într-o rețea cu topologie de convergență STP, toate porturile atribuite sunt în starea de redirecționare STP.
Root. Un pod poate avea doar un singur port rădăcină. Portul rădăcină este portul care duce la podul rădăcină. Într-o rețea cu topologie de convergență STP, portul rădăcină se află în starea de redirecționare STP.
Alternative. Porturile alternative duc la podul rădăcină, dar nu sunt porturi de bază. Porturile alternative suportă starea de blocare STP.
Rezerva. Acesta este un caz special în care două sau mai multe porturi ale aceluiași pod (comutator) sunt conectate direct sau printr-un suport comun. În acest caz, este atribuit un port și celelalte porturi sunt blocate. Acest port are un rol de rezervă.
Funcția de protecție la buclă STP oferă o protecție suplimentară față de buclele de redirecționare la nivelul 2 (bucle STP). Buclele STP se formează atunci când portul STP blocat din topologia redundantă intră în mod eronat în starea de redirecționare. De obicei, motivul pentru aceasta este că unul dintre porturile topologiei fizice redundante (nu neapărat portul STP blocat) încetează să primească pachetele STP BPDU. Funcționarea protocolului STP depinde de recepția și transmiterea continuă a pachetelor BPDU în funcție de rolul portului. Portul atribuit transmite pachetele BPDU, iar portul neasignat primește pachetele BPDU.
Când unul dintre porturile din topologia fizică redundantă nu mai primește BPDU, protocolul STP consideră că această topologie este o topologie fără bucle. Ca rezultat, portul blocat de la portul alternativ sau de backup devine portul desemnat și intră în starea de redirecționare. În această situație se formează o buclă.
Funcția de protecție a buclă efectuează verificări suplimentare. În cazul în care pachetele BPDU nu mai sunt acceptate de port neatribuit și Buclă Guard este activată, acest port este mutat la starea blocat datorită capacităților buclă STP, nu în stare de ascultare, de învățare (învățare) sau expediere. Fără funcția de protecție prin loopback, portul acționează ca portul desemnat. Portul intră în starea de redirecționare STP și formează o buclă.
Când protecția bucla blochează un port de neegalat, următorul mesaj este înregistrat în jurnal:
Atunci când pachetul BPDU este recepționat de port în starea de blocare datorită posibilității unei bucle STP, acest port trece într-o stare STP diferită. În funcție de blocul primit BPDU, aceasta înseamnă că recuperarea este efectuată automat și nu este necesară nicio intervenție. După recuperare, se înregistrează următorul mesaj:
Pentru a ilustra acest comportament, luați în considerare următorul exemplu:
Comutatorul A este comutatorul rădăcină. Comutatorul C nu primește pachetele BPDU de la comutatorul B din cauza unei defecțiuni a conexiunii unidirecționale între comutatorul B și comutatorul C.
Fără protecția bucla, portul STP blocat pe comutatorul C intră în starea de ascultare STP după timpul specificat de cronometrul max_age și apoi trece la starea de redirecționare după un decalaj egal cu dublul valorii forward_delay. În această situație se formează o buclă.
Atunci când protecția bucla este activată, după resetarea temporizatorului max_age, portul blocat de pe comutatorul C intră în starea de blocare din cauza posibilității unei bucle STP. Portul aflat în starea blocată din cauza posibilității unei buclă STP nu trădează traficul utilizatorilor, astfel încât bucla nu se formează. (Starea de blocare datorată posibilității de a fi bucle este de fapt echivalentă cu starea de blocare.).)
Funcția de protecție a buclă este activată pentru fiecare port separat. Cu toate acestea, deoarece funcția blocurilor de gardă în buclă portului la STP, blochează porturile inconsecvente pentru fiecare VLAN individual (ca STP este configurat separat pentru fiecare VLAN). Deci, în cazul în care pachetele BPDU sunt primite în portul principal al VLAN la un singur individ, apoi a blocat numai acest VLAN (tradus în stare de blocare din cauza STP bucle posibile). Din acest motiv, în cazul în care această funcție este activată în interfața etherchannel blocat întreg canal VLAN separat, și nu doar o singură conexiune (întrucât termenii etherchannel de protocol STP este un port logic).
Care porturi ar trebui protejate de bucle? Răspunsul cel mai evident este: pe porturile blocate. Cu toate acestea, acest lucru nu este în întregime adevărat. Protecția de la bucle trebuie să fie inclusă pe porturile neaseminate (mai precis, pe porturile rădăcină și alternative) pentru toate combinațiile posibile de topologii active. Din cauza protecției buclei nu este setată pentru fiecare VLAN în mod individual, același port (principal) pot fi atribuite aceluiași VLAN (VLAN) și neatribuit la altul. De asemenea, ar trebui să luați în considerare scenariile posibile pentru eșec.
Luați în considerare următorul exemplu:
Implicit, protecția bucla este dezactivată. Pentru a activa protecția prin buclă, utilizați următoarea comandă:
Începând cu versiunea 7.1 (1) a software-ului Catalyst (CatOS), protecția bucla poate fi activată la nivel global pe toate porturile. De fapt, protecția la buclă este activată pentru toate conexiunile punct-la-punct. Conexiunea punct-la-punct este determinată de starea transferului duplex al conexiunii. Dacă este configurat modul complet duplex, conexiunea este considerată o conexiune punct-la-punct. De asemenea, puteți configura sau suprascrie setările globale pentru fiecare port individual.
Pentru a permite protecția buclă la nivel global, executați următoarea comandă:
Pentru a dezactiva protecția bucla, executați următoarea comandă:
În funcție de specificul proiectului, puteți selecta funcția UDLD sau protecția bucla. În ceea ce privește protocolul STP, cea mai notabilă diferență dintre cele două funcții este lipsa protecției UDLD împotriva defecțiunilor STP cauzate de problemele software. Ca urmare, comutatorul dedicat nu trimite pachetele BPDU. Cu toate acestea, eșecurile de acest tip apar (de zeci de ori) mai puține decât eșecurile cauzate de conexiunile unidirecționale. La rândul său, funcția UDLD poate fi mai flexibilă în cazul conexiunilor unidirecționale în EtherChannel. În acest caz, UDLD dezactivează numai conexiunile nereușite, iar canalul rămâne operațional datorită conexiunilor rămase. Cu această eșec, protecția prin buclă traduce portul în starea de blocare datorită posibilității unei buclă de a bloca întregul canal.
În plus, protecția prin buclă nu funcționează în cazul conexiunilor partajate și în situațiile în care conexiunea este unidirecțională din momentul conectării. În acest din urmă caz, portul nu primește niciodată BPDU și devine atribuit. Deoarece acest comportament poate fi normal, acest caz nu este acoperit de protecția bucla. Protecția împotriva unui astfel de scenariu este asigurată de UDLD.
După cum sa menționat deja, cel mai înalt nivel de protecție este asigurat atunci când funcțiile de protecție UDLD și buclă sunt activate.
Protecția rădăcinii copacului STP
Funcțiile de protejare a rădăcinii unui STP de copac și de protecție împotriva buclelor se exclud reciproc. Protecția rădăcină STP copac este utilizată la porturile desemnate și nu permite portului să schimbe starea. Protecția la buclă acționează asupra porturilor neaseminate și permite ca portul să fie atribuit după expirarea lui max_age. Protecția rădăcină a copacului STP nu poate fi activată pentru un port pe care este activată protecția în buclă. Când protecția portului este activată pentru port, dezactivează protecția rădăcină a copacului STP configurat pe acest port.
Uplink funcții rapide și backbone rapide
Funcțiile rapide ale ascendentelor rapide și ale coloanei vertebrale sunt transparente pentru a proteja împotriva buclelor. Atunci când coloana vertebrală a funcției trece rapid max_age în timpul re-convergenței, aceasta nu declanșează protecția bucla. Pentru mai multe informații despre funcțiile rapide și caracterele ascendente ascendente, consultați următoarele documente:
Protecția PortFast și BPDU și LAN virtual dinamic
Protecția bucla nu poate fi activată pentru porturile care au PortFast activat. Deoarece protecția BPDU funcționează la porturile cu portfast activat, unele restricții se aplică la protecția BPDU. Protecția de la bucle nu poate fi activată pe porturile unei rețele virtuale dinamice, deoarece portfast-ul a fost deja activat pe astfel de porturi.
Compuși partajați
Protecția împotriva buclelor nu trebuie inclusă în conexiunile partajate. Dacă protecția prin buclă este activată în conexiunile partajate, traficul de la nodurile conectate la segmente partajate poate fi blocat.
Multiple de legare a copacilor (MST)
Protecția buclă funcționează corect în mediul MST.
Detectarea pierderilor la BPDU
Funcția de protecție a buclă trebuie să interacționeze corect cu funcția de detectare a pierderilor BPDU.
Funcționarea protocolului STP depinde în mare măsură de primirea în timp util a pachetelor BPDU. Cu fiecare mesaj hello_time (în mod implicit la fiecare 2 secunde), podul rădăcină trimite pachetele BPDU. Podurile non-root nu creează pachete BPDU pentru fiecare mesaj hello_time, dar primesc pachete BPDU retransmise din podul rădăcină. Prin urmare, fiecare pod non-root trebuie să primească pachete BPDU în fiecare VLAN pentru fiecare mesaj hello_time. În unele cazuri, BPDU este pierdut sau CPU-ul podului este prea ocupat pentru a transmite BPDU în timp util. Aceste sau alte probleme pot provoca întârzierea pachetelor BPDU (dacă există). Această problemă poate afecta stabilitatea topologiei STP.
Detectarea pierderilor de la BPDU permite comutatorului să monitorizeze pachetele BPDU târzii și să notifice administratorul prin mesajele syslog. Pentru fiecare port pentru care întârzierea (sau distorsiunea) pachetului BPDU a fost detectată vreodată, funcția de detectare a întârzierii va raporta cea mai recentă întârziere, indicând durata acesteia. De asemenea, indică timpul maxim de întârziere al BPDU pentru portul respectiv.
Pentru a proteja CPU-ul de supraîncărcarea podului, un mesaj syslog nu este generat de fiecare dată când un pachet BPDU este întârziat. Frecvența creării mesajelor este limitată la un mesaj la fiecare 60 de secunde. Cu toate acestea, în cazul în care întârzierea BPDU depășește valoarea max_age împărțită la 2 (care este în mod implicit 10 s), mesajul este imprimat imediat.
Notă: detectarea pierderilor în BPDU este o funcție de diagnosticare. Dacă un pachet BPDU este detectat, acesta trimite un mesaj syslog. Funcția de detectare a pierderilor BPDU nu efectuează alte acțiuni corective.
Exemplu de mesaj log al sistemului creat de funcția de detectare a pierderilor BPDU:
Detectarea pierderilor BPDU este configurată pentru fiecare comutator individual. Implicit, această caracteristică este dezactivată. Pentru a activa detectarea pierderilor la BPDU, executați următoarea comandă: