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