smallnest / gitalk

gitalk for colobu
19 stars 0 forks source link

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

Open utterances-bot opened 2 years ago

utterances-bot commented 2 years ago

使用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/

nayihz commented 2 years ago

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

bingoohuang commented 2 years ago

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

BPing commented 2 years ago

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

smallnest commented 2 years ago

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

bingoohuang commented 2 years ago

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

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

smallnest commented 2 years ago

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

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

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