On Thu, 2023-08-03 at 22:04 +0800, huangjie.albert wrote: > AF_XDP is a kernel bypass technology that can greatly improve performance. > However, for virtual devices like veth, even with the use of AF_XDP sockets, > there are still many additional software paths that consume CPU resources. > This patch series focuses on optimizing the performance of AF_XDP sockets > for veth virtual devices. Patches 1 to 4 mainly involve preparatory work. > Patch 5 introduces tx queue and tx napi for packet transmission, while > patch 9 primarily implements zero-copy, and patch 10 adds support for > batch sending of IPv4 UDP packets. These optimizations significantly reduce > the software path and support checksum offload. > > I tested those feature with > A typical topology is shown below: > veth<-->veth-peer veth1-peer<--->veth1 > 1 | | 7 > |2 6| > | | > bridge<------->eth0(mlnx5)- switch -eth1(mlnx5)<--->bridge1 > 3 4 5 > (machine1) (machine2) > AF_XDP socket is attach to veth and veth1. and send packets to physical NIC(eth0) > veth:(172.17.0.2/24) > bridge:(172.17.0.1/24) > eth0:(192.168.156.66/24) > > eth1(172.17.0.2/24) > bridge1:(172.17.0.1/24) > eth0:(192.168.156.88/24) > > after set default route��?snat��?dnat. we can have a tests > to get the performance results. > > packets send from veth to veth1: > af_xdp test tool: > link:https://github.com/cclinuxer/libxudp > send:(veth) > ./objs/xudpperf send --dst 192.168.156.88:6002 -l 1300 > recv:(veth1) > ./objs/xudpperf recv --src 172.17.0.2:6002 > > udp test tool:iperf3 > send:(veth) > iperf3 -c 192.168.156.88 -p 6002 -l 1300 -b 60G -u Should be: '-b 0' otherwise you will experience additional overhead. And you would likely pin processes and irqs to ensure BH and US run on different cores of the same numa node. Cheers, Paolo