Hi Pavel, Appreciate for your help.
1. You wrote "we work in proxy mode". Does it mean your code just look at IPHeader and TCPheader without handling TCP payload? In our use case, we need to decrypt TLS traffic(handle full TCP payload). 2. You wrote "much bigger performance gain for UDP traffic where the packets are more but smaller in our use case". Does it mean UDP-payload-size is NOT 1400 bytes (MTU size)? And it is as smaller as 64 bytes for example? I looked at https://www.bittorrent.org/beps/bep_0029.html for UTP protocol. Do you handle UTP payload, or just "relay" it like proxy? 3. Again, appreciate for your response. Thanks ________________________________ From: Pavel Vazharov <frea...@gmail.com> Sent: Monday, March 29, 2021 1:38 To: Hao Chen <earthlovepyt...@outlook.com> Cc: users@dpdk.org <users@dpdk.org> Subject: Re: [dpdk-users] What is TCP read performance by using DPDK? Hi, You can look at F-stack<https://github.com/F-Stack/f-stack/> or Seastar<http://seastar.io/> for some performance measurements. The first one uses the networking stack from FreeBSD 11, AFAIK. The second one has their own networking stack. Both of them work over DPDK. We also started with F-stack but later modified it to extract the DPDK code out of it so that now we use a separate TCP stack per thread with shared nothing design. I can share with you our performance measurements with real traffic from an ISP provider but they are not very relevant because we work in proxy mode, not as a server. However, our experience is roughly the following: - for TCP (port 80) traffic the proxy over DPDK was about 1.5 times faster than the same proxy working over standard Linux kernel. The application layer was the same in both tests - a straightforward TCP proxy of port 80 traffic. - we observed much bigger performance gain for UDP traffic where the packets are more but smaller in our use case. Here we tested with UTP (uTorrent Traffic Protocol). We have our own stack for UTP traffic processing which works over UDP sockets and again we run the same application code once over standard Linux and over DPDK. The DPDK version was able to handle the same amount of traffic on 2 cores with about 0.7% packet losses as the Linux version handled on 8 cores with the same packet losses. So, here we observed about 4 times improvement here. However, take our measurements with a grain of salt because although the application layer was the same for the Linux case we do some packet inspection in the Linux kernel to filter out asymmetric TCP traffic, to match UTP traffic, etc. This filtration and matching was done in the DPDK layer of the new proxy so the code under test was not 100% the same, more like 95% the same. In addition to that, the UDP measurements were done on two separate machines with the same type of CPUs and NICs but still they were two separate machines. Regards, Pavel.