[ovs-dev] [PATCH net-next 1/6] netdev-dpdk: Allow vswitchd to parse devargs as dpdk-bond args

Ilya Maximets i.maximets at samsung.com
Thu Apr 12 13:13:58 UTC 2018


> From: Tonghao Zhang <xiangxia.m.yue at gmail.com>
> 
> The bond of openvswitch has not good performance.

Any examples?

> In some
> cases we would recommend that you use Linux bonds instead
> of Open vSwitch bonds. In userspace datapath, we wants use
> bond to improve bandwidth. The DPDK has implemented it as lib.

You could use OVS bonding for userspace datapath and it has
good performance, especially after TX batching patch-set.

DPDK bonding has a variety of limitations like the requirement
to call rte_eth_tx_burst and rte_eth_rx_burst with intervals
period of less than 100ms for link aggregation modes.
OVS could not assure that.

> 
> These patches base DPDK bond to implement the dpdk-bond
> device as a vswitchd interface.
> 
> If users set the interface options with multi-pci or device names
> with ',' as a separator, we try to parse it as dpdk-bond args.
> For example, set an interface as:
> 
>     ovs-vsctl add-port br0 dpdk0 -- \
> 	    set Interface dpdk0 type=dpdk \
> 	    options:dpdk-devargs=0000:06:00.0,0000:06:00.1
> 	    
> And now these patch support to set bond mode, such as round
> robin, active_backup and balance and so on. Later some features
> of bond will be supported.

Hmm, but you're already have ability to add any virtual dpdk device
including bond devices like this:

    ovs-vsctl add-port br0 bond0 -- \
        set Interface dpdk0 type=dpdk \
        options:dpdk-devargs="eth_bond0,mode=2,slave=0000:05:00.0,slave=0000:05:00.1,xmit_policy=l34"

So, what is the profit of this patch-set?

> 					
> These patches are RFC, any proposal will be welcome. Ignore the doc,
> if these pathes is ok for openvswitch the doc will be posted.
> 					
> There are somes shell scripts, which can help us to test the patches. 
> https://github.com/nickcooper-zhangtonghao/ovs-bond-tests
> 
> Tonghao Zhang (6):
>   netdev-dpdk: Allow vswitchd to parse devargs as dpdk-bond args
>   netdev-dpdk: Allow dpdk-ethdev not support setting mtu
>   netdev-dpdk: Add netdev_dpdk_bond struct
>   netdev-dpdk: Add dpdk-bond support
>   netdev-dpdk: Add check whether dpdk-port is used
>   netdev-dpdk: Add dpdk-bond mode setting
> 
>  lib/netdev-dpdk.c | 304 +++++++++++++++++++++++++++++++++++++++++++++++++++++-
>  1 file changed, 299 insertions(+), 5 deletions(-)
> 
> -- 
> 1.8.3.1


More information about the dev mailing list