使用 BPF, 将 Go 网络程序的吞吐提升 8 倍

鸟窝 at 
经典的 bpf(classical Berkeley Packet Filter) 是非常好用的一个技术,在一些特殊的 Go 底层网络编程的场合,可以很好的提高性能。背景先前我开发过一个 Go UDP 应用程序, 客户端和服务端通过 UDP 程序,通过 raw socket 进行通讯。程序的目的比较特殊,这里我以一个简单的程序为例介绍。事实上,我说我使用 rawsocket 方式并不严谨,我并不是采用下面的方式实现 socket 并进行通讯的(链路层的方式):1234567fd, err:= syscall.Socket(syscall.AF_PACKET, syscall.SOCK_RAW,……