Hi, On Mon, Jul 17, 2017 at 11:34:21AM -0700, Jerry Scharf wrote: > The only thing I know that uses DPDK is ostineto, a network traffic > generator tool. I think it is going to be a while before any of this gets > integrated into the kernel for general networking. My understanding is that > this is for people who really want to squeeze all they can out of a 10/40G > interface.
We do use DPDK at haproxy technologies for our traffic generation tools. But while it's useful to process packets, it really is not when you have to deal with userland code requiring a full-fledged TCP stack. A DPDK-based TCP stack would have to be completely callback-oriented, which is a very different way to deal with events than what is done with syscalls. While this model would provide a larger scalability, it also comes with some difficulties when you have to deal with some inevitable locking for example. It also doesn't make it as easy to batch processing to benefit from the code being hot in the instruction cache. But nowadays haproxy uses some callbacks so at least "only" the polling+fd+tcp+udp parts would have to be rewritten. SSL would have to be dropped, just like UNIX sockets. And we wouldn't benefit from some of the goodies we currently have in the stacks provided by the operating systems, like delayed ACKs, fastopen and so on. The real good stuff about DPDK is that it allows to build multi-10/100G switches and routers from affordable hardware when you know exactly what you want to achieve. You must not have to use high throughput between the system's stack and the devices however. This is perfect to route traffic between VMs for example. Willy

