RSTP настраивается очень просто. Под edit protocols rstp прописываются интерфейсы и указывается Bridge Priority:
Sun
interfaces {
xe-0/0/0 {
native-vlan-id 4000;
unit 0 {
family ethernet-switching {
interface-mode trunk;
vlan {
members all;
}
}
}
}
xe-0/0/1 {
native-vlan-id 4000;
unit 0 {
family ethernet-switching {
interface-mode trunk;
vlan {
members all;
}
}
}
}
em1 {
unit 0 {
family inet {
address 169.254.0.2/24;
}
}
}
}
protocols {
rstp {
bridge-priority 0;
interface xe-0/0/0;
interface xe-0/0/1;
}
}
vlans {
mgmt {
description native;
vlan-id 4000;
}
}
Единственное, что стоит пояснить - это факт создания Native-VLAN - в QFX без него трафик просто не будет идти. При этом для RSTP необходимо, чтобы порты, которые мы указали для работы протокола, были в Family - Ethernet-Switching, а также необходимо, чтобы был указан Port-Mode (Trunk/Access). В целом, примерно этот конфиг достаточно развернуть, чтобы увидеть как работает STP. Теперь посмотрим на состояние STP:
root@Earth# run show spanning-tree bridge detail
STP bridge parameters
Routing instance name : GLOBAL
Context ID : 0
Enabled protocol : RSTP
Root ID : 0.02:05:86:71:08:02
Root cost : 2000
Root port : xe-0/0/1
Hello time : 2 seconds
Maximum age : 20 seconds
Forward delay : 15 seconds
Message age : 1
Number of topology changes : 1
Time since last topology change : 33 seconds
Local parameters
Bridge ID : 12288.02:05:86:71:ab:02
Extended system ID : 0
Hello time : 2 seconds
Maximum age : 20 seconds
Forward delay : 15 seconds
Path cost method : 32 bit
Тут видно, что Root-Bridge - это Sun (Root ID состоит из Priority.MAC, приоритет 0 у Sun). Теперь найдём порт, который сейчас отключен для того, чтобы избежать петли:
root@Jupiter# run show spanning-tree interface
Spanning tree interface parameters for instance 0
Interface Port ID Designated Designated Port State Role
port ID bridge ID Cost
xe-0/0/0 128:490 128:490 12288.02058671ab02 2000 BLK ALT
xe-0/0/1 128:491 128:491 8192.02058671b902 2000 FWD ROOT
Т.е. тут видно, что решающую роль играет Highest Root Path Cost, а затем Highest Bridge ID соседа.
Если и Bridge ID соседа, получаемый на двух портах коммутатора, равны (т.е. два кабеля уходят к одному коммутатору, но они не включены в LAG), то блокируется порт в сторону соседского порта с большим Port ID (Состоит из приоритета порта и его порядкового номера).
1.1. MVRP
Выше представлена схема сети, для которой будет развёрнут RSTP (В VSTP MVRP не работает). MVRP необходим для того, чтобы не настраивать VLAN'ы на всех устройствах. Т.е. когда включен этот протокол и мы добавляем, удаляем или изменяем влан на одном коммутаторе, такая же настройка появляется на остальных (анлог VTP в Cisco).
Тут просто включаем транковые порты, которые включены в RSTP:
При этом у MVRP для интерфейсов есть различные режимы работы интерфейсов:
Normal - принимаем VLANы через интерфейс и передаём настроенные локально
Forbidden - Интерфейс не принимает VLANы остальным и не принимает их сам
Restrict - Интерфейс только передаёт локально настроенные VLANы, но не принимает их от остальных
Т.е. можно настроить иерархию так, чтобы VLANы передавались от Sun всем остальным, но он их принимать не будет:
root@Sun# set protocols mvrp interface xe-0/0/0 registration restricted
root@Sun# set protocols mvrp interface xe-0/0/1 registration restricted
Теперь настроим порты на Earth и Saturn в сторону клиентов:
set interfaces xe-0/0/2 unit 0 family ethernet-switching interface-mode access
set interfaces xe-0/0/2 unit 0 family ethernet-switching vlan members 100
И проверим связь:
root@Moon:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:50:00:00:09:00 brd ff:ff:ff:ff:ff:ff
inet 7.7.7.7/24 brd 7.7.7.255 scope global ens3
valid_lft forever preferred_lft forever
inet6 fe80::250:ff:fe00:900/64 scope link
valid_lft forever preferred_lft forever
root@Moon:~# ping 7.7.7.8 -c 5
PING 7.7.7.8 (7.7.7.8) 56(84) bytes of data.
64 bytes from 7.7.7.8: icmp_seq=1 ttl=64 time=321 ms
64 bytes from 7.7.7.8: icmp_seq=2 ttl=64 time=105 ms
64 bytes from 7.7.7.8: icmp_seq=3 ttl=64 time=180 ms
64 bytes from 7.7.7.8: icmp_seq=4 ttl=64 time=107 ms
64 bytes from 7.7.7.8: icmp_seq=5 ttl=64 time=105 ms
--- 7.7.7.8 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4004ms
rtt min/avg/max/mdev = 105.155/163.954/321.119/83.682 ms
RSTP, конечно, лучше, чем STP, но, не позволяет балансировать трафик, так как для всех VLAN'ов выбирается один Root-Bridge. Это можно исправить внедрением VSTP (Rapid PVST+ в Cisco).