Назад | Перейти на главную страницу

Мост через интерфейсы VLAN вызывает широковещательный шторм

Я экспериментирую на своем сервере Proxmox. Цель этого опыта - установить надежную и безотказную связь между двумя ПК, которые управляют промышленным оборудованием. но я озадачен результатами экспериментов.

Эксперимент 1

Макет Ньюорка:

+-------------------------------------------+       
|           ens21   x                       |   SRV1
|                   |                       |   172.16.1.2
|           br0                             |
|                   |                       |
|bond0.10.  * - - - + - - - - - *   bond0.20|
|           |                   |           |
|   ens19   x...................x   ens20   |
+-------------------------------------------+
            |                   |
    vlan10  |                   |   vlan20
            |                   |
+-------------------------------------------+       
|   eth3.10 x                   x   eth4.20 |   SW1
|                                           |
|   eth1.10 x                   x   eth2.20 |
+-------------------------------------------+
            |                   |
            |                   |
            other               |
    vlan10  bridges             |   vlan20
            or                  |
            switches            |
            |                   |
+-------------------------------------------+       
|   eth3.10 x                   x|  eth4.20 |   SW2
|                                           |
|   eth1.10 x           eth2    x   eth3.20 |
+-------------------------------------------+               
            |                   |
    vlan10  |                   |   vlan20
            |                   |
+-------------------------------------------+   SRV2
|   ens19   ...................x    ens20   |   172.16.1.1
|           |                   |           |
|bond0.10.  * - - - + - - - - - *   bond0.20|
|                   |                       |
|           br0                             |
|                   |                       |
|           ens21   x                       |
+-------------------------------------------+

Note:
x: NIC
*: Bonding interface
....: Bonding connection
- or | seperated by space: Bridging connection
  1. SRV1 - это виртуальная машина Debian. У него есть интерфейсы Ens19 и Ens20. Ens21 зарезервирован для других виртуальных машин. Я связываю Ens19 и Ens20 с bond0. Bond0 находится в режиме трансляции. Br0 с IP 172.16.1.1 является мостом через bond0.10, bond0.20 и ens21. SRV2 похож на SRV1. IP-адрес br0 - 172.16.1.2.

Вот моя конфигурация SRV1:

auto bond0
iface bond0 inet manual
        up ifconfig $IFACE promisc
        up ifconfig bond0 0.0.0.0 up
        bond-slaves ens19 ens20
        #bond-miimon 100
        bond-downdelay 200
        bond-updelay 200
        #arp_interval 100
        #arp_ip_target 172.16.1.2
        #bond-mode active-backup
        bond-mode broadcast
        #bond-mode balance-alb
        #pre-up echo 100 > /sys/class/net/bond0/bonding/arp_interval
        #pre-up echo +172.16.1.2 > /sys/class/net/bond0/bonding/arp_ip_target

auto bond0.10
iface bond0.10 inet manual
#iface bond0.10 inet static
#       address 192.168.100.11
#       netmask 2558.255.255.0
#       vlan-raw_device bond0

auto bond0.20
iface bond0.20 inet manual
#iface bond0.20 inet static
#       address 192.168.200.12
#       netmask 255.255.255.0
#       vlan-raw_device bond0

auto ens21
iface ens21 inet manual
        up ifconfig $IFACE promisc

auto br0
iface br0 inet static
        #bridge_ports bond0 ens21
        bridge_ports bond0.10 bond0.20 ens21
        address 172.16.1.1
        broadcast 172.16.255.255
        netmask 16
        bridge_stp off
        bridge_fd 0
  1. SW1 - это виртуальная машина Openwrt. SW1 имеет четыре порта (eth1 ~ 4). Я создаю два моста: br-lan10 превышает eth1.10 и eth3.30, br-lan20 превышает eth2.20 и eth4.20. SW2 похож на SW1.

/ etc / config / network на SW1:

config interface 'eth1_10'
        option proto 'none'
        option ifname 'eth1.10'
        option auto '1'

config interface 'eth2_20'
        option proto 'none'
        option ifname 'eth2.20'
        option auto '1'

config interface 'eth3_10'
        option proto 'none'
        option ifname 'eth3.10'
        option auto '1'

config interface 'eth4_20'
        option proto 'none'
        option ifname 'eth4.20'
        option auto '1'

config interface 'lan10'
        option proto 'static'
        option type 'bridge'
        option ifname 'eth1.10 eth3.10'

config interface 'lan20'
        option type 'bridge'
        option proto 'none'
        option auto '1'
        option ifname 'eth2.20 eth4.20'

  1. Между SW1 и SW2 могут быть другие виртуальные машины, действующие как переключатели.

