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.

Reply via email to