De la inceput trebuie sa va spun ca nu sunt un mare fan al redundantei L2. Pentru mine e doar mai buna decat deloc si atat. Spanning tree-ul a evoluat cand a fost nevoie de instante diferite pe VLAN-uri diferite (vezi PVST+), si-a imbunatatit convergenta cand a definit noi BPDU-uri care standardizau “features” gen PortFast, UplinkFast, BackboneFast (vezi RSTP), a combinat PVST+ cu RSTP pentru a obtine ceva mai bun din amandoua (vezi RPVST+) si a avut grija sa fie interoperabil intre vendori diferiti ca sa multumeasca pe toata lumea (vezi MST). Cu toate astea, o varianta e prea lenta, una e cateodata prea riscanta, iar cealalta e dificil de implementat. Ca sa poti folosi STP trebuie sa intelegi mai intai cum se alege root-ul (root switch), cum se determina porturile RP (root ports) si cum se determina DP-urile (designated ports).
Peste tot in exemple, tutoriale sau prezentari se alege o topologie cu 3, 4 switchuri si se explica pasii de care am amintit mai sus. Oricine a studiat un pic STP-ul pe o astfel de topologie cred ca in final a ajuns sa inteleaga cum stau lucrurile. Ceea ce urmaresc eu sa arat in acest articol este ca o topologie aparent mai simpla, cu doar doua switchuri “in bucla“, ne poate da batai de cap mult mai mari si ne va ajuta sa intelegem si mai bine cum functioneaza STP-ul.
In topologia de mai sus, imi propun ca porturile puse in BLK de STP sa fie P1 si P3 de pe SW3. Desi pare simplu, sunt foarte convins ca o sa intampinati dificultati. Fara a dezvalui exact cum putem realiza acest lucru, o sa expun mai jos teoria de care trebuie sa tineti seama si o sa va las pe voi sa va descurcati.
1. Alegerea ROOT-ului
ROOT switch-ul este acela care trimite BPDU-ul cu cel mai mic Bridge ID (Bridge Priority + MAC) in retea. La inceput, fiecare se anunta pe el insusi ca fiind ROOT. Daca un switch primeste un BPDU “mai bun” atunci se opreste din a se mai anunta “ROOT” si forward-eaza mai departe BPDU-ul primit. In final, toate switch-urile cu exceptia ROOT-ului se vor opri din a trimite BPDU-uri si astfel alegerea este facuta.
2. Determinarea RP-urilor:
Am spus ca ROOT-ul a ramas cel care trimite BPDU-uri si fiecare switch le forward-eaza mai departe. Cand fac acest lucru, switch-urile NON-ROOT updateaza urmatoarele campuri din BPDU:
- costul pana la ROOT
- seteaza propriul Bridge ID (dar pastreaza Root ID)
- seteaza prioritatea portului (port priority)
- seteaza numarul portului (port number)
Dintre toate porturile de pe un switch pe care se primesc BPDU-uri, portul cu costul cel mai mic pana la ROOT este ales RP (root port). In caz de egalitate, se compara “port priority” si “port number” (cu cat e mai mic cu atat e mai bun).
3. Determinarea DP-urilor:
Spre deosebire de RP care se alege dintre porturile switch-ului, DP-ul se alege dintre cele doua porturi de pe acelasi segment (consideram segmentul un link, pentru simplitate), deci din switch-uri diferite. Pentru a devenit DP pe un segment, switch-ul trebuie sa trimita BPDU-ul cu cel mai mic cost pe acel segment. In caz de egalitate, se folosesc aceleasi criterii enumerate la RP. Pe un segment, doar DP-ul este cel care va trimite in continuare BPDU-uri.
Daca ati inteles cum stau lucrurile si puteti sa-mi dati solutie la problema de mai sus inseamna ca sunteti pe drumul cel bun in intelegerea protocolului STP. Dupa ce veti ajunge sa-l invatati foarte bine, va recomand sa-l implementati cat mai rar si exclusiv la nivel de acces intr-o retea cu “diametru” rezonabil.
Deoarece nu am primit nici un raspuns in 7 zile, o sa ofer eu solutia. Pentru ca STP sa puna in BLK porturile P1 si P3 de pe SW3 am doua variante:
1. Micsorez costul STP al lui P2 de pe SW3. Trebuie insa sa tineti cont ca daca micsorati costul STP pe un port, acesta va influenta costul pana la ROOT pentru toate switchurile “din spate”. Daca am fi avut alte switchuri in spatele lui SW3 care eventual aveau link-uri directe in SW1 am fi putut provoca schimbari de topologie majore. Nu recomand aceasta varianta in cazul in care aveti doua sau mai multe link-uri intre doua switchuri si vreti sa controlati ce porturi sa fie puse in BLK de catre STP.
2. Micsorez prioritatea portului P2 de pe SW2 (Atentie: NU SW3). In cazul acesta imi ating scopul fara a produce alte schimbari de topologie.