Testes de hardware de rede em condições reais

O Midair testa routers, gateways e dispositivos ligados a partir de máquinas de teste colocadas à volta deles. Escolhe as condições de rede, e cada execução guarda as suas evidências.

Um dispositivo de rede raramente falha numa ligação limpa de laboratório. Falha quando uma ligação cai, se perdem pacotes ou muitos clientes se ligam ao mesmo tempo. A bancada cria cada uma destas situações de propósito.

O que são testes de hardware de rede.O dispositivo, testado dos dois lados.

Os testes de hardware de rede verificam como um router, um gateway ou um dispositivo ligado trata tráfego real. As máquinas de teste ficam do lado WAN e do lado LAN, enviam tráfego através do dispositivo e verificam o que sai.

O dispositivo em teste não precisa de agente de teste. Os agentes correm nas máquinas à volta dele, e o Test Environment coordena-os na mesma execução.

O resultado depende do firmware, da configuração e do estado da rede. O Midair guarda os três junto ao veredicto.

Condições de rede.Escolha uma para ver o teste que corre.

O desenho é uma bancada de exemplo. Cada condição acende as ligações que altera e mostra um registo de exemplo.

Exemplo Test Environment loss 2% +150 ms down WAN Máquina WAN agente · netem Router sem agente dispositivo em teste Cliente Wi-Fi agente · tsf-wifi Cliente LAN agente Clientes LAN ×16 agente · netns

Um cliente Wi-Fi liga-se

O que a bancada faz
A máquina cliente Wi-Fi liga-se à rede indicada nas definições da bancada. Obtém um endereço por DHCP e faz ping a uma máquina do lado WAN.
Teste
wifi/connect_ping
Falha quando
O cliente não se associa em 30 segundos, não obtém endereço ou perde algum dos quatro pings.
Registo de exemplo · 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
testPASSED

Perda de pacotes na WAN

O que a bancada faz
A máquina WAN acrescenta 2% de perda de pacotes na ligação ao router, com o netem. Depois, um cliente LAN descarrega um ficheiro através do router.
Teste
wan/http_download
Falha quando
A descarga para, ou a taxa de transferência fica abaixo do limite definido no teste.
Registo de exemplo · 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
testPASSED

Latência alta

O que a bancada faz
O netem acrescenta 150 ms de atraso e 30 ms de jitter na ligação WAN. Um cliente LAN envia tráfego TCP para a máquina WAN com o iperf3.
Teste
wan/tcp_throughput
Falha quando
O débito fica abaixo do limite definido no teste, ou a ligação é reiniciada.
Registo de exemplo · 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/s

Ligação WAN em baixo

O que a bancada faz
A máquina WAN desliga a sua interface durante 20 segundos e volta a ligá-la. Os clientes LAN continuam a fazer ping ao router e a um endereço WAN.
Teste
wan/link_flap
Falha quando
O tráfego LAN para enquanto a WAN está em baixo, ou o tráfego WAN não volta em 60 segundos.
Registo de exemplo · 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
testPASSED

Muitos clientes ao mesmo tempo

O que a bancada faz
Dezasseis clientes LAN correm em namespaces de rede numa só máquina. Obtêm endereços por DHCP e enviam tráfego através do router ao mesmo tempo.
Teste
lan/many_clients
Falha quando
Um cliente não obtém endereço, ou o débito total fica abaixo do limite definido no teste.
Registo de exemplo · 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
testPASSED

O que a bancada controla.Incluído no Test Environment.

netem
Atraso, jitter, perda, duplicação e reordenação de pacotes numa interface de uma máquina de teste.
tbf
Um limite de débito numa ligação, para testar um uplink lento.
Interfaces
Ligações em cima e em baixo, endereços, rotas e namespaces de rede nas máquinas de teste.
Serviços
Servidores DHCP e PPPoE numa máquina de teste, para o dispositivo encontrar o upstream que espera.
Wi-Fi
Definições de ponto de acesso e de cliente através do tsf-wifi, em OpenWrt (UCI) ou com hostapd e wpa_supplicant.
Tráfego
iperf e iperf3 com uma interface comum, e também netperf, wrk e TRex. O teste lê os resultados e decide o veredicto.
Captura
Captura de pacotes nas máquinas de teste durante o teste.
Switches, energia
Um agente switch-ctl para switches geridos e controlo da alimentação para cortar e repor a energia do dispositivo.

Reproduzir uma falha.De um veredicto vermelho a uma segunda execução.

Exemplo
1 / 4

Uma execução falha

A lista de falhas mostra o teste, os seus parâmetros e o texto do veredicto que o teste escreveu.

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
2 / 4

Ver o que a execução usou

O registo guarda as definições da bancada, a configuração e os commits exatos da suite e das suas bibliotecas.

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.2
3 / 4

Executar de novo

Execute a mesma suite com a mesma configuração. O Midair cria um registo novo e mantém o primeiro como estava.

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
4 / 4

Ler os dois registos

O mesmo veredicto com a mesma configuração significa que a falha se reproduz. Se a segunda execução passar, a falha é intermitente e o teste precisa de mais repetições.

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

Perguntas.Respostas curtas.

O que são testes de hardware de rede?

Os testes de hardware de rede verificam como routers, gateways e dispositivos ligados tratam tráfego real e falhas reais de rede. Máquinas de teste em cada lado do dispositivo enviam tráfego através dele e verificam o resultado.

O dispositivo precisa de um agente de teste?

Não. Os agentes correm em máquinas ao lado do dispositivo. O dispositivo só precisa das suas interfaces de rede normais. Uma consola série e uma tomada controlada ajudam, mas são opcionais.

Que condições de rede a bancada consegue criar?

Com o netem numa máquina de teste: atraso, jitter, perda, duplicação e reordenação de pacotes. A bancada também limita o débito de uma ligação, desliga uma ligação e corre muitos clientes ao mesmo tempo.

Que ferramentas de tráfego os testes podem usar?

O Test Environment tem wrappers prontos para iperf, iperf3, netperf, wrk e TRex. O teste lê os resultados e decide o veredicto.

Podemos testar Wi-Fi?

Sim. O tsf-wifi configura pontos de acesso e clientes em OpenWrt ou com hostapd e wpa_supplicant. A suite de exemplo liga-se a uma rede, obtém um endereço e faz ping através dela.

Encaixa na nossa CI?

Sim. As execuções começam a partir da sua CI, por exemplo com o plugin para Jenkins. Um assistente de IA pode lançar execuções e ler falhas através de MCP.

Comece por um dispositivo e uma condição.Depois junte o resto da bancada.

Compare os planos na página de preços. Os preços são mensais, em euros.

Iniciar o seu piloto