Caut să creez un mediu de testare pentru STP / RSTP. Am venit până la urmă acest post care sugerează utilizarea spațiilor de nume. Se părea că exact asta mi-am dorit să creez cel mai simplu mediu STP. Am ajuns să scriu un scenariu ca acesta:
#!/bin/bash
dacă [ "$EUID" -ne 0 ]
apoi ecou „Vă rugăm să rulați ca root”
Ieșire
fi
# Primul caz: Încercați o singură pereche veth
ip netns adauga albastru
link ip add veth0 tip veth peer veth1 netns albastru
link ip add veth2 tip veth peer veth3 netns albastru
linkul ip setat veth0
ip netns exec blue ip link set veth1 up
linkul ip setat veth2
ip netns exec blue ip link set veth3 up
link ip adaugă punte de tip mybridge
ip link set veth0 master mybridge
set link ip veth2 master mybridge
ip netns exec blue ip link adăugați tip bluebridge bridge
ip netns exec blue ip link set veth1 master bluebridge
ip netns exec blue ip link set veth3 master bluebridge
ip addr add 10.200.0.1/24 dev mybridge
#brctl stp mybridge on
ip link set mybridge type bridge stp_state 1
linkul ip a configurat mybridge-ul
# începe înregistrarea pachetelor aici
echo „Începeți înregistrarea pachetelor. Apăsați orice tastă pentru a continua”
citiți -n 1
ip netns exec blue ip addr add 10.200.0.2/24 dev bluebridge
#ip netns exec blue brctl stp bluebridge activat
ip netns exec blue ip link set tip bluebridge bridge stp_state 1
ip netns exec blue ip link set bluebridge up
Aproape tot timpul ajung într-o stare în care atât veth0, cât și veth2 redirecționează și voi primi o furtună care face ca mașina mea să funcționeze până când dau jos oricare dintre interfețe.
Speranța mea ar fi că nucleul însuși (4.19.128 care rulează în WSL 2.0 pentru testul meu actual) ar putea detecta acestea și... să nu provoace o furtună. În plus, aș spera să pot folosi un program RSTP în spațiul utilizatorului, cum ar fi mstpd (commit f55f783610e65149) pe una sau ambele dintre aceste poduri și să cresc arhitectura rețelei, captând pachete pe oricare dintre interfețele de pe parcurs.
Este ceva ce îmi lipsește? Am încercat acest lucru și cu trei spații de nume de rețea - încă se părea aproape intotdeauna duce la o furtună.
Am văzut câteva cazuri în care un port se blochează, iar celălalt înaintează, așa cum mă așteptam. Asta pare a fi mai degrabă excepția decât regula.
Pentru cei care joacă acasă, un script simplu pentru a anula toate interfețele:
#!/bin/bash
dacă [ "$EUID" -ne 0 ]
apoi ecou „Vă rugăm să rulați ca root”
Ieșire
fi
# Ucide albastrul
ip netns exec blue ip link del bluebridge
ip netns exec blue ip link del veth1
ip netns exec blue ip link del veth3
ip netns del blue
link ip de la mybridge