Quais regras de fluxo adicionar à tabela para encaminhamento L2 no vSwitch aberto?

1

Estou realizando uma experiência em dois servidores baseados no Xeon. Ambos os servidores possuem dois NIC de porta dupla, total de 4 NICs. OVS está sendo executado em um servidor e o DPDK pktgen no outro servidor.

Eu tentei adicionar regras de fluxo à tabela para executar o OVS como o switch de encaminhamento L2. Eu executei os seguintes comandos para criar a ponte e adicionar as regras de fluxo.

./ovs-vsctl del-br br0
./ovs-vsctl add-br br0 -- set bridge br0 datapath_type=netdev
./ovs-vsctl add-port br0 dpdk0 -- set Interface dpdk0 type=dpdk options:dpdk-devargs=0000:04:00.0 options:flow-ctrl-autoneg=true
./ovs-vsctl add-port br0 dpdk1 -- set Interface dpdk1 type=dpdk options:dpdk-devargs=0000:04:00.1 options:flow-ctrl-autoneg=true
./ovs-vsctl add-port br0 dpdk2 -- set Interface dpdk2 type=dpdk options:dpdk-devargs=0000:05:00.0 options:flow-ctrl-autoneg=true
./ovs-vsctl add-port br0 dpdk3 -- set Interface dpdk3 type=dpdk options:dpdk-devargs=0000:05:00.1 options:flow-ctrl-autoneg=true

./ovs-ofctl del-flows br0
./ovs-ofctl add-flow br0 "table=0, eth_dst=a0:36:9f:0e:36:48,actions=output=1"
./ovs-ofctl add-flow br0 "table=0, eth_dst=a0:36:9f:0e:36:4a,actions=output=2"
./ovs-ofctl add-flow br0 "table=0, eth_dst=a0:36:9f:3e:eb:a4,actions=output=3"
./ovs-ofctl add-flow br0 "table=0, eth_dst=a0:36:9f:3e:eb:a2,actions=output=4"

Tudo está funcionando bem neste caso. E então eu mudei o pktgen para gerar pacotes com os endereços mac falsos. Também alterei as regras de fluxo na tabela executando os seguintes comandos.

./ovs-ofctl add-flow br0 "table=0, eth_dst=00:00:00:00:00:00,actions=output=1"
./ovs-ofctl add-flow br0 "table=0, eth_dst=00:00:00:00:00:01,actions=output=2"
./ovs-ofctl add-flow br0 "table=0, eth_dst=00:00:00:00:00:02,actions=output=3"
./ovs-ofctl add-flow br0 "table=0, eth_dst=00:00:00:00:00:03,actions=output=4"

Eu verifiquei que o pktgen está gerando os pacotes com esses endereços mac, mas o OVS não encaminha os pacotes neste caso. Estou faltando alguma coisa aqui?

Eu tentei descobrir a solução, mas todos os tutoriais mencionaram a mesma coisa para adicionar fluxos às tabelas para o encaminhamento de l2. Por que o OVS não está encaminhando pacotes no caso de endereços macidos falsos? Eu usei todas as portas no modo promíscuo.

Eu quero medir o desempenho para um grande número de entradas de tabelas e é por isso que eu preciso gerar pacotes com endereço mac falso.

    
por Ankit 19.12.2017 / 12:31

2 respostas

0

Você pode imprimir a configuração do namespace de rede.

route -n
ip netns ls
ovs-vsctl show

verifique se você configurou o kernel para permitir o encaminhamento:

sudo vi /etc/sysctl.conf

descomente net.ipv4.ip_forward = 1

você pode assistir ao tráfego

sudo tcpdump -i br0

Por favor, veja esta resposta sobre o encaminhamento do iptables: link

    
por 19.12.2017 / 12:49
0

Por padrão, seu host não conhece o endereço MAC de outro host. Eles saberão o endereço MAC vizinho com o protocolo ARP. Portanto, certifique-se de que o fluxo de tabela instalado manipule o processo ARP para cada host. No controlador ryu você pode usar o simples_switch_13.py, ou para simular o controlador com a GUI você pode usar o link

    
por 27.04.2018 / 20:26