Я хочу протестировать соединение 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?