Now they say this: “Thanks to libplebnet and libuinet this work became a lot easier.”
F-stack is literally forked libuinet using DPDK instead of netmap.
The net-net is that Kelsey took his work private and tencent isn’t advancing the work.
Back in the day I was sponsoring work on libuinet in order to move enough of the kernel needed for a security appliance to libuinet to underpin a performance improvement for pfsense.
Then Tencent did what they did, Patrick reacted as he did and that was over.
We pivoted to VPP. But back in 2016 it also needed a lot of work.
People in the USA develop interesting things. People in the USA hack their way around the planet.
The Russians seem to be doing mostly the hacking part.
The Europeans run around like headless chickens.
You can probably guess I'm European.
I once explored this, hitting around 125K RPS per core on Node.js. Then I realized it was pointless, the moment you add any real work (database calls, file I/O, etc.), throughput drops below 10K RPS.
Zero copy is the important part for applications that need to saturate the NIC. For example Netflix integrated encryption into the FreeBSD kernel so they could use sendfile for zero-copy transfers from SSD (in the case of very popular titles) to a TLS stream. Otherwise they would have had two extra copies of every block of video just to encrypt it.
Note however that their actual streaming stack is very different from the application stack. The constraint isn't strictly technical: ISP colocation space is expensive, so they need to have the most juiced machines they can possibly fit in the rack to control costs.
There's an obvious appeal to accomplishing zero-copy by pushing network functionality into user space instead of application functionality into kernel space, so the DPDK evolution is natural.
We just do the networking bits a bit differently now. DPDK was a product of its time.
I keep watching and trying io_uring and still can't make it work as fast with simple code as consistently for those use cases. AF_XDP gets me partly there but then you're writing ebpf... might as well go full-dpdk.
Maybe it's a skill issue on my part, though. Or just a well-fitting niche.