Testing environment for using generic vxlan outport - futurewei-cloud/alcor-control-agent GitHub Wiki

Running full suite of aca_tests

Table of Contents

Testing environment for using generic vxlan outport

Openflow Setup (different subnet 2 ports and 2 ports + router on 10.213.43.188 and 10.213.43.187)

1. Simply run this test to setup the child side, start with (.188)

./build/tests/aca_tests --gtest_also_run_disabled_tests --gtest_filter=*DISABLED_2_ports_ROUTING_test_traffic_CHILD -p 10.213.43.187

2. Setup the parent side on second machine (.187):

//reset the environment
docker kill con1
docker kill con2
docker rm con1
docker rm con2
ovs-vsctl del-br br-int
ovs-vsctl del-br br-tun

ovs-vsctl add-br br-int
ovs-vsctl add-br br-tun

ovs-vsctl -- add-port br-int patch-tun -- set interface patch-tun type=patch options:peer=patch-int -- add-port br-tun patch-int -- set interface patch-int type=patch options:peer=patch-tun
ovs-ofctl add-flow br-tun "table=0,priority=1,in_port="patch-int" actions=resubmit(,2)"
ovs-ofctl add-flow br-tun "table=2,priority=1,dl_dst=00:00:00:00:00:00/01:00:00:00:00:00 actions=resubmit(,20)"
ovs-ofctl add-flow br-tun "table=2,priority=1,dl_dst=01:00:00:00:00:00/01:00:00:00:00:00 actions=resubmit(,22)"
ovs-ofctl add-flow br-tun "table=20,priority=1 actions=resubmit(,22)"
ovs-ofctl add-flow br-tun "table=0,priority=25,arp,arp_op=1,in_port="patch-int" actions=resubmit(,51)"
ovs-ofctl add-flow br-tun "table=51,priority=1 actions=resubmit(,22)"
ovs-ofctl add-flow br-tun "table=0,priority=25,icmp,icmp_type=8,in_port="patch-int" actions=resubmit(,52)"
ovs-ofctl add-flow br-tun "table=52,priority=1 actions=resubmit(,20)"

TODO: add the next two
ovs-vsctl --may-exist add-port br-tun vxlan-generic -- set interface vxlan-generic type=vxlan options:df_default=true options:egress_pkt_mark=0 options:in_key=flow options:out_key=flow options:remote_ip=flow

ovs-ofctl add-flow br-tun "table=0,priority=25,in_port="vxlan-generic" actions=resubmit(,4)"

3. Setup the two containers as pretend VMs on second machine (.187):

docker run -itd --name con1 --net=none busybox sh
ovs-docker add-port br-int eth0 con1 --ipaddress=10.10.0.101/24 --gateway=10.10.0.1 --macaddress=fa:16:3e:d7:f2:6c
ovs-docker set-vlan br-int eth0 con1 1

docker run -itd --name con2 --net=none busybox sh
ovs-docker add-port br-int eth0 con2 --ipaddress=10.10.1.102/24 --gateway=10.10.1.1 --macaddress=fa:16:3e:d7:f2:6d
ovs-docker set-vlan br-int eth0 con2 2

ovs-ofctl add-flow br-tun "table=4, priority=1,tun_id=20 actions=mod_vlan_vid:1,output:"patch-int""
ovs-ofctl add-flow br-tun "table=4, priority=1,tun_id=30 actions=mod_vlan_vid:2,output:"patch-int""

4. Run ping manually on second machine (.187) - optional:

// Should be able to ping between themselves
docker exec con1 ping -c1 10.10.0.101
docker exec con2 ping -c1 10.10.1.102

// test traffic between the ports without router on the same subnet
// expect to fail because neighbor info is not programmed yet
docker exec con1 ping -c1 10.10.0.103
docker exec con2 ping -c1 10.10.1.104

// test traffic between the ports without router on different subnet, it should fail
docker exec con1 ping -c1 10.10.1.104
docker exec con2 ping -c1 10.10.0.103

5. Program the router and setup nighbor info on second machine (.187):

ovs-ofctl add-flow br-tun "table=51,priority=50,arp,dl_vlan=1,nw_dst=10.10.0.1 actions=move:NXM_OF_ETH_SRC[]->NXM_OF_ETH_DST[],mod_dl_src:fa:16:3e:d7:f2:11,load:0x2->NXM_OF_ARP_OP[],move:NXM_NX_ARP_SHA[]->NXM_NX_ARP_THA[],move:NXM_OF_ARP_SPA[]->NXM_OF_ARP_TPA[],load:0xfa163ed7f211->NXM_NX_ARP_SHA[],load:0x0a0a0001->NXM_OF_ARP_SPA[],in_port"

ovs-ofctl add-flow br-tun "table=52,priority=50,icmp,dl_vlan=1,nw_dst=10.10.0.1 actions=move:NXM_OF_ETH_SRC[]->NXM_OF_ETH_DST[],mod_dl_src:fa:16:3e:d7:f2:11,move:NXM_OF_IP_SRC[]->NXM_OF_IP_DST[],mod_nw_src:10.10.0.1,load:0xff->NXM_NX_IP_TTL[],load:0->NXM_OF_ICMP_TYPE[],in_port"

ovs-ofctl add-flow br-int "table=0,priority=25,dl_vlan=1,dl_src=fe:16:11:00:00:00/ff:ff:ff:00:00:00 actions=mod_dl_src:fa:16:3e:d7:f2:11 output:NORMAL"

