emmericp / MoonGen

MoonGen is a fully scriptable high-speed packet generator built on DPDK and LuaJIT. It can saturate a 10 Gbit/s connection with 64 byte packets on a single CPU core while executing user-provided Lua scripts for each packet. Multi-core support allows for even higher rates. It also features precise and accurate timestamping and rate control.
MIT License
1.05k stars 235 forks source link

Rate Limiting in MoonGen Simple vs Example Scripts #299

Open AqsaKashaf opened 3 years ago

AqsaKashaf commented 3 years ago

Hi,

When I run moon-gen simple, I can successfully set a rate limit. However, when I use the scripts in sxample folder, it gives me the warning [WARN] Per-queue rate limit is not supported on this device, setting per-device rate limit to 1 Mbit/s instead (note: this may fail as well if the NIC doesn't support any rate limiting).

and does not set the rate. If the problem was my NIC, then moongen-simple should also not set the rate.

`sudo ./build/MoonGen examples/l3-tcp-syn-flood.lua 0 -r 10 [INFO] Initializing DPDK. This will take a few seconds... EAL: Detected 32 lcore(s) EAL: No free hugepages reported in hugepages-1048576kB EAL: Probing VFIO support... EAL: PCI device 0000:04:00.0 on NUMA socket 0 EAL: probe driver: 8086:1521 net_e1000_igb EAL: PCI device 0000:04:00.1 on NUMA socket 0 EAL: probe driver: 8086:1521 net_e1000_igb EAL: PCI device 0000:06:00.0 on NUMA socket 0 EAL: probe driver: 8086:1572 net_i40e EAL: PCI device 0000:06:00.1 on NUMA socket 0 EAL: probe driver: 8086:1572 net_i40e EAL: PCI device 0000:06:00.2 on NUMA socket 0 EAL: probe driver: 8086:1572 net_i40e EAL: PCI device 0000:06:00.3 on NUMA socket 0 EAL: probe driver: 8086:1572 net_i40e [INFO] Found 1 usable devices: Device 0: 3C:FD:FE:05:94:C2 (Intel Corporation Ethernet Controller X710 for 10GbE SFP+) [INFO] Device 0 (3C:FD:FE:05:94:C2) is up: 10000 MBit/s [WARN] Per-queue rate limit is not supported on this device, setting per-device rate limit to 10 Mbit/s instead (note: this may fail as well if the NIC doesn't support any rate limiting). [INFO] Detected an IPv4 address.

[Device: id=0] TX: 14.84 Mpps, 7597 Mbit/s (9972 Mbit/s with framing) [Device: id=0] TX: 14.60 Mpps, 7476 Mbit/s (9812 Mbit/s with framing) [Device: id=0] TX: 14.86 Mpps, 7609 Mbit/s (9986 Mbit/s with framing) [Device: id=0] TX: 14.85 Mpps, 7604 Mbit/s (9981 Mbit/s with framing) [Device: id=0] TX: 14.85 Mpps, 7604 Mbit/s (9981 Mbit/s with framing)`

and with moon-gen simple I get:

sudo ./moongen-simple start tcp-syn-flood4:0:0:rate=10mbit/s [INFO] Initializing DPDK. This will take a few seconds... EAL: Detected 32 lcore(s) EAL: No free hugepages reported in hugepages-1048576kB EAL: Probing VFIO support... EAL: PCI device 0000:04:00.0 on NUMA socket 0 EAL: probe driver: 8086:1521 net_e1000_igb EAL: PCI device 0000:04:00.1 on NUMA socket 0 EAL: probe driver: 8086:1521 net_e1000_igb EAL: PCI device 0000:06:00.0 on NUMA socket 0 EAL: probe driver: 8086:1572 net_i40e EAL: PCI device 0000:06:00.1 on NUMA socket 0 EAL: probe driver: 8086:1572 net_i40e EAL: PCI device 0000:06:00.2 on NUMA socket 0 EAL: probe driver: 8086:1572 net_i40e EAL: PCI device 0000:06:00.3 on NUMA socket 0 EAL: probe driver: 8086:1572 net_i40e [INFO] Found 1 usable devices: Device 0: 3C:FD:FE:05:94:C2 (Intel Corporation Ethernet Controller X710 for 10GbE SFP+) [INFO] Flow tcp-syn-flood4 => 0x1 [INFO] Waiting for devices to come up... [INFO] Device 0 (3C:FD:FE:05:94:C2) is up: 10000 MBit/s [INFO] 1 device is up. [Device: id=0] TX: 0.02 Mpps, 10 Mbit/s (13 Mbit/s with framing) [Device: id=0] RX: 0.00 Mpps, 0 Mbit/s (0 Mbit/s with framing) [Flow: dev=0 uid=0x1] TX: 0.00 Mpps, 0 Mbit/s (0 Mbit/s with framing) [Flow: dev=0 uid=?] RX: 0.02 Mpps, 9 Mbit/s (12 Mbit/s with framing) [Device: id=0] TX: 0.02 Mpps, 10 Mbit/s (13 Mbit/s with framing) [Flow: dev=0 uid=?] RX: 0.02 Mpps, 9 Mbit/s (12 Mbit/s with framing) [Device: id=0] RX: 0.00 Mpps, 0 Mbit/s (0 Mbit/s with framing) [Flow: dev=0 uid=0x1] TX: 0.00 Mpps, 0 Mbit/s (0 Mbit/s with framing) [Device: id=0] TX: 0.02 Mpps, 10 Mbit/s (13 Mbit/s with framing) [Flow: dev=0 uid=?] RX: 0.02 Mpps, 9 Mbit/s (12 Mbit/s with framing) [Flow: dev=0 uid=0x1] TX: 0.00 Mpps, 0 Mbit/s (0 Mbit/s with framing) [Device: id=0] RX: 0.00 Mpps, 0 Mbit/s (0 Mbit/s with framing) [Device: id=0] TX: 0.02 Mpps, 10 Mbit/s (13 Mbit/s with framing) [Flow: dev=0 uid=?] RX: 0.02 Mpps, 9 Mbit/s (12 Mbit/s with framing) [Flow: dev=0 uid=0x1] TX: 0.00 Mpps, 0 Mbit/s (0 Mbit/s with framing) [Device: id=0] RX: 0.00 Mpps, 0 Mbit/s (0 Mbit/s with framing) ^C[Flow: dev=0 uid=?] RX: 0.02 (StdDev 0.00) Mpps, 9 (StdDev 0) Mbit/s (12 Mbit/s with framing), total 86670 packets with 5546880 bytes (incl. CRC) [Flow: dev=0 uid=0x1] TX: 0.00 (StdDev 0.00) Mpps, 0 (StdDev 0) Mbit/s (0 Mbit/s with framing), total 0 packets with 0 bytes (incl. CRC) [Device: id=0] TX: 0.02 (StdDev 0.00) Mpps, 10 (StdDev 0) Mbit/s (13 Mbit/s with framing), total 86720 packets with 5896960 bytes (incl. CRC) [Device: id=0] RX: 0.00 (StdDev 0.00) Mpps, 0 (StdDev 0) Mbit/s (0 Mbit/s with framing), total 0 packets with 0 bytes (incl. CRC)