用 Go 和 AF_XDP 打造 100 Gbps 数据包生成器
Wireblast a 100 Gbps packet generator in Go using AF_XDP
如果你关注我的博客,就知道我热衷于在软件层面让数据包跑得更快。今天,我发布了一款名为 Wireblast 的新工具,它完全用 Go 语言编写,并借助 AF_XDP 技术实现了线速(Line-rate)的数据包生成能力,能够轻松达到 100 Gbps 的吞吐量。这篇文章将带你深入了解如何突破 Go 语言在网络性能上的传统限制,从基础的 net.Dial 到系统调用,再到 AF_PACKET 和闪电般快速的 AF_XDP,探索高性能网络编程的极限。
如果你关注我的博客有一段时间了,你会知道我对在软件中让数据包跑得飞快有着特殊的偏爱。
HN 评论区
20- mjevans
https://toonk.io/wireblast-building-a-line-rate-packet-gener...
- spaceywilly
这很有趣,感谢分享。看起来它可能成为测试高性能网络非常有用的工具。
我在想是否可以用 TC BPF 来实现类似的功能,而不是 AF_XDP?我对 AF_XDP 唯一的顾虑是它需要特殊的网卡支持,因此对“普通用户”来说可能用处不大。我在想 TC BPF 是否也能行,因为它同样绕过了内核网络栈,我相信你可以直接将数据包放入网卡的 TX 队列进行发送。
- bgpdude
视频演示也很棒