Eu quero testar a ligação do LACP em ovs. Eu tenho 3 computadores Ubuntu.
Usando 2 deles como um openvswitch e um deles como host.
O primeiro ubuntu (chame de switch1) tem três NICs (2 deles usb / eth converter)
O segundo ubuntu (chame de switch2) tem 2 NIC, um deles é usb / eth converter (mesmo com Marvell Tech acima)
O terceiro Ubuntu (chamar-lhe host) será host conectado ao switch1 e tem uma interface de interface Ethernet incorporada.
Eu quero vincular (lacp = active) eth0 end eth1 no switch 1 e no switch 2. E conecte a eth0 do switch1 à eth0 do switch2 com um cabo. E conecte o eth1 também.
Eu fiz toda a configuração. No switch1:
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
Minha primeira pergunta é por que minhas interfaces estão desabilitadas por vínculo?
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
Eu fiz a mesma configuração de ovs no Switch2. E conectado switch1 e 2. para testar a conectividade de ligação eu planejei enviar um ping do host para qualquer lugar, colocar uma regra para switch1 que qualquer coisa vem para a porta eth2 deve ser espelhado para bond0 no 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
depois disso quando eu verificar o espelho
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}
Eu começo a enviar ping do host para alternar 1 com ping -I eth0 anywhere.com
e ouça no switch1 com sudo tcpdump -i eth2
Eu posso ver mensagens arp de hosts
... 17:00:49.293446 ARP, Request who-has s3-website-us-west-1.amazonaws.com tell 192.168.50.51, length 46 ...
Mas quando eu tento ouvir eth0 ou eth1 no Switch1, nada vem dessas portas. Não consigo escutar a porta bond0 com o tcpdump, mas posso verificar meus espelhos.
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}
Eu posso ver que existem alguns bytes tx / rx, então eu espero que do meu switch1 envie tudo que vem da eth2 para o switch2 via bond0. Mas quando eu verificar interfaces switch2 com tcpdump, não vejo nada passar por switch2.
Aqui surge a minha segunda pergunta, existe alguma maneira de ouvir pacotes no bond0 (para ambos os switches)?
E minha última pergunta, eu suponho quando eu espelhar o tráfego eth2 para bond0 como porta de saída no switch1, ele deve encaminhar pacotes para switch2; há algo de errado com essa configuração, devo colocar algumas regras com o ovs-ofctl?