Freedom251 › Network Testing Software
MoonGen

What MoonGen is
MoonGen is a free, self-hosted packet generator for Linux, built on DPDK and LuaJIT for high-speed network testing. Lua scripts can craft packets in real time and control both transmission and reception, giving testers control over the traffic in a test. The project says MoonGen can fill a 10 Gbit/s Ethernet link with 64-byte packets on one CPU core while modifying each packet with Lua. It supports multiple cores, with more than 20 million packets per second per core given as a performance target.
MoonGen provides precise rate control and hardware timestamping; on supported network cards, timestamp precision and accuracy are below 100 ns. Its listed traffic includes Ethernet, IPv4, IPv6, UDP, TCP, ARP, ICMP, and PTP. The README describes using it to benchmark systems such as firewalls and identify which packets a system under test drops. A simplified command-line interface is available for quick tests, while the full API supports custom scripts and more complex setups. The related MoonEm tool can emulate path delay, rate limits, and random packet loss. MoonGen is MIT licensed. Installation uses a build script, Debian or Ubuntu dependencies, and binding network cards to DPDK; available features vary by NIC model.
Who it suits
MoonGen suits network engineers and researchers who need to generate and measure traffic for system benchmarks, including firewall tests. It is best suited to Linux users comfortable with DPDK, network-card setup, and Lua scripting for custom tests.
What it does well
- Free to use and MIT licensed.
- Lua scripts control packet construction, transmission, and reception.
- Supports multiple CPU cores for traffic generation.
- Offers rate control and hardware timestamping on supported NICs.
- Includes a simplified command-line interface and a full API.
- MoonEm can emulate path delay, rate limits, and random packet loss.
What to know first
- Requires Linux and a DPDK-compatible network card.
- NIC feature support varies by model.
- Hardware checksum offloading and timestamping do not work on ixgbe NICs with this version.
- Full API use requires custom Lua scripts.
Limits
MoonGen requires a DPDK-compatible network card, and available features depend on its model. This version does not support hardware checksum offloading or timestamping on ixgbe NICs; full API use requires custom Lua scripts.
Plans
| Plan | Billed and limits | Price |
|---|---|---|
| MoonGen (MIT licensed) | Requires DPDK compatible NICs · NIC features vary by model · Requires custom Lua scripts for full API use | Free |
As github.com lists them, read 8 Oct 2026. The maker's own page has the final word.
Getting started
- Use a Linux system with a DPDK-compatible network card.
- Install the documented Debian or Ubuntu dependencies.
- Run the build script.
- Bind the network card to DPDK.
- Use the simplified command-line interface for a quick test, or write Lua scripts for custom API use.
Verdict
Choose MoonGen if you need a free Linux packet generator with scriptable traffic control and network measurement. Look elsewhere if your network cards lack the required DPDK support or you need hardware checksum offloading or timestamping on ixgbe NICs with this version.
Questions
Is MoonGen free?
Yes. MoonGen is listed as free, with a price of $0, and the project is MIT licensed.
What platforms does MoonGen support?
MoonGen runs on Linux as self-hosted software.
What hardware does MoonGen require?
It requires a DPDK-compatible network card. Basic functionality is available on DPDK-supported NICs, while timestamping and rate control support vary by model.
What traffic protocols does MoonGen support?
Its listed traffic includes Ethernet, IPv4, IPv6, UDP, TCP, ARP, ICMP, and PTP.
Does MoonGen support hardware timestamping?
Yes, with precision and accuracy below 100 ns on supported NICs. This version does not support timestamping on ixgbe NICs.
How do I install MoonGen?
The documented route uses a build script, Debian or Ubuntu dependencies, and binding network cards to DPDK.
Facts from MoonGen's own pages
- Hardware support
- Basic functionality is available on DPDK-supported NICs; hardware timestamping and rate control support varies by NIC model. · github.com, 8 Oct 2026
- Installation
- The documented installation uses a build script and requires binding NICs to DPDK; Debian and Ubuntu dependencies are listed. · github.com, 8 Oct 2026
- Interface
- MoonGen offers a simplified command-line interface for quick tests and a full API for custom scripts and more complex test setups. · github.com, 8 Oct 2026
- Known limitation
- The README says hardware checksum offloading and timestamping do not work on ixgbe NICs with this version of MoonGen. · github.com, 8 Oct 2026
- License
- The repository identifies the project as MIT licensed. · github.com, 8 Oct 2026
- Measurement
- MoonGen supports precise rate control and hardware timestamping, with timestamp precision and accuracy below 100 ns on supported NICs. · github.com, 8 Oct 2026
- Packet control
- User-provided Lua scripts craft packets in real time and control packet reception as well as transmission. · github.com, 8 Oct 2026
- Path emulation
- The related MoonEm tool can emulate path delay, rate limits, and random packet loss. · github.com, 8 Oct 2026
- Performance
- The README says MoonGen can saturate a 10 Gbit/s Ethernet link with 64 byte packets on one CPU core while modifying each packet with a Lua script. · github.com, 8 Oct 2026
- Purpose
- MoonGen is a scriptable high-speed packet generator built on DPDK and LuaJIT. · github.com, 8 Oct 2026
- Scaling
- MoonGen supports multiple cores and reports more than 20 million packets per second per CPU core as a performance target. · github.com, 8 Oct 2026
- Use cases
- The README describes using MoonGen to benchmark systems such as firewalls and to check which packets a system under test drops. · github.com, 8 Oct 2026
Where MoonGen stands on Freedom251
- Network Testing Software#18 of 33