gitalk icon indicating copy to clipboard operation
gitalk copied to clipboard

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

Open utterances-bot opened this issue 2 years ago • 6 comments

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

经典的bpf(classical Berkeley Packet Filter) 是非常好用的一个技术,在一些特殊的Go底层网络编程的场合,可以很好的提高性能。

https://colobu.com/2022/06/05/use-bpf-to-make-the-go-network-program-8x-faster/

utterances-bot avatar Jun 06 '22 02:06 utterances-bot

net.ListenPacket("ip4:udp", *addr) 为啥不支持指定端口号😂

nayihz avatar Jun 06 '22 02:06 nayihz

404 github.com/smallnest/go-network-programming/codec

bingoohuang avatar Jun 09 '22 02:06 bingoohuang

怎么 包不存在了呢?github.com/smallnest/go-network-programming/codec

BPing avatar Jun 13 '22 13:06 BPing

codec 包的代码已经在文中贴出。@bingoohuang @BPing

smallnest avatar Jun 13 '22 13:06 smallnest

bpf.LoadAbsolute{Off: 22, Size: 2}, //加载目的端口到寄存器

能解释一下,22 和 2 的意思嘛,怎么对应到目的端口号的呢?非常感谢

bingoohuang avatar Jun 14 '22 02:06 bingoohuang

bpf.LoadAbsolute{Off: 22, Size: 2}, //加载目的端口到寄存器

能解释一下,22 和 2 的意思嘛,怎么对应到目的端口号的呢?非常感谢

IP header + UDP header, 第22个字节处是目的端口,长度是2个字节。 这里处理的普通的ip/udp包

smallnest avatar Jun 14 '22 03:06 smallnest