Network hardware testing for real-world conditions
Midair tests routers, gateways and connected devices from test hosts placed around them. You choose the network conditions, and every run keeps its evidence.
A network device rarely fails on a clean lab link. It fails when a link drops, packets go missing or many clients connect at once. The bench creates each of these on purpose.
What network hardware testing is.The device, tested from both sides.
Network hardware testing checks how a router, gateway or connected device handles real traffic. Test hosts sit on its WAN side and its LAN side, send traffic through it and check what comes out.
The device under test needs no test agent. Agents run on the hosts around it, and Test Environment coordinates them in one run.
A result depends on the firmware, the configuration and the state of the network. Midair stores all three with the verdict.
Network conditions.Choose one to see the test it runs.
The drawing is an example bench. Each condition lights up the links it changes and shows an example log.
A Wi-Fi client joins
- What the bench does
- The Wi-Fi client host joins the network named in the bench settings. It gets an address by DHCP and pings a host on the WAN side.
- Test
wifi/connect_ping- Fails when
- The client does not associate within 30 seconds, gets no address, or loses any of the four pings.
Example log · run 214 · wifi/connect_ping
stepBring wlan0 up
stepDescribe 'bench-5g' in the WiFi subtree of Agt_WiFi
ringAssociated after 4 second(s)
ringAddress on wlan0 is 192.168.8.23
stepPing 192.0.2.1 through wlan0
ringSent 4, received 4, lost 0%
ringRound trip time min/avg/max/mdev = 1.91/2.34/3.05/0.42 ms
testPASSEDPacket loss on the WAN
- What the bench does
- The WAN host adds 2% packet loss on its link to the router with netem. A LAN client then downloads a file through the router.
- Test
wan/http_download- Fails when
- The download stalls, or the transfer rate falls below the limit set in the test.
Example log · run 221 · wan/http_download · loss=2%
netemwan0: loss 2%
stepDownload 64 MiB from 192.0.2.1 on Agt_LAN
ring64 MiB in 11.8 s, 45.5 Mbit/s
checkrate 45.5 Mbit/s, limit 20 Mbit/s
testPASSEDHigh latency
- What the bench does
- netem adds 150 ms of delay and 30 ms of jitter on the WAN link. A LAN client sends TCP traffic to the WAN host with iperf3.
- Test
wan/tcp_throughput- Fails when
- Throughput falls below the limit set in the test, or the connection resets.
Example log · run 222 · wan/tcp_throughput · delay=150ms
netemwan0: delay 150 ms 30 ms
iperf3Agt_LAN -> Agt_WAN, TCP, 4 streams, 30 s
ringreceiver 38.2 Mbit/s, 412 retransmits
checklimit 50 Mbit/s
testFAILED expected PASSED
verdictThroughput 38.2 Mbit/s is below 50 Mbit/sWAN link down
- What the bench does
- The WAN host takes its interface down for 20 seconds and brings it back. LAN clients keep pinging the router and a WAN address.
- Test
wan/link_flap- Fails when
- LAN traffic stops while the WAN is down, or WAN traffic does not return within 60 seconds.
Example log · run 223 · wan/link_flap · down=20s
linkwan0 down
ringLAN ping to the router: 20 of 20 replies
linkwan0 up
ringWAN traffic back after 7 s, limit 60 s
testPASSEDMany clients at once
- What the bench does
- Sixteen LAN clients run in network namespaces on one host. They get addresses by DHCP and send traffic through the router at the same time.
- Test
lan/many_clients- Fails when
- A client gets no address, or the total throughput falls below the limit set in the test.
Example log · run 224 · lan/many_clients · clients=16
dhcp16 of 16 clients got an address
iperf316 clients -> Agt_WAN, TCP, 60 s
ringtotal 902 Mbit/s, lowest client 51.8 Mbit/s
checklimit 800 Mbit/s
testPASSEDWhat the bench controls.Built into Test Environment.
- netem
- Delay, jitter, packet loss, duplication and reordering on a test host interface.
- tbf
- A rate limit on a link, to test a slow uplink.
- Interfaces
- Links up and down, addresses, routes and network namespaces on the test hosts.
- Services
- DHCP and PPPoE servers on a test host, so the device meets the upstream it expects.
- Wi-Fi
- Access point and client settings through tsf-wifi, on OpenWrt (UCI) or with hostapd and wpa_supplicant.
- Traffic
- iperf and iperf3 behind one interface, plus netperf, wrk and TRex. The test reads their results and decides the verdict.
- Capture
- Packet capture on the test hosts while the test runs.
- Switches, power
- A switch-ctl agent for managed switches, and power control to cut and restore power to the device.
Reproduce a failure.From a red verdict to a second run.
A run fails
The failures list shows the test, its parameters and the verdict text that the test wrote.
run 417 · bench lab-net · fw 3.1.2 · failures wifi/connect_ping FAILED expected PASSED verdict 25% of the packets to 192.0.2.1 were lost 1 unexpected of 18
Read what the run used
The record keeps the bench settings, the configuration and the exact commits of the suite and its libraries.
run 417 · configuration
env.lab-net WIFI_SSID=bench-5g
WIFI_SECURITY=wpa2 WIFI_STANDARD=ax
TA_WIFI_A_IF=wlan0
builder.conf.lock suite 9c41e07 tsf-wifi 4e1c9a2
firmware 3.1.2Start it again
Start the same suite with the same configuration. Midair creates a new record and keeps the first one as it was.
run 418 · same configuration as run 417 wifi/connect_ping FAILED expected PASSED verdict 25% of the packets to 192.0.2.1 were lost run 417 is kept as it was
Read both records
The same verdict on the same configuration means the failure reproduces. A pass on the second run means it is intermittent, so the test needs more repeats.
wifi/connect_ping · two records run 417 FAILED 25% lost fw 3.1.2 lock 9c41e07 run 418 FAILED 25% lost fw 3.1.2 lock 9c41e07 same verdict, same configuration: it reproduces
Further reading.From our engineering work.
Questions.Short answers.
What is network hardware testing?
Network hardware testing checks how routers, gateways and connected devices handle real traffic and real network faults. Test hosts on each side of the device send traffic through it and check the result.
Does the device need a test agent?
No. Agents run on hosts next to the device. The device needs only its normal network interfaces. A serial console and a controlled power outlet help, but they are optional.
Which network conditions can the bench create?
With netem on a test host: delay, jitter, packet loss, duplication and reordering. The bench can also limit the rate of a link, take a link down and run many clients at once.
Which traffic tools can tests use?
Test Environment has ready wrappers for iperf, iperf3, netperf, wrk and TRex. A test reads their results and decides the verdict.
Can we test Wi-Fi?
Yes. tsf-wifi configures access points and clients on OpenWrt or with hostapd and wpa_supplicant. The example suite joins a network, gets an address and pings through it.
Does it fit our CI?
Yes. Runs start from your CI, for example with the Jenkins plugin. An AI assistant can start runs and read failures through MCP.
Start with one device and one condition.Then add the rest of the bench.
Compare the plans on the pricing page. Prices are monthly, in euros.
Join the waitlist