使用 AF_XDP Socket 更高效的网络传输

鸟窝 at 
使用AF_XDP Socket更高效的网络传输的配图
Linux 网络栈并不缺乏功能,它的表现也很好 足以满足大多数用途。但是,在高速网络下,传统网络编程的额外开销占比太大了。在前一篇关于 syscall.Socket 的文章中,我们介绍了 AF_PACKET 类型的 socket,它的性能着实一般,所有的数据都得在用户态和内核态之间做转换,而且在高并发的情况下还有大量的中断。使用 eBPF XDP 可以完美解决高性能的问题,我们在更早的文章中介绍了 XDP 的技术,Björn Töpel 在 Linux 4.18 版本中为 Socket 增加了一个协议族 AF_XDP,可以利用 Socket 接口和 XDP 技术实现高性能的网络读写。2019 ……