ovs-ofctl add-flow br-tun "table=51,priority=50,arp,dl_vlan=2,nw_dst=10.10.1.1 actions=move:NXM_OF_ETH_SRC[]->NXM_OF_ETH_DST[],mod_dl_src:fa:16:3e:d7:f2:21,load:0x2->NXM_OF_ARP_OP[],move:NXM_NX_ARP_SHA[]->NXM_NX_ARP_THA[],move:NXM_OF_ARP_SPA[]->NXM_OF_ARP_TPA[],load:0xfa163ed7f221->NXM_NX_ARP_SHA[],load:0x0a0a0101->NXM_OF_ARP_SPA[],in_port"

ovs-ofctl add-flow br-tun "table=52,priority=50,icmp,dl_vlan=2,nw_dst=10.10.1.1 actions=move:NXM_OF_ETH_SRC[]->NXM_OF_ETH_DST[],mod_dl_src:fa:16:3e:d7:f2:21,move:NXM_OF_IP_SRC[]->NXM_OF_IP_DST[],mod_nw_src:10.10.1.1,load:0xff->NXM_NX_IP_TTL[],load:0->NXM_OF_ICMP_TYPE[],in_port"

ovs-ofctl add-flow br-int "table=0,priority=25,dl_vlan=2,dl_src=fe:16:11:00:00:00/ff:ff:ff:00:00:00 actions=mod_dl_src:fa:16:3e:d7:f2:21 output:NORMAL"

docker exec con1 ping -c1 10.10.0.1

docker exec con2 ping -c1 10.10.1.1

TODO: remove the next 5
ovs-vsctl --may-exist add-port br-tun vxlan-5998984 -- set interface vxlan-5998984 type=vxlan options:df_default=true options:egress_pkt_mark=0 options:in_key=flow options:out_key=flow options:remote_ip=10.213.43.188

ovs-ofctl add-flow br-tun "table=0,priority=25,in_port="vxlan-5998984" actions=resubmit(,4)"

ovs-ofctl add-flow br-tun "table=0,priority=25,in_port="vxlan-5998984" actions=resubmit(,4)"

ovs-ofctl add-flow br-tun "table=22,priority=1,dl_vlan=2 actions=strip_vlan,load:30->NXM_NX_TUN_ID[],output:"vxlan-5998984""

ovs-ofctl add-flow br-tun "table=22,priority=1,dl_vlan=1 actions=strip_vlan,load:20->NXM_NX_TUN_ID[],output:"vxlan-5998984""

TODO: add the next four
ovs-ofctl add-flow br-tun table=20,priority=50,dl_vlan=2,dl_dst:fa:16:3e:d7:f2:6f,actions="set_field:10.213.43.188->tun_dst,strip_vlan,load:30->NXM_NX_TUN_ID[],output:vxlan-generic"

ovs-ofctl add-flow br-tun table=20,priority=50,dl_vlan=1,dl_dst:fa:16:3e:d7:f2:6e,actions="set_field:10.213.43.188->tun_dst,strip_vlan,load:20->NXM_NX_TUN_ID[],output:vxlan-generic"

// L2 Arp responder:

ovs-ofctl add-flow br-tun "table=51,priority=50,arp,dl_vlan=1,nw_dst=10.10.0.103 actions=move:NXM_OF_ETH_SRC[]->NXM_OF_ETH_DST[],mod_dl_src:fa:16:3e:d7:f2:6e,load:0x2->NXM_OF_ARP_OP[],move:NXM_NX_ARP_SHA[]->NXM_NX_ARP_THA[],move:NXM_OF_ARP_SPA[]->NXM_OF_ARP_TPA[],load:0xfa163ed7f26e->NXM_NX_ARP_SHA[],load:0x0a0a0067->NXM_OF_ARP_SPA[],in_port"

ovs-ofctl add-flow br-tun "table=51,priority=50,arp,dl_vlan=2,nw_dst=10.10.1.104 actions=move:NXM_OF_ETH_SRC[]->NXM_OF_ETH_DST[],mod_dl_src:fa:16:3e:d7:f2:6f,load:0x2->NXM_OF_ARP_OP[],move:NXM_NX_ARP_SHA[]->NXM_NX_ARP_THA[],move:NXM_OF_ARP_SPA[]->NXM_OF_ARP_TPA[],load:0xfa163ed7f26f->NXM_NX_ARP_SHA[],load:0x0a0a0168->NXM_OF_ARP_SPA[],in_port"

ovs-ofctl add-flow br-tun "table=0,priority=50,ip,dl_vlan=1,nw_dst=10.10.1.104,dl_dst=fa:16:3e:d7:f2:11 actions=mod_vlan_vid:2,mod_dl_src:fe:16:11:d7:f2:01,mod_dl_dst:fa:16:3e:d7:f2:6f,resubmit(,2)"

ovs-ofctl add-flow br-tun "table=0,priority=50,ip,dl_vlan=2,nw_dst=10.10.0.103,dl_dst=fa:16:3e:d7:f2:21 actions=mod_vlan_vid:1,mod_dl_src:fe:16:11:d7:f2:01,mod_dl_dst:fa:16:3e:d7:f2:6e,resubmit(,2)"

// test traffic between the ports with router on the same subnet
docker exec con1 ping -c1 10.10.0.103
docker exec con2 ping -c1 10.10.1.104

// test traffic between the ports with router on different subnet
docker exec con1 ping -c1 10.10.1.104
docker exec con2 ping -c1 10.10.0.103
⚠️ **GitHub.com Fallback** ⚠️