[ovs-dev] [PATCH] userspace: Enable TSO support for non-DPDK.

William Tu u9012063 at gmail.com
Thu Jan 30 15:29:32 UTC 2020


Hi Ilya,

Thanks for your quick response.

On Thu, Jan 30, 2020 at 1:14 AM Ilya Maximets <i.maximets at ovn.org> wrote:
>
> Hi.
> I didn't test or carefully review this.  Just a couple of comments
> inline.
>
> Best regards, Ilya Maximets.
>
> On 30.01.2020 00:23, William Tu wrote:
> > For some cases, we want to use userspace datapath but not with
> > DPDK library, ex: using AF_XDP.
>
> AF_XDP is not a good example here because netdev-afxdp is not able
> to send or receive TSO packets.  All such packets will be just dropped.

Yes. AF_XDP can not support TSO.

>
> The most sane scenario right now, I think, is to run system tests
> with TSO enabled to see how different parts of OVS reacts to oversized
> packets, however we could do that even now since we don't need to
> actually enable DPDK, we just need to build with it.

That's a great point, I will test it.

>
> > The patch enables non-DPDK support
> > for TSO (TCP Segmentation Offload). I measured the performance
> > using:
> >   iperf3 -c (ns0) -> veth peer -> OVS -> veth peer -> iperf3 -s (ns1)
> > And got around 6Gbps, similar to that with DPDK.
> >
> > Tested-at: https://travis-ci.org/williamtu/ovs-travis/builds/643599592
> > Signed-off-by: William Tu <u9012063 at gmail.com>
> > ---
snip
> >  static inline bool
> > diff --git a/lib/userspace-tso.c b/lib/userspace-tso.c
> > index 6a4a0149b7f5..a1a5e1de714f 100644
> > --- a/lib/userspace-tso.c
> > +++ b/lib/userspace-tso.c
> > @@ -35,12 +35,13 @@ userspace_tso_init(const struct smap *ovs_other_config)
> >
> >          if (ovsthread_once_start(&once)) {
> >  #ifdef DPDK_NETDEV
> > -            VLOG_INFO("Userspace TCP Segmentation Offloading support enabled");
> > -            userspace_tso = true;
> > +            VLOG_INFO("Userspace TCP Segmentation Offloading support enabled"
> > +                      " by DPDK");
> >  #else
> > -            VLOG_WARN("Userspace TCP Segmentation Offloading can not be enabled"
> > -                      "since OVS is built without DPDK support.");
> > +            VLOG_INFO("Userspace TCP Segmentation Offloading support enabled"
> > +                      " by native OVS");
> >  #endif
>
> This is very confusing.  Just remove the '#ifdef' and drop the '#else' branch.
>
OK
Thanks
William


More information about the dev mailing list