Hi folks
While trying to integrate dpdkvhostuser port with user space Vxlan tunneling as
described in ovs/README-native-tunneling.md,
My setup topology is as below, all bridges are in user space.
On host 1:
Ping VM2
VM1(10.0.1.2) <------> dpdk-vhostuser <------> br-int <------> Vxlan <------>
br-ex(192.168.1.2) <------> dpdk0 <------> NIC
^ ^
| |
dummy0 dummy1
#Setup br-int, attach dpdkvhostuser and vxlan ports to it
ovs-vsctl add-br br-int -- set bridge br-int datapath_type=netdev
ovs-vsctl add-port br-int vhost-user-1 -- set Interface vhost-user-1
type=dpdkvhostuser
ovs-vsctl add-port br-int vxlan1 -- set interface vxlan1 type=vxlan
options:remote_ip=191.168.1.2 options:key=99
ovs-ofctl add-flow br-int arp,action=normal
#Setup br-ex, attach dpdk0 to it, so packets can hit on wire
ovs-vsctl add-br br-ex -- set bridge br-ex datapath_type=netdev
ovs-vsctl add-port br-ex dpdk0 -- set Interface dpdk0 type=dpdk
ifconfig br-ex 192.168.1.4/24
ovs-appctl ovs/route/add 192.168.1.4/24 br-ex
ovs-ofctl add-flow br-ex arp,action=normal
#Setup mirror ports to tcpdump packets
rmmod dummy
modprobe dummy numdummies=2
ifconfig dummy0 up
ifconfig dummy1 up
ovs-vsctl add-port br-ex dummy1 -- --id=@p get port dummy1 -- --id=@m create
mirror name=m0 select-all=true output-port=@p -- set bridge br-ex mirrors=@m
ovs-vsctl add-port br-int dummy0 -- --id=@p get port dummy0 -- --id=@m
create mirror name=m0 select-all=true output-port=@p -- set bridge br-int
mirrors=@m
On host 2:
VM2(10.0.1.4) <------> dpdk-vhostuser <------> br-int <------> Vxlan <------>
br-ex(192.168.1.4) <------> dpdk0 <------> NIC
^ ^
| |
dummy0 dummy1
Host2 use the same configuration as host1 except for the ip address.
On host1 VM1 ping its peer VM2:
1. When not employing Vxlan interface, just dpdk-hostuser <--> br-int <-->
dpdk0 style setup, traffic between VM1 and VM2
goes well.
2. When integrated Vxlan interface as above topology, on host1, ping VM1,
I can tcpdump arp packet on dummy0 port,
On dummy1, Vxlan encapsulated arp packet for guest packet did show up as
expected. As a result connectivity is broken.
# ovs-ofctl dump-ports br-int
OFPST_PORT reply (xid=0x2): 4 ports
port LOCAL: rx pkts=0, bytes=0, drop=0, errs=0, frame=0, over=0, crc=0
tx pkts=16, bytes=2544, drop=0, errs=0, coll=0
port 1: rx pkts=16, bytes=?, drop=?, errs=?, frame=?, over=?, crc=?
tx pkts=0, bytes=?, drop=0, errs=?, coll=?
port 2: rx pkts=0, bytes=0, drop=0, errs=0, frame=0, over=0, crc=0
tx pkts=16, bytes=2544, drop=0, errs=0, coll=0
port 3: rx pkts=0, bytes=0, drop=0, errs=0, frame=0, over=0, crc=0
tx pkts=19, bytes=2754, drop=0, errs=0, coll=0
# ovs-vsctl get Interface vxlan1 ofport
2
# ovs-vsctl get Interface vhost-user-1 ofport
1
]# ovs-vsctl show
af3f1e06-82e6-4bc1-9074-b90377ef32fa
Bridge br-ex
Port "dummy1"
Interface "dummy1"
Port "dpdk0"
Interface "dpdk0"
type: dpdk
Port br-ex
Interface br-ex
type: internal
Bridge br-int
Port "dummy0"
Interface "dummy0"
Port "vhost-user-1"
Interface "vhost-user-1"
type: dpdkvhostuser
Port br-int
Interface br-int
type: internal
Port "vxlan1"
Interface "vxlan1"
type: vxlan
options: {key="99", remote_ip="191.168.1.2"}
It seems vxlan1 ports did do its job, but why does the encapsulated Vxlan
packets didn't route into br-ex
as commanded by "ovs-appctl ovs/route/add 192.168.1.4/24 br-ex" from
README-native-tunneling.md
Did I missing anything else obviously? Any hint/suggestion would be appreciated.
_______________________________________________
discuss mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/discuss