Hello,

On 1/13/21 3:54 AM, Zhang Jingqiang wrote:

The following is not about the protocol, but just some thoughts about the
implementation:
I haven't experienced with UDP traffic multiplexing, it seems to be the same way
as QUIC. But I still have some worry, as at the app layer we need to receive
packets one per syscall, will it be enough for more than 60000 sessions? Port
binding per cpu and large send/recv buffer are needed. I have thought using
XDP+ring on linux to decrease the recv/send syscall used, or is there any
better ways?

I agree that the kernel is slow, and UDP traffic can be accelerated by bypassing the stack.

If you're willing to dedicate a whole interface to UDP traffic, you can use DPDK or netmap. (I'm not sure about how well the latter works on recent Linux versions.) The NIC will do RSS for you, and you can spawn one thread per ring. You can pin the interrupts to the same cores as the threads doing the work for maximum efficiency.

Alternatively, you can set aside a single ring for UDP traffic: https://blog.cloudflare.com/single-rx-queue-kernel-bypass-with-netmap/

I don't have any experience with XDP, but I guess you can get similar results with it as well.

Cheers,

Vlad

_______________________________________________
Int-area mailing list
Int-area@ietf.org
https://www.ietf.org/mailman/listinfo/int-area

Reply via email to