Wireblast a 100 Gbps packet generator in Go using AF_XDP

24 pointsposted 5 hours ago
by bgpdude

9 Comments

spaceywilly

3 hours ago

That’s very interesting, thank you for sharing. Looks like it could be a very useful tool for testing high performance networking.

I wonder if something similar could be done using TC BPF instead of AF_XDP? My only reservation about AF XDP is that it requires a special NIC to support it, so it may not be useful for a “regular Joe” user. I wonder if TC BPF would also work since it similarly bypasses the Kernel networking stack, I believe you can put packets directly into the NIC TX queue for transmission

tptacek

2 hours ago

You can, but the interesting thing about AF_XDP is that you've got a userland path to writing directly to the card's DMA buffers; TC BPF still allocates an skbuff for every packet you send.

Palomides

2 hours ago

it seems like every NIC on the market that can do 100Gb has support in its linux kernel driver, so probably not a big deal in practice

bgpdude

2 hours ago

you can use generic af_xdp which sits at the TC layer. Just get a bit less performance.

bgpdude

2 hours ago

That's what the veth examples are using

barryvand

43 minutes ago

ooh no more DPDK, this will make it a lot easier. I just started working with trex but it's all really complicated. Going to give this a try