[ovn][neutron][ussuri] How to configure for overlay in DPDK with OVN ?
Hi, I’m trying to implement dpdk-ovs with ovn for our openstack environment. I create a bond interface(tunbound) with ovs and tun0 and tun1 are slave interfaces of the bond interface named tunbond. Bridge br-int fail_mode: secure datapath_type: netdev Port tunbond Interface tun0 type: dpdk options: {dpdk-devargs="0000:1a:00.1", n_rxq="2"} Interface tun1 type: dpdk options: {dpdk-devargs="0000:d8:00.1", n_rxq="2"} Port br-int Interface br-int type: internal Now, I need to configure remote-ovn options to the ovs. *I am confused how can I define the IP address of the bonded interface with ovs?* Theses are commands for connect remote ovn services. ovs-vsctl set open . external-ids:ovn-remote=tcp:{controller ip}:6642 ovs-vsctl set open . external-ids:ovn-encap-type=geneve *1* This below command make it me confused. ovs-vsctl set open . external-ids:ovn-encap-ip={local ip} How should I resolve this issue? Regards, John Haan
On Wed, 2020-09-02 at 16:23 +0900, 한승진 wrote:
Hi,
I’m trying to implement dpdk-ovs with ovn for our openstack environment.
I create a bond interface(tunbound) with ovs and tun0 and tun1 are slave interfaces of the bond interface named tunbond.
Bridge br-int
fail_mode: secure
datapath_type: netdev
Port tunbond
Interface tun0
type: dpdk
options: {dpdk-devargs="0000:1a:00.1", n_rxq="2"}
Interface tun1
type: dpdk
options: {dpdk-devargs="0000:d8:00.1", n_rxq="2"}
Port br-int
Interface br-int
type: internal
Now, I need to configure remote-ovn options to the ovs.
*I am confused how can I define the IP address of the bonded interface with ovs?* you dont you set the tunnel local ip on the ovs bridge containing the bond. when a inteface is managed by ovs (with the excption of the bridge port or type internal ports) asinging an ip to the interface will do nothing as ovs hooks the packets beofre they reach the ip layer of the kernel networking stack.
so to make sure that the kernel routes the network packets vi the ovs bridge you need to assign the tunnel local ip to the ovs bridge with the bound. so br-int in this case this will cause that bridge to respond to arps form the tunnel local ip and that will cause the back leaning table in ovs to be populated correctly with the remote mac address for the remote tunnel endpoints via the bound. if you use ovs-appctl and look at the dataplane(not oepnflow) flows you will see that the tunnel endcap flow is followed by an out_port action instead of an output action which renques the packet as if it arrived on the port so when the packet is encaped with the geneve header it will be reporced as if it came form the bridge local port and then mac learing/the normal action woudl forward it to the bond. at least that is how it would work for ml2/ovs if we do not have the normal action for that case we would need explcit openflow rules to send the packet to the bound. if you dont have the local tunnel endpoint ip on the brige however the tunnel traffic will not be dpdk acclerated so that is important to have set correctly.
Theses are commands for connect remote ovn services.
ovs-vsctl set open . external-ids:ovn-remote=tcp:{controller ip}:6642
ovs-vsctl set open . external-ids:ovn-encap-type=geneve
*1*
This below command make it me confused.
ovs-vsctl set open . external-ids:ovn-encap-ip={local ip}
How should I resolve this issue?
Regards,
John Haan
Hi, Sean Thank you for your reply. So I should assign an ip address to the br-int bridge, if I am understanding correctly. Thanks, John Haan. 2020년 9월 2일 (수) 오후 9:59, Sean Mooney <smooney@redhat.com>님이 작성:
On Wed, 2020-09-02 at 16:23 +0900, 한승진 wrote:
Hi,
I’m trying to implement dpdk-ovs with ovn for our openstack environment.
I create a bond interface(tunbound) with ovs and tun0 and tun1 are slave interfaces of the bond interface named tunbond.
Bridge br-int
fail_mode: secure
datapath_type: netdev
Port tunbond
Interface tun0
type: dpdk
options: {dpdk-devargs="0000:1a:00.1", n_rxq="2"}
Interface tun1
type: dpdk
options: {dpdk-devargs="0000:d8:00.1", n_rxq="2"}
Port br-int
Interface br-int
type: internal
Now, I need to configure remote-ovn options to the ovs.
*I am confused how can I define the IP address of the bonded interface with ovs?* you dont you set the tunnel local ip on the ovs bridge containing the bond. when a inteface is managed by ovs (with the excption of the bridge port or type internal ports) asinging an ip to the interface will do nothing as ovs hooks the packets beofre they reach the ip layer of the kernel networking stack.
so to make sure that the kernel routes the network packets vi the ovs bridge you need to assign the tunnel local ip to the ovs bridge with the bound. so br-int in this case
this will cause that bridge to respond to arps form the tunnel local ip and that will cause the back leaning table in ovs to be populated correctly with the remote mac address for the remote tunnel endpoints via the bound.
if you use ovs-appctl and look at the dataplane(not oepnflow) flows you will see that the tunnel endcap flow is followed by an out_port action instead of an output action which renques the packet as if it arrived on the port so when the packet is encaped with the geneve header it will be reporced as if it came form the bridge local port and then mac learing/the normal action woudl forward it to the bond. at least that is how it would work for ml2/ovs
if we do not have the normal action for that case we would need explcit openflow rules to send the packet to the bound.
if you dont have the local tunnel endpoint ip on the brige however the tunnel traffic will not be dpdk acclerated so that is important to have set correctly.
Theses are commands for connect remote ovn services.
ovs-vsctl set open . external-ids:ovn-remote=tcp:{controller ip}:6642
ovs-vsctl set open . external-ids:ovn-encap-type=geneve
*1*
This below command make it me confused.
ovs-vsctl set open . external-ids:ovn-encap-ip={local ip}
How should I resolve this issue?
Regards,
John Haan
participants (2)
-
Sean Mooney
-
한승진