On Tue, Nov 19, 2019 at 12:09:02PM -0800, William Tu wrote: > On Tue, Nov 19, 2019 at 08:51:19PM +0100, Ilya Maximets wrote: > > On 19.11.2019 20:45, William Tu wrote: > > > On Tue, Nov 19, 2019 at 05:52:22PM +0100, Ilya Maximets wrote: > > >> On 19.11.2019 17:16, Eelco Chaudron wrote: > > >>> > > >>> > > >>> On 7 Nov 2019, at 12:36, Ilya Maximets wrote: > > >>> > > >>>> Until now there was only two options for XDP mode in OVS: SKB or DRV. > > >>>> i.e. 'generic XDP' or 'native XDP with zero-copy enabled'. > > >>>> > > >>>> Devices like 'veth' interfaces in Linux supports native XDP, but > > >>>> doesn't support zero-copy mode. This case can not be covered by > > >>>> existing API and we have to use slower generic XDP for such devices. > > >>>> There are few more issues, e.g. TCP is not supported in generic XDP > > >>>> mode for veth interfaces due to kernel limitations, however it is > > >>>> supported in native mode. > > >>>> > > >>>> This change introduces ability to use native XDP without zero-copy > > >>>> along with best-effort configuration option that enabled by default. > > >>>> In best-effort case OVS will sequentially try different modes starting > > >>>> from the fastest one and will choose the first acceptable for current > > >>>> interface. This will guarantee the best possible performance. > > >>>> > > >>>> If user will want to choose specific mode, it's still possible by > > >>>> setting the 'options:xdp-mode'. > > >>>> > > >>>> This change additionally changes the API by renaming the configuration > > >>>> knob from 'xdpmode' to 'xdp-mode' and also renaming the modes > > >>>> themselves to be more user-friendly. > > >>>> > > >>>> The full list of currently supported modes: > > >>>> * native-with-zerocopy - former DRV > > >>>> * native - new one, DRV without zero-copy > > >>>> * generic - former SKB > > >>>> * best-effort - new one, chooses the best available from > > >>>> 3 above modes > > >>>> > > >>>> Since 'best-effort' is a default mode, users will not need to > > >>>> explicitely set 'xdp-mode' in most cases. > > >>>> > > >>>> TCP related tests enabled back in system afxdp testsuite, because > > >>>> 'best-effort' will choose 'native' mode for veth interfaces > > >>>> and this mode has no issues with TCP. > > >>> Patch in general looks good, two small comments inline. > > >> > > >> Thanks for review. > > >> > > >>> > > >>> The only thing that bothers me is the worse performance of the TAP > > >>> interface with the new default config. Can we somehow keep the old > > >>> behavior for TAP interfaces? > > >> > > >> Could you check if TCP works over tap interfaces in generic mode? > > >> For me the point is that correctness is better than performance. > > >> I also hope that native implementation for tap will be improved > > >> over time. > > >> > > > > > > I agree that we should first make sure correctness. > > > I created a simple TCP test using br0, since br0 is a tap device. > > > Unfortunately it does not work... > > > > > > --- > > > ovs-vsctl -- add-br br0 -- set Bridge br0 datapath_type=netdev > > > > > > ip netns add at_ns0 > > > ip link add p0 type veth peer name afxdp-p0 > > > ip link set p0 netns at_ns0 > > > ip link set dev afxdp-p0 up > > > > > > ovs-vsctl add-port br0 afxdp-p0 > > > ovs-vsctl -- set interface afxdp-p0 options:n_rxq=1 type="afxdp" > > > options:xdp-mode=native > > > > > > ip netns exec at_ns0 sh << NS_EXEC_HEREDOC > > > ip addr add "10.1.1.1/24" dev p0 > > > ip link set dev p0 up > > > NS_EXEC_HEREDOC > > > > > > ovs-vsctl -- set interface br0 options:n_rxq=1 type="afxdp" > > > options:xdp-mode=native > > > > I'm not sure if this is a valid thing to do. > > After changing the netdev type this device is no linger TAP device. > > Now it's a permanent tap device that detached from any application > > and opened by af_xdp from the other side. > > > > BTW, changing the type of "internal" port doesn't sound safe. > > I see, thanks. > > Then if we don't change br0 to afxdp type, the TCP test > below still fails, which I think should pass because > we are using native mode for veth now. > > I think even native mode doesn't work for TCP?
I forgot to turn off tx offload after doing ip netns exec at_ns0 ethtool -K p0 tx off TCP works fine. William _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
