Tôi đang tìm cách tạo môi trường thử nghiệm cho STP/RSTP. cuối cùng tôi đã đến bài này đã đề xuất sử dụng không gian tên. Có vẻ như đó chính xác là những gì tôi muốn tạo ra môi trường STP đơn giản nhất. Tôi đã kết thúc việc viết một kịch bản như thế này:
#!/bin/bash
nếu [ "$EUID" -ne 0 ]
sau đó lặp lại "Vui lòng chạy với quyền root"
lối ra
fi
# Trường hợp đầu tiên: Thử một cặp veth
ip netns thêm màu xanh
liên kết ip add veth0 type veth ngang hàng veth1 netns blue
liên kết ip thêm veth2 loại veth ngang hàng veth3 netns blue
thiết lập liên kết ip veth0 lên
ip netns exec blue ip link set veth1 up
đặt liên kết ip veth2 lên
ip netns exec blue ip link set veth3 up
liên kết ip thêm cầu loại mybridge
liên kết ip đặt veth0 master mybridge
liên kết ip đặt veth2 chủ mybridge
ip netns exec blue ip link add bluebridge type bridge
ip netns exec blue ip link set veth1 master bluebridge
ip netns exec blue ip link set veth3 master bluebridge
địa chỉ ip thêm 10.200.0.1/24 dev mybridge
#brctl stp mybridge trên
liên kết ip đặt mybridge loại cầu stp_state 1
liên kết ip thiết lập mybridge
# bắt đầu ghi các gói tại đây
echo "Bắt đầu ghi gói tin. Nhấn phím bất kỳ để tiếp tục"
đọc -n 1
ip netns exec blue ip addr add 10.200.0.2/24 dev bluebridge
#ip netns exec blue brctl stp bluebridge trên
ip netns exec blue ip link set bluebridge type bridge stp_state 1
ip netns exec liên kết ip xanh thiết lập bluebridge
Hầu như lúc nào tôi cũng rơi vào tình trạng cả veth0 và veth2 đều đang chuyển tiếp và tôi sẽ gặp một cơn bão khiến máy của tôi hoạt động cho đến khi tôi gỡ bỏ bất kỳ giao diện nào.
Hy vọng của tôi là bản thân hạt nhân (4.19.128 chạy trong WSL 2.0 cho thử nghiệm hiện tại của tôi) có thể phát hiện ra những thứ này và... không gây ra một cơn bão nào. Hơn nữa, tôi hy vọng có thể sử dụng chương trình RSTP không gian người dùng như mstpd (cam kết f55f783610e65149) trên một hoặc cả hai cầu nối này và phát triển kiến trúc mạng, thu thập các gói trên bất kỳ giao diện nào trên đường đi.
Có điều gì tôi đang thiếu? Tôi cũng đã thử điều này với ba không gian tên mạng - dường như vẫn gần như luôn luôn dẫn đến một cơn bão.
Tôi đã thấy một vài trường hợp trong đó một cổng bị chặn và cổng kia chuyển tiếp, như tôi mong đợi. Đó dường như là ngoại lệ hơn là quy tắc.
Đối với những người chơi ở nhà, một tập lệnh đơn giản để hoàn tác tất cả các giao diện:
#!/bin/bash
nếu [ "$EUID" -ne 0 ]
sau đó lặp lại "Vui lòng chạy với quyền root"
lối ra
fi
# Giết màu xanh
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 màu xanh
liên kết ip trên mybridge