On Mon, Sep 24, 2018 at 03:25:20PM +0000, Eric Tremblay wrote:
> It does not work even if I do the following:
> 
> testpmd> set fwd csum
> Set csum packet forwarding mode
> testpmd> csum set tcp hw 0
> Parse tunnel is off
> IP checksum offload is sw
> UDP checksum offload is sw
> TCP checksum offload is hw
> SCTP checksum offload is sw
> Outer-Ip checksum offload is sw
> testpmd> csum set tcp hw 1
> Parse tunnel is off
> IP checksum offload is sw
> UDP checksum offload is sw
> TCP checksum offload is hw
> SCTP checksum offload is sw
> Outer-Ip checksum offload is sw
> testpmd>
> 
> I also tried using a NIC but it doesn't work either. Packets sent through the 
> virtio-user tap interface arrive on the other server with an incorrect 
> checksum. Is the checksum offloading broken for this type of virtual device?

The Rx and Tx checksum offloading works in virtio-user.

Below are the steps I used on my machine:

# Launch the testpmd with two virtio-user ports
$ ./x86_64-native-linuxapp-gcc/app/testpmd \
        -l 0,1 \
        --file-prefix=vhost-kernel \
        --vdev=virtio_user0,path=/dev/vhost-net,queue_size=1024,iface=virtio0 \
        --vdev=virtio_user1,path=/dev/vhost-net,queue_size=1024,iface=virtio1 \
        --no-pci \
        -- \
        -i \
        --disable-hw-vlan \
        --enable-lro \
        --enable-rx-cksum \
        --eth-peer=0,00:01:02:03:04:01 \
        --eth-peer=1,00:01:02:03:04:02

# Configure and start testpmd
testpmd> set fwd csum
testpmd> csum set tcp hw 0
testpmd> csum set tcp hw 1
testpmd> start

# Configure the first tap interface
$ ifconfig virtio0 hw ether 00:01:02:03:04:01
$ ifconfig virtio0 1.1.1.1 up

# Create a network namespace
$ ip netns add ns1

# Configure the second tap interface
$ ip link set virtio1 netns ns1
$ ip netns exec ns1 ifconfig virtio1 hw ether 00:01:02:03:04:02
$ ip netns exec ns1 ifconfig virtio1 1.1.1.2 up

# Start the iperf server
$ ip netns exec ns1 iperf -s -i 1

# Start the iperf client
$ iperf -c 1.1.1.2 -i 1 -t 60


> 
> Eric 
> 
> -----Original Message-----
> From: Tiwei Bie <[email protected]> 
> Sent: September 19, 2018 1:08 AM
> To: Eric Tremblay <[email protected]>
> Cc: [email protected]; [email protected]; [email protected]
> Subject: Re: [dpdk-users] Virtio-user exceptional path performance
> 
> On Tue, Sep 18, 2018 at 02:45:24PM +0000, Eric Tremblay wrote:
> > Thanks for the reply.
> > 
> > With the patch, the tap interface is created in the kernel even when 
> > specifying the --enable-lro and --enable-rx-cksum options. However, the 
> > behaviour is the same as without these options. That is, ethtool shows LRO 
> > and rx-checksum as off (and [fixed]) and TCP traffic gets dropped unless 
> > tx-checksum is turned off. The difference is that testpmd now says that LRO 
> > and RX checksum are on (even though they don't seem to be).
> 
> Are you using csum fwd in testpmd? You also need to enable the hw csum 
> offload. You can do it via:
> 
> testpmd> csum set tcp hw 0
> testpmd> csum set tcp hw 1
> 
> And make sure you get below output:
> 
> TCP checksum offload is hw
> 
> > 
> > Eric
> > 
> > -----Original Message-----
> > From: Tiwei Bie <[email protected]>
> > Sent: September 18, 2018 1:30 AM
> > To: Eric Tremblay <[email protected]>; [email protected]
> > Cc: [email protected]; [email protected]
> > Subject: Re: [dpdk-users] Virtio-user exceptional path performance
> > 
> > On Tue, Sep 04, 2018 at 05:54:20PM +0000, Eric Tremblay wrote:
> > > Hello,
> > > 
> > > I am testing the performance capabilities of the virtio-user exceptional 
> > > path for use in container networking scenarios. I am trying to reproduce 
> > > the results obtained in Test Case 1 described in the paper "VIRTIO-USER: 
> > > A New Versatile Channel for Kernel-Bypass Networks".  That is, I am 
> > > creating two virtio-user vdevs in testpmd, putting each one in separate 
> > > network namespaces and running iperf3 between the two. However, I am 
> > > unable to obtain the near 25Gbps throughput shown in the paper. Instead, 
> > > I obtained a mere 3Gbps. Has anyone else been able to reproduce these 
> > > results? My understanding is that this type of virtual device takes 
> > > advantage of both checksum offloading and LRO in order to get such high 
> > > throughput. However, for some reason, I am unable to use RX checksum 
> > > offloading nor LRO in my setup. If I specify the --enable-lro and 
> > > --enable-rx-cksum options in testpmd (as shown here 
> > > https://doc.dpdk.org/guides-17.11/howto/virtio_user_as_exceptional_path.html),
> > >  the tap device is never created in the kernel. If I do not specify these 
> > > options, the tap is created correctly but the rx-checksum and LRO are off 
> > > and cannot be turned on using ethtool (they are marked as [fixed]).
> > 
> > Somehow below fix isn't backported to 17.11 while the commit it fixed was 
> > backported.
> > 
> > https://git.dpdk.org/dpdk/commit/?id=bce7e9050f9b
> > commit bce7e9050f9b ("net/virtio-user: fix start with kernel vhost")
> > 
> > Please apply above fix locally and see if it works.
> > 
> > Thanks
> > 
> > > 
> > > Does anyone have any idea what may be preventing me from taking advantage 
> > > of checksum offloading and LRO? Also, I am I right in assuming that this 
> > > is the reason why the performance is so poor or could there be another 
> > > problem with my setup? I am using DPDK 17.11 on CentOS 7.5. Any help 
> > > would be appreciated.
> > > 
> > > Regards,
> > > 
> > > Eric
> > > 

Reply via email to