Spanning-Tree RSTP LAB Junos design and configuration
07.02 2024 | by massimilianoSpanning Tree Teoria STP IEEE 802.1d è un protocollo che assicura assenza di loop all’interno di un dominio di switching […]
Spanning Tree Teoria
STP IEEE 802.1d è un protocollo che assicura assenza di loop all’interno di un dominio di switching layer 2; utilizza un valore dello switch chiamato BRIDGE-ID per eleggere il root-switch trasportato all’interno di BPDU di 8 bytes di cui:
i primi due bytes rappresentano il Bridge Priority assumendo un range di valori decimali da 0 a 65.353 (valore di default = 32.768)
Gli ultimi sei bytes rappresentano l’indirizzo MAC proprio dello switch
In STP il valore più basso di Bridge-ID è preferito; in caso di parità della priority (valore per il quale uno switch assume il ruolo di root), il secondo passo è quello di confrontare il valore più basso di MAC address tra i due switch in contesa.
Il ruolo delle porte è il seguente:
Listening = la porta sta trasmettendo e ricevendo BPDU (Bridge Protocol Data Unit)
Learning = acquisisce le informazioni di MAC address del nodo collegato alla porta e permette così la costruzione di una tabella di bridging MAC addresses
Blocking = non permette nessuna trasmissione di dati user in uscita alla porta (ma resta in ascolto delle BPDU)
Forwarding = permette la trasmissione e ricezione di dati user e BPDU
Disable = porta non attiva
Lo status delle porte è il seguente:
Root = significa la Best Port in forwarding status con direzione verso il root bridge
Designated = in forwarding state per ogni segmento di rete LAN
Non-designated = risulta in blocking
RSTP IEEE 802.1w è un protocollo sempre per evitare loop all’interno di un dominio di switching ma a differenza del 802.1d garantisce migliori tempi di convergenza
Il ruolo delle porte è il seguente:
Forwarding = permette la trasmissione e ricezione di dati user
Learning = acquisisce le informazioni di MAC address del nodo collegato alla porta e permette così la costruzione di una tabella di bridging MAC addresses
Discarding = nessun pacchetto è trasmesso dalla porta
Lo status delle porte è il seguente:
Root = significa la Best Port in forwarding status con direzione verso il root bridge
Designated = in forwarding state per ogni segmento di rete LAN
Alternate = in blocking state ma rappresenta il path alternativo verso il root bridge; questo path è differente da quello utilizzato dalla best port.
Backup = in blocking state rappresenta il backup (ridondanza) di un path verso un segmento LAN dove un altro switch è invece già connesso.
Disable = è possibile in modo amministrativo disabilitare una porta
Differenza Tempi di Convergenza:
RSTP: circa 10 sec (spesso anche 2 sec)
STP: 50 secondi
RSTP IEEE 802.1w ha facoltà di categorizzare alcune porte in stato di Forwarding senza attendere i timers del protocollo STP attraverso due variabili:
LINK TYPE = eseguito attraverso la configurazione della porta in half-duplex oppure full-duplex
Full-Duplex = link type point-to-point = connessione tra due switch
Half-Duplex = link shared = connessione attraverso un terzo media dove multipli switches possono esistere
EDGE-PORT = sono porte direttamente collegate tra uno switch ed un end-point quale può essere un host, server, etc; [ attenzione al fatto che queste porte se ricevono BPDU (quindi collegate ad altri switch) perdono il loro ruolo di Edge Port e diventano normali porte STP, andando cosi a generare all’arrivo di BPDU un TCN (Topology Change Notification)
Il best-path è calcolato su base valore del bandwidth interface del link associato ad un valore di costo della porta
MSTP IEEE 802.1s significa avere una istanza STP per un set o region di vlans (Multiple Spanning Tree)
Risulta molto utile nel caso di molte vlan in uso, invece di avere una singola instanza per vlan, ottenere (configurare) differenti regioni associate a gruppi di vlan (ad esempio una regione alla quale appartengono un range di vlan da 2-800 ed un’altra regione con un range da 801-1000)
Questo comporta appunto un numero di istanze minori di STP ed un risparmio in termini di CPU di uno switch rispetto ad esempio RSTP.
BPDU Ethernet Frame
STP utilizza questi pacchetti come segnalazione per costruire il suo albero loop-free; una volta che STP è stabile, lo switch eletto root trasmette BDPU ogni 2 seconds di default
I campi che costituiscono le BPDU sono:
Protocol ID (2 bytes) = questo valore è sempre 0
Protocol version (1 bytes) = questo valore è sempre 0
BPDU Type (1 bytes) = questo campo serve per determinare se la frame BPDU è di tipo Configuration (0x00) oppure TCN (Change Topology = 0x80)
Flags (1 bytes) = questo campo è utilizzato per gestire changes in una topologia attiva
Root ID (8 bytes) = contiene il valore di Bridge ID del Root Bridge; dopo la convergenza tutti gli switch debbono avere lo stesso valore per vlan instance
Root path cost (4 bytes) = è un valore cumulativo in termini di cost di tutti i links a partire dal root bridge
Bridge ID (8 bytes) = è il valore identificativo del bridge che genera la BPDU; questo valore deve sempre essere lo stesso per tutte le BPDU trasmesse da ogni singolo switch per vlan instance, ma deve essere differenti da tutti gli altri switch presenti nel dominio STP. Il BID è una combinazione del valore di priority (default = 32.768) dello switch sender ed il valore di MAC Address.
Port ID (2 bytes) = contiene un valore unico per ciascuna porta; questo valore è una combinazione del priority della porta outbound ed un unico ID che rappresenta la porta stessa (di default la priority port = 128). Un esempio può essere indicato dalla porta ge-1/0/0 con valore pari a 128:513 e la porta ge-1/0/1 con valore pari a 128:514; ad ogni porta è associato un costo inversamente proporzionale alla velocità
Message Age (2 bytes)= questo valore memorizza un tempo da quando il root bridge ha generato le informazioni dalle quali il corrente BPDU è derivato
Max Age (2 bytes) = questo valore indica un tempo massimo per cui una determinata BPDU è stata salvata (range = 6 – 40 sec; default = 20 sec)
Hello Time (2 bytes) = questo valore misura il tempo di trasmissione tra periodici BPDU configuration (default = 2 sec)
Forward Delay (2 bytes) = questo valore misura il tempo che uno switch utilizza nello status di listening e learning ed influenza anche i timers durante un processo di TCN (range = 4 – 30 sec; defaut = 15 sec)
Esempio di configurazione Spanning-Tree in Junos con parametri di default
set protocols rstp bridge priority 32k
set protocol rstp max-age 20
set protocol rstp hello-time 2
set protocol rstp forward-delay 15
set protocol rstp interface ge-0/0/8.0 disable # esclude la porta dal partecipare al protocollo RSTP
}
set interface ge-0/0/1.0 cost 20000 # valore del costo per interfaccia a 1 GBps
set interface ge-0/0/1.0 mode point-to-point # default mode per interfaccia operativa in full-duplex
}
set interface ge-0/0/2.0 priority 128 # default valore usato per influenzare i downstream switches ad utilizzare il percorso a minor costo verso il root-switch
set interface ge-0/0/2.0 mode shared # default mode per interfaccia operativa in half-duplex
}
set interface ge-0/0/3.0 mode edge # default mode per interfaccia NON connessa ad altro switch operante con RSTP (ma solo a devices NO-STP enabled)
Architettura RSTP di Laboratorio
Verifica MAC table MX1
root@vMX1> show bridge mac-table
MAC flags (S -static MAC, D -dynamic MAC, L -locally learned, C -Control MAC
O -OVSDB MAC, SE -Statistics enabled, NM -Non configured MAC, R -Remote PE MAC,
P -Pinned MAC)
Routing instance : VSWITCH
Bridging domain : VL-100, VLAN : 100
MAC MAC Logical NH MAC active
address flags interface Index property source
00:50:79:66:68:05 D ge-0/0/5.0
00:50:79:66:68:06 D ge-0/0/6.0
00:50:79:66:68:0d D ae2.0
00:50:79:66:68:0e D ae1.0
{master}
Verifica MAC table MX2
root@vMX2> show bridge mac-table
MAC flags (S -static MAC, D -dynamic MAC, L -locally learned, C -Control MAC
O -OVSDB MAC, SE -Statistics enabled, NM -Non configured MAC, R -Remote PE MAC,
P -Pinned MAC)
Routing instance : VSWITCH
Bridging domain : VL-100, VLAN : 100
MAC MAC Logical NH MAC active
address flags interface Index property source
00:00:5e:00:01:64 D ae1.0 # VRRP Mac address
00:50:79:66:68:06 D ae1.0
00:50:79:66:68:0e D ae3.0
2c:6b:f5:c5:7a:f0 D ae1.0
root@vMX2>
Verifica MAC table MX3
root@vMX3> show bridge mac-table
MAC flags (S -static MAC, D -dynamic MAC, L -locally learned, C -Control MAC
O -OVSDB MAC, SE -Statistics enabled, NM -Non configured MAC, R -Remote PE MAC,
P -Pinned MAC)
Routing instance : VSWITCH
Bridging domain : VL-100, VLAN : 100
MAC MAC Logical NH MAC active
address flags interface Index property source
00:00:5e:00:01:64 D ae2.0
00:50:79:66:68:0d D ge-0/0/5.0
00:50:79:66:68:0e D ae2.0
2c:6b:f5:c5:7a:f0 D ae2.0
root@vMX3>
Verifica MAC table MX4
root@vMX4> show bridge mac-table
MAC flags (S -static MAC, D -dynamic MAC, L -locally learned, C -Control MAC
O -OVSDB MAC, SE -Statistics enabled, NM -Non configured MAC, R -Remote PE MAC,
P -Pinned MAC)
Routing instance : VSWITCH
Bridging domain : VL-100, VLAN : 100
MAC MAC Logical NH MAC active
address flags interface Index property source
00:00:5e:00:01:64 D ae3.0
00:50:79:66:68:0d D ae3.0
00:50:79:66:68:0e D ge-0/0/6.0
2c:6b:f5:c5:7a:f0 D ae3.0
root@vMX4>
Configuration MX1: chassis and interfaces
Configuration MX1: RSTP
VSWITCH {
instance-type virtual-switch;
protocols {
rstp {
bridge-priority 32k;
max-age 20;
hello-time 2;
forward-delay 15;
interface ae1;
interface ae2;
}
}
bridge-domains {
VL-100 {
vlan-id 100;
interface ae1.0;
interface ae2.0;
interface ge-0/0/5.0;
interface ge-0/0/6.0;
routing-interface irb.100;
}
Configuration MX2: chassis and interface
Configuration MX2: RSTP
VSWITCH {
instance-type virtual-switch;
protocols {
rstp {
bridge-priority 36k;
max-age 20;
hello-time 2;
forward-delay 15;
interface ae1;
interface ae3;
}
}
bridge-domains {
VL-100 {
vlan-id 100;
interface ae1.0;
interface ae3.0;
interface ge-0/0/5.0;
interface ge-0/0/6.0;
routing-interface irb.100;
}
Configuration MX3: chassis and interface
Configuration MX3: RSTP
VSWITCH {
instance-type virtual-switch;
protocols {
rstp {
bridge-priority 40k;
max-age 20;
hello-time 2;
forward-delay 15;
interface ae2;
interface ae4;
}
}
bridge-domains {
VL-100 {
vlan-id 100;
interface ae2.0;
interface ae4.0;
interface ge-0/0/5.0;
Configuration MX4: chassis and interface
Configuration MX4: RSTP
VSWITCH {
instance-type virtual-switch;
protocols {
rstp {
bridge-priority 44k;
max-age 20;
hello-time 2;
forward-delay 15;
interface ae3;
interface ae4;
}
}
bridge-domains {
VL-100 {
vlan-id 100;
interface ae2.0;
interface ae4.0; interface ge-0/0/6.0;
Verifica elezione Root Bridge from MX1
root@vMX1> show spanning-tree bridge routing-instance VSWITCH detail
STP bridge parameters
Routing instance name : VSWITCH
Context ID : 1
Enabled protocol : RSTP
Root ID : 32768.2c:6b:f5:c5:7a:d0
Hello time : 2 seconds
Maximum age : 20 seconds
Forward delay : 15 seconds
Message age : 0
Number of topology changes : 4
Time since last topology change : 254 seconds
Local parameters
Bridge ID : 32768.2c:6b:f5:c5:7a:d0
Extended system ID : 0
Hello time : 2 seconds
Maximum age : 20 seconds
Forward delay : 15 seconds
Path cost method : 32 bit
Verifica elezione Root Bridge from MX2
root@vMX2> show spanning-tree bridge routing-instance VSWITCH detail
STP bridge parameters
Routing instance name : VSWITCH
Context ID : 1
Enabled protocol : RSTP
Root ID : 32768.2c:6b:f5:c5:7a:d0
Root cost : 10000
Root Port : ae1
Hello time : 2 seconds
Maximum age : 20 seconds
Forward delay : 15 seconds
Message age : 1
Number of topology changes : 2
Time since last topology change : 393 seconds
Local parameters
Bridge ID : 36864.2c:6b:f5:2b:26:d0
output omitted (ext–system-id, hello-time, max-age, forward-delay, path cost method)
Verifica elezione Root Bridge from MX3
root@vMX3> show spanning-tree bridge routing-instance VSWITCH detail
STP bridge parameters
Routing instance name : VSWITCH
Context ID : 1
Enabled protocol : RSTP
Root ID : 32768.2c:6b:f5:c5:7a:d0
Root cost : 10000
Root Port : ae2
Hello time : 2 seconds
Maximum age : 20 seconds
Forward delay : 15 seconds
Message age : 1
Number of topology changes : 2
Time since last topology change : 999 seconds
Local parameters
Bridge ID :40960.2c:6b:f5:30:5e:d0
output omitted (ext–system-id, hello-time, max-age, forward-delay, path cost method)
Verifica elezione Root Bridge from MX4
root@vMX4> show spanning-tree bridge routing-instance VSWITCH detail
STP bridge parameters
Routing instance name : VSWITCH
Context ID : 1
Enabled protocol : RSTP
Root ID : 32768.2c:6b:f5:c5:7a:d0
Root cost : 20000
Root Port : ae3
Hello time : 2 seconds
Maximum age : 20 seconds
Forward delay : 15 seconds
Message age : 1
Number of topology changes : 2
Time since last topology change : 1075 seconds
Local parameters
Bridge ID : 45056.2c:6b:f5:97:9c:d0
output omitted (ext–system-id, hello-time, max-age, forward-delay, path cost method)
Verifica interface detail from MX1
root@vMX1> show spanning-tree interface routing-instance VSWITCH detail
Spanning tree interface parameters for instance 0
Interface name : ae1
Port identifier : 128.4
Designated port ID : 128.4
Port cost : 10000
Port state : Forwarding
Designated bridge ID : 32768.2c:6b:f5:c5:7a:d0
Port role : Designated
Link type : Pt-Pt/NONEDGE
Interface name : ae2
Port identifier : 128.5
Designated port ID : 128.5
Port cost : 10000
Port state : Forwarding
Designated bridge ID : 32768.2c:6b:f5:c5:7a:d0
Port role : Designated
Link type : Pt-Pt/NONEDGE
Verifica interface detail from MX2
root@vMX2> show spanning-tree interface routing-instance VSWITCH detail
Spanning tree interface parameters for instance 0
Interface name : ae1
Port identifier : 128.4
Designated port ID : 128.4
Port cost : 10000
Port state : Forwarding
Designated bridge ID : 32768.2c:6b:f5:c5:7a:d0
Port role : Root
Link type : Pt-Pt/NONEDGE
Interface name : ae3
Port identifier : 128.6
Designated port ID : 128.6
Port cost : 10000
Port state : Forwarding
Designated bridge ID : 36864.2c:6b:f5:2b:26:d0
Port role : Designated
Link type : Pt-Pt/NONEDGE
Verifica interface detail from MX3
root@vMX3> show spanning-tree interface routing-instance VSWITCH detail
Spanning tree interface parameters for instance 0
Interface name : ae2
Port identifier : 128.5
Designated port ID : 128.5
Port cost : 10000
Port state : Forwarding
Designated bridge ID : 32768.2c:6b:f5:c5:7a:d0
Port role : Root
Link type : Pt-Pt/NONEDGE
Interface name : ae4
Port identifier : 128.7
Designated port ID : 128.7
Port cost : 10000
Port state : Forwarding
Designated bridge ID : 40960.2c:6b:f5:30:5e:d0
Port role : Designated
Link type : Pt-Pt/NONEDGE
Verifica interface detail from MX4
root@vMX4> show spanning-tree interface routing-instance VSWITCH detail
Spanning tree interface parameters for instance 0
Interface name : ae3
Port identifier : 128.6
Designated port ID : 128.6
Port cost : 10000
Port state : Forwarding
Designated bridge ID : 36864.2c:6b:f5:2b:26:d0 # questo è lo switch vMX2 direttamente connesso to root bridge preferito
Port role : Root
Link type : Pt-Pt/NONEDGE
Interface name : ae4
Port identifier : 128.7
Designated port ID : 128.7
Port cost : 10000
Port state : Blocking
Designated bridge ID : 40960.2c:6b:f5:30:5e:d0
Port role : Alternate
Link type : Pt-Pt/NONEDGE