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

Проблемы с настройкой теста связывания OpenVSwitch LACP

Я хочу протестировать соединение LACP на ovs. У меня 3 компа Ubuntu.

Использование двух из них в качестве openvswitch и одного в качестве хоста.

Первый ubuntu (назовите его switch1) имеет три NIC (2 из них конвертер usb / eth)

Второй ubuntu (назовите его switch2) имеет 2 NIC, один из них - конвертер usb / eth (то же самое с Marvell Tech выше)

Третий ubuntu (назовите его host) будет хостом, подключенным к switch1, и имеет один встроенный интерфейс интерфейса Ethernet.

Я хочу связать (lacp = active) eth0 end eth1 как на коммутаторе 1, так и на коммутаторе 2. И подключить eth0 switch1 к eth0 коммутатора2 с помощью кабеля. И также подключите eth1.

Я все настроил. На переключателе 1:

sudo ovs-vsctl add-br br0
sudo ovs-vsctl add-bond br0 bond0 eth0 eth1 lacp=active bond_mode=balance-tcp
sudo ovs-vsctl add-port br0 eth2
sudo ovs-vsctl show
72a6ecb7-8ad9-4c6e-b727-503207e3844c
    Bridge "br0"
        fail_mode: standalone
        Port "eth2"
            Interface "eth2"
        Port "bond0"
            Interface "eth0"
            Interface "eth1"
        Port "br0"
            Interface "br0"
                type: internal

Мой первый вопрос: почему мои интерфейсы отключены на связи?

sudo ovs-appctl bond/show bond0
---- bond0 ----
bond_mode: balance-tcp
bond may use recirculation: yes, Recirc-ID : 2
bond-hash-basis: 0
updelay: 0 ms
downdelay: 0 ms
next rebalance: 7634 ms
lacp_status: configured
active slave mac: 00:00:00:00:00:00(none)

slave eth0: disabled
    may_enable: false

slave eth1: disabled
    may_enable: false

Я сделал такую ​​же настройку ovs на Switch2. И подключил switch1 и 2. для проверки связности связи я планировал отправить эхо-запрос с хоста куда угодно, поставил правило для switch1, что все, что приходит на порт eth2, должно отражаться на bond0 на switch1.

sudo ovs-vsctl -- set Bridge br0 mirrors=@m -- --id=@bond0 get Port bond0 -- --id=@eth2 get Port eth2 -- --id=@m create Mirror name=mymirror select-dst-port=@eth2 select-src-port=@eth2 output-port=@bond0

после этого, когда я проверю зеркало

sudo ovs-vsctl list Mirror
_uuid               : 9bb76b24-d169-4a9c-ab00-ef0bd1df91e6
external_ids        : {}
name                : mymirror
output_port         : []
output_vlan         : []
select_all          : false
select_dst_port     : [04e085fc-3b4d-448f-b8cc-6d4fd2038381]
select_src_port     : [04e085fc-3b4d-448f-b8cc-6d4fd2038381]
select_vlan         : []
statistics          : {tx_bytes=212272, tx_packets=1112}

Я начинаю отправлять пинг с хоста на коммутатор 1 с помощью ping -I eth0 anywhere.com и слушайте в switch1 с помощью sudo tcpdump -i eth2 Я вижу сообщения arp от хостов

... 17: 00: 49.293446 ARP, запросить у кого есть s3-website-us-west-1.amazonaws.com сообщить 192.168.50.51, длина 46 ...

Но когда я пытаюсь прослушать eth0 или eth1 на Switch1, на эти порты ничего не приходит. Я не могу прослушивать порт bond0 с помощью tcpdump, но могу проверить свои зеркала.

sudo ovs-vsctl list Mirror
_uuid               : 9bb76b24-d169-4a9c-ab00-ef0bd1df91e6
external_ids        : {}
name                : mymirror
output_port         : []
output_vlan         : []
select_all          : false
select_dst_port     : [04e085fc-3b4d-448f-b8cc-6d4fd2038381]
select_src_port     : [04e085fc-3b4d-448f-b8cc-6d4fd2038381]
select_vlan         : []
statistics          : {tx_bytes=212272, tx_packets=1112}

Я вижу, что есть несколько байтов tx / rx, поэтому я ожидаю, что мой switch1 отправит все, что приходит с eth2 на switch2 через bond0. Но когда я проверяю интерфейсы switch2 с помощью tcpdump, я не вижу, чтобы через switch2 ничего не проходило.

Здесь возникает мой второй вопрос, есть ли способ прослушивать пакеты на bond0 (для обоих коммутаторов)?

И мой последний вопрос. Полагаю, когда я зеркалирую трафик eth2 на bond0 в качестве выходного порта на switch1, он должен пересылать пакеты на switch2; Что-то не так с этой настройкой, я должен установить некоторые правила с помощью ovs-ofctl?