Я пытаюсь изменить состояние подчиненных мостов в системе Linux brigde, и у него очень странное поведение, постоянно меняя состояние порта на пересылку.
I.E:
Создайте мост с фиктивным интерфейсом в качестве ведомого (это происходит с другим типом взаимодействия)
$ ip link add dev midummy type dummy
$ ip link add dev br type bridge
$ ip link set dev midummy master br
$ ip link set dev br up
$ ip link set dev midummy up
Проверьте состояние подчиненного моста:
$ brctl showstp br
...
midummy (1)
port id 8001 state forwarding
...
Попробуйте перейти в состояние блокировки
$ ip link set dev midummy type bridge_slave state 4
...
midummy (1)
port id 8001 state forwarding
...
$dmesg
[ 2414.108892] br: port 1(midummy) entered blocking state
[ 2414.108898] br: port 1(midummy) entered forwarding state
Почему ядро меняет состояние ведомого моста на пересылку? Есть ли какой-либо флаг моста для настройки этого поведения?
заранее спасибо
Короче говоря, такое поведение происходит из-за stp и периодической проверки статуса порта моста по таймеру, даже если stp полностью отключен. Вы можете изучить исходный код, чтобы выяснить, почему это происходит. Я нашел обходной путь для выполнения вашего желания. Ядро Linux поддерживает демон stp в пользовательском пространстве, и вы можете написать его или просто связать его с / dev / true для управления состояниями stp вручную.
Краткая демонстрация:
# create the fake stp daemon and disable in-kernel stp handling.
# should return success exit code
ln -s /bin/true /sbin/bridge-stp
# start the fake stp daemon
brctl stp br on
# bring up the interface to the blocking state
ip link set dev midummy type bridge_slave state 4
# check the interface state again and again. state aren't changing
# except the transactions between disabled and blocking state,
# that depends on bridge port status (UP or DOWN)
# use 'bridge monitor' to realtime monitoring of state changes
# !!! stop the fake stp before removing the symlink /bin/bridge-stp !!!
brctl stp br off
# and then remove the symbolic link to prevent future effects
rm /sbin/bridge-stp