Когда я пингую с SRV1 на SRV2, я получаю задержки около 40 мс, и я не получаю повторяющихся пакетов:

root@SRV1:~# ping 172.16.1.2 -c 5
PING 172.16.1.2 (172.16.1.2) 56(84) bytes of data.
64 bytes from 172.16.1.2: icmp_seq=1 ttl=64 time=37.7 ms
64 bytes from 172.16.1.2: icmp_seq=2 ttl=64 time=44.0 ms
64 bytes from 172.16.1.2: icmp_seq=3 ttl=64 time=36.9 ms
64 bytes from 172.16.1.2: icmp_seq=4 ttl=64 time=46.1 ms
64 bytes from 172.16.1.2: icmp_seq=5 ttl=64 time=45.8 ms

--- 172.16.1.2 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 14ms
rtt min/avg/max/mdev = 36.864/42.085/46.071/3.986 ms

Я также обнаружил, что использование процессора PROXMOX и SRV1 составляет почти 98% и 86% соответственно. Контролируемый поток быстро увеличивается с 4 КБ до примерно 120 МБ.

Эксперимент 2

Вношу следующие изменения:

  1. На SRV1 и SRV2 br0 превышает ens21 и bond0.

/ etc / network / interfaces на SRV1:

auto br0
iface br0 inet static
        bridge_ports bond0 ens21
        #bridge_ports bond0.10 bond0.20 ens21
        address 172.16.1.1
        broadcast 172.16.255.255
        netmask 16
        bridge_stp off
        bridge_fd 0
  1. На SW1 br-lan10 превышает eth1 и eth3.10, br-lan20 превышает eth3 и eth4.20.

SW2 имеет аналогичную конфигурацию.

Вот файл / etc / config / network на SW1:

config interface 'lan10'
        option proto 'static'
        option type 'bridge'
        option ifname 'eth1 eth3.10'

config interface 'lan20'
        option type 'bridge'
        option proto 'none'
        option auto '1'
        option ifname 'eth2 eth4.20

На этот раз вся система работает нормально: я получаю тройные пакеты и низкую латентность:

root@SRV1:~# ping 172.16.1.2 -c 5
PING 172.16.1.2 (172.16.1.2) 56(84) bytes of data.
64 bytes from 172.16.1.2: icmp_seq=1 ttl=64 time=0.989 ms
64 bytes from 172.16.1.2: icmp_seq=1 ttl=64 time=1.00 ms (DUP!)
64 bytes from 172.16.1.2: icmp_seq=1 ttl=64 time=1.05 ms (DUP!)
64 bytes from 172.16.1.2: icmp_seq=1 ttl=64 time=1.06 ms (DUP!)
<Other outputs ommited here>
64 bytes from 172.16.1.2: icmp_seq=5 ttl=64 time=0.825 ms

--- 172.16.1.2 ping statistics ---
5 packets transmitted, 5 received, +12 duplicates, 0% packet loss, time 10ms
rtt min/avg/max/mdev = 0.811/1.022/1.310/0.143 ms

Quesstion

Перед проведением этих двух экспериментов я ожидал:

  1. Эксперимент 1 - широковещательный шторм не произойдет, поскольку все интерфейсы и соединения от ens19 SRV1 до ens19 SRV2 находятся в vlan10, а интерфейсы и соединения от ens20 SRV1 до ens20 SRV2 - во vlan20.

  2. Эксперимент 2 - будет широковещательный шторм, потому что есть петля (ens19 @ SRV1 - ens19 @ SRV2 - ens20 @ SRV2 - ens20 @ SRV1 - ens19 @ SRV1). Но получаю обратный результат.

Не мог бы кто-нибудь сказать мне, почему в эксперименте 1 в сети был широковещательный шторм; а в Эксперименте 2 нет?

Большое спасибо!

может я немного запуталась в описании .... Дайте попробовать ;-).

SRV1/ens19 is access VLAN 10 on switch (untagged)
SRV1/ens20 is access VLAN 20 on switch (untagged)

Вы создаете интерфейс связи через соединение / порты с разными настройками. Мне это кажется ... не обычным. Рядом с ним, как только вы создадите эту связь, вы соедините VLAN вместе ... Я не уверен, что именно вы пытаетесь сделать. Вы логически соединяете вместе VLAN и создаете петли.

Я бы подумал о настройке магистрали на портах на коммутаторе и пометил VLAN и ту же конфигурацию на портах. Затем создайте соединение над этими портами. Тогда вы можете играть с bond0.10 и bond0.20.

Кстати. в случае, если вы установите мост на обоих концах, есть хороший логический цикл - вы уверены, что хотите такую ​​настройку? Существуют ли какие-то STP для устранения этого?

Удачи.