[26-06-02 09:46:13] START switch_output_perf scenario: cases/switch_output_perf.sh header : custom scenario topology: sw1 center 192.53.0.1; | UDP output | TCP output; sw2 192.53.0.2 sw3 192.53.0.3; mixed output auth, ping RTT, and bandwidth samples topology: # Topology: topology: # - Diagram: topology: # sw1 center 192.53.0.1 topology: # ^ ^ topology: # | UDP output | TCP output topology: # sw2 192.53.0.2 sw3 192.53.0.3 topology: # mixed output auth, ping RTT, and bandwidth samples topology: # - One center switch sw1 accepts mixed output dial-ins. topology: # - sw2 -> sw1 over UDP output. topology: # - sw3 -> sw1 over TCP output. topology: # Validation: topology: # - Both outputs reach authenticated state on the same sw1. topology: # - UDP/TCP paths both pass connectivity checks. topology: # - Performance sample shows 0% loss and RTT summary. topology: # - Bandwidth sample is collected with iperf/iperf3 for UDP and TCP. [26-06-02 09:46:13][ASSERT#0001][cmd] at cases/switch_output_perf.sh:98 fn=setup_net cmd="docker network create tests-net-output-perf-mixed --driver=bridge --subnet=172.253.0.0/24 --gateway=172.253.0.1" 581307d032e0f74336e78fcde0beb4d202eae6418717d94520ba3fbbef40a77f [26-06-02 09:46:13][ASSERT#0001][OK] cost=0.061s Started switch pause container: tests-sw-output-mix1-pause Started switch frr container: tests-sw-output-mix1-frr Started switch ipsec container: tests-sw-output-mix1-ipsec Started switch container: tests-sw-output-mix1 [26-06-02 09:46:14][ASSERT#0002][expect] at cases/switch_output_perf.sh:69 fn=setup_sw retry=30 cmd="docker logs -f tests-sw-output-mix1" expect="Http.Start" 2026/06/02 09:46:15 INFO|root|Wait: ... 2026/06/02 09:46:15 INFO|root|UdpServer.Listen: udp://0.0.0.0:10002 2026/06/02 09:46:15 INFO|root|TcpServer.Listen: tcp://0.0.0.0:10002 2026/06/02 09:46:15 INFO|root|Http.Start 0.0.0.0:10000 [26-06-02 09:46:15][ASSERT#0002][OK] cost=1.031s [26-06-02 09:46:15][ASSERT#0003][cmd] at cases/switch_output_perf.sh:103 fn=setup_sw1 cmd="docker exec tests-sw-output-mix1 openlan network --name example add --address 192.53.0.1/24" [26-06-02 09:46:15][ASSERT#0003][OK] cost=0.238s [26-06-02 09:46:15][ASSERT#0004][cmd] at cases/switch_output_perf.sh:104 fn=setup_sw1 cmd="docker exec tests-sw-output-mix1 openlan user add --name t1@example --password 123456 --role admin" # total 1 username password role lease t1@example 123456 admin 2027-06-02T09 [26-06-02 09:46:15][ASSERT#0004][OK] cost=0.061s Started switch pause container: tests-sw-output-mix2-pause Started switch frr container: tests-sw-output-mix2-frr Started switch ipsec container: tests-sw-output-mix2-ipsec Started switch container: tests-sw-output-mix2 [26-06-02 09:46:16][ASSERT#0005][expect] at cases/switch_output_perf.sh:69 fn=setup_sw retry=30 cmd="docker logs -f tests-sw-output-mix2" expect="Http.Start" 2026/06/02 09:46:17 INFO|root|Wait: ... 2026/06/02 09:46:17 INFO|root|UdpServer.Listen: udp://0.0.0.0:10002 2026/06/02 09:46:17 INFO|root|TcpServer.Listen: tcp://0.0.0.0:10002 2026/06/02 09:46:17 INFO|root|Http.Start 0.0.0.0:10000 [26-06-02 09:46:17][ASSERT#0005][OK] cost=1.036s [26-06-02 09:46:17][ASSERT#0006][cmd] at cases/switch_output_perf.sh:109 fn=setup_sw2 cmd="docker exec tests-sw-output-mix2 openlan network --name example add --address 192.53.0.2/24" [26-06-02 09:46:18][ASSERT#0006][OK] cost=0.258s Started switch pause container: tests-sw-output-mix3-pause Started switch frr container: tests-sw-output-mix3-frr Started switch ipsec container: tests-sw-output-mix3-ipsec Started switch container: tests-sw-output-mix3 [26-06-02 09:46:18][ASSERT#0007][expect] at cases/switch_output_perf.sh:69 fn=setup_sw retry=30 cmd="docker logs -f tests-sw-output-mix3" expect="Http.Start" 2026/06/02 09:46:19 INFO|root|UdpServer.Listen: udp://0.0.0.0:10002 2026/06/02 09:46:19 INFO|root|Wait: ... 2026/06/02 09:46:19 INFO|root|TcpServer.Listen: tcp://0.0.0.0:10002 2026/06/02 09:46:19 INFO|root|Http.Start 0.0.0.0:10000 [26-06-02 09:46:19][ASSERT#0007][OK] cost=1.031s [26-06-02 09:46:19][ASSERT#0008][cmd] at cases/switch_output_perf.sh:114 fn=setup_sw3 cmd="docker exec tests-sw-output-mix3 openlan network --name example add --address 192.53.0.3/24" [26-06-02 09:46:20][ASSERT#0008][OK] cost=0.238s [26-06-02 09:46:20][ASSERT#0009][cmd] at cases/switch_output_perf.sh:118 fn=setup_outputs cmd="docker exec tests-sw-output-mix2 openlan network --name example output add --remote 172.253.0.241 --protocol udp --secret t1:123456 --crypt aes-128:ea64d5b0c96c" [26-06-02 09:46:20][ASSERT#0009][OK] cost=0.060s [26-06-02 09:46:20][ASSERT#0010][cmd] at cases/switch_output_perf.sh:119 fn=setup_outputs cmd="docker exec tests-sw-output-mix3 openlan network --name example output add --remote 172.253.0.241 --protocol tcp --secret t1:123456 --crypt aes-128:ea64d5b0c96c" [26-06-02 09:46:20][ASSERT#0010][OK] cost=0.060s [26-06-02 09:46:20][ASSERT#0011][match] at cases/switch_output_perf.sh:120 fn=setup_outputs retry=15 cmd="docker exec tests-sw-output-mix2 openlan network --name example output ls" expect="state: authenticated" protocol: udp remote: 172.253.0.241 secret: t1:123456 state: authenticated [26-06-02 09:46:22][ASSERT#0011][OK] cost=2.188s [26-06-02 09:46:22][ASSERT#0012][match] at cases/switch_output_perf.sh:121 fn=setup_outputs retry=15 cmd="docker exec tests-sw-output-mix3 openlan network --name example output ls" expect="state: authenticated" protocol: tcp remote: 172.253.0.241 secret: t1:123456 state: authenticated [26-06-02 09:46:22][ASSERT#0012][OK] cost=0.077s [26-06-02 09:46:22][ASSERT#0013][match] at cases/switch_output_perf.sh:125 fn=test_connectivity_and_latency retry=20 cmd="docker exec tests-sw-output-mix2 ping -c 3 192.53.0.1" expect="bytes from" PING 192.53.0.1 (192.53.0.1) 56(84) bytes of data. 64 bytes from 192.53.0.1: icmp_seq=1 ttl=64 time=2053 ms 64 bytes from 192.53.0.1: icmp_seq=2 ttl=64 time=1027 ms 64 bytes from 192.53.0.1: icmp_seq=3 ttl=64 time=2.90 ms --- 192.53.0.1 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2050ms [26-06-02 09:46:24][ASSERT#0013][OK] cost=2.118s [26-06-02 09:46:24][ASSERT#0014][match] at cases/switch_output_perf.sh:126 fn=test_connectivity_and_latency retry=20 cmd="docker exec tests-sw-output-mix3 ping -c 3 192.53.0.1" expect="bytes from" PING 192.53.0.1 (192.53.0.1) 56(84) bytes of data. 64 bytes from 192.53.0.1: icmp_seq=1 ttl=64 time=0.949 ms 64 bytes from 192.53.0.1: icmp_seq=2 ttl=64 time=1.34 ms 64 bytes from 192.53.0.1: icmp_seq=3 ttl=64 time=1.17 ms --- 192.53.0.1 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2003ms [26-06-02 09:46:26][ASSERT#0014][OK] cost=2.063s [26-06-02 09:46:26][ASSERT#0015][match] at cases/switch_output_perf.sh:127 fn=test_connectivity_and_latency retry=30 cmd="docker exec tests-sw-output-mix2 ping -q -c 20 -i 0.05 -s 1200 192.53.0.1" expect="0% packet loss" PING 192.53.0.1 (192.53.0.1) 1200(1228) bytes of data. --- 192.53.0.1 ping statistics --- 20 packets transmitted, 20 received, 0% packet loss, time 964ms rtt min/avg/max/mdev = 0.638/1.438/2.148/0.312 ms [26-06-02 09:46:27][ASSERT#0015][OK] cost=1.026s [26-06-02 09:46:27][ASSERT#0016][match] at cases/switch_output_perf.sh:128 fn=test_connectivity_and_latency retry=5 cmd="docker exec tests-sw-output-mix2 ping -q -c 20 -i 0.05 -s 1200 192.53.0.1" expect="rtt min/avg/max" --- 192.53.0.1 ping statistics --- 20 packets transmitted, 20 received, 0% packet loss, time 964ms rtt min/avg/max/mdev = 0.659/1.242/1.627/0.248 ms [26-06-02 09:46:28][ASSERT#0016][OK] cost=1.031s [26-06-02 09:46:28][ASSERT#0017][match] at cases/switch_output_perf.sh:129 fn=test_connectivity_and_latency retry=30 cmd="docker exec tests-sw-output-mix3 ping -q -c 20 -i 0.05 -s 1200 192.53.0.1" expect="0% packet loss" PING 192.53.0.1 (192.53.0.1) 1200(1228) bytes of data. --- 192.53.0.1 ping statistics --- 20 packets transmitted, 20 received, 0% packet loss, time 964ms rtt min/avg/max/mdev = 0.539/1.142/1.625/0.275 ms [26-06-02 09:46:29][ASSERT#0017][OK] cost=1.036s [26-06-02 09:46:29][ASSERT#0018][match] at cases/switch_output_perf.sh:130 fn=test_connectivity_and_latency retry=5 cmd="docker exec tests-sw-output-mix3 ping -q -c 20 -i 0.05 -s 1200 192.53.0.1" expect="rtt min/avg/max" --- 192.53.0.1 ping statistics --- 20 packets transmitted, 20 received, 0% packet loss, time 964ms rtt min/avg/max/mdev = 0.502/1.186/1.572/0.260 ms [26-06-02 09:46:30][ASSERT#0018][OK] cost=1.040s [26-06-02 09:46:30][ASSERT#0019][cmd] at cases/switch_output_perf.sh:91 fn=test_bandwidth_iperf cmd="docker exec tests-sw-output-mix1 iperf3 -s -D -p 5201" [26-06-02 09:46:30][ASSERT#0019][OK] cost=0.053s [26-06-02 09:46:30][ASSERT#0020][match] at cases/switch_output_perf.sh:92 fn=test_bandwidth_iperf retry=20 cmd="docker exec tests-sw-output-mix2 iperf3 -u -c 192.53.0.1 -p 5201 -b 500M -t 5" expect="receiver" - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams [ 5] 0.00-5.00 sec 298 MBytes 500 Mbits/sec 0.000 ms 0/215789 (0%) sender [ 5] 0.00-5.04 sec 298 MBytes 496 Mbits/sec 0.017 ms 131/215789 (0.061%) receiver iperf Done. [26-06-02 09:46:36][ASSERT#0020][OK] cost=5.243s [26-06-02 09:46:36][ASSERT#0021][cmd] at cases/switch_output_perf.sh:93 fn=test_bandwidth_iperf cmd="docker exec tests-sw-output-mix1 pkill -f perf3" [26-06-02 09:46:36][ASSERT#0021][OK] cost=0.062s [26-06-02 09:46:36][ASSERT#0022][cmd] at cases/switch_output_perf.sh:91 fn=test_bandwidth_iperf cmd="docker exec tests-sw-output-mix1 iperf3 -s -D -p 5201" [26-06-02 09:46:36][ASSERT#0022][OK] cost=0.054s [26-06-02 09:46:36][ASSERT#0023][match] at cases/switch_output_perf.sh:92 fn=test_bandwidth_iperf retry=20 cmd="docker exec tests-sw-output-mix2 iperf3 -c 192.53.0.1 -p 5201 -t 5" expect="receiver" - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-5.00 sec 186 MBytes 312 Mbits/sec 292 sender [ 5] 0.00-5.05 sec 178 MBytes 296 Mbits/sec receiver iperf Done. [26-06-02 09:46:41][ASSERT#0023][OK] cost=5.285s [26-06-02 09:46:41][ASSERT#0024][cmd] at cases/switch_output_perf.sh:93 fn=test_bandwidth_iperf cmd="docker exec tests-sw-output-mix1 pkill -f perf3" [26-06-02 09:46:41][ASSERT#0024][OK] cost=0.058s [26-06-02 09:46:41][ASSERT#0025][cmd] at cases/switch_output_perf.sh:91 fn=test_bandwidth_iperf cmd="docker exec tests-sw-output-mix1 iperf3 -s -D -p 5202" [26-06-02 09:46:41][ASSERT#0025][OK] cost=0.059s [26-06-02 09:46:41][ASSERT#0026][match] at cases/switch_output_perf.sh:92 fn=test_bandwidth_iperf retry=20 cmd="docker exec tests-sw-output-mix3 iperf3 -u -c 192.53.0.1 -p 5202 -b 500M -t 5" expect="receiver" - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams [ 5] 0.00-5.00 sec 298 MBytes 500 Mbits/sec 0.000 ms 0/215789 (0%) sender [ 5] 0.00-5.05 sec 298 MBytes 494 Mbits/sec 0.016 ms 237/215789 (0.11%) receiver iperf Done. [26-06-02 09:46:46][ASSERT#0026][OK] cost=5.245s [26-06-02 09:46:46][ASSERT#0027][cmd] at cases/switch_output_perf.sh:93 fn=test_bandwidth_iperf cmd="docker exec tests-sw-output-mix1 pkill -f perf3" [26-06-02 09:46:47][ASSERT#0027][OK] cost=0.064s [26-06-02 09:46:47][ASSERT#0028][cmd] at cases/switch_output_perf.sh:91 fn=test_bandwidth_iperf cmd="docker exec tests-sw-output-mix1 iperf3 -s -D -p 5202" [26-06-02 09:46:47][ASSERT#0028][OK] cost=0.055s [26-06-02 09:46:47][ASSERT#0029][match] at cases/switch_output_perf.sh:92 fn=test_bandwidth_iperf retry=20 cmd="docker exec tests-sw-output-mix3 iperf3 -c 192.53.0.1 -p 5202 -t 5" expect="receiver" - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-5.00 sec 309 MBytes 518 Mbits/sec 40 sender [ 5] 0.00-5.06 sec 301 MBytes 500 Mbits/sec receiver iperf Done. [26-06-02 09:46:52][ASSERT#0029][OK] cost=5.265s [26-06-02 09:46:52][ASSERT#0030][cmd] at cases/switch_output_perf.sh:93 fn=test_bandwidth_iperf cmd="docker exec tests-sw-output-mix1 pkill -f perf3" [26-06-02 09:46:52][ASSERT#0030][OK] cost=0.045s [26-06-02 09:46:52][ASSERT#0031][cmd] at cases/switch_output_perf.sh:141 fn=test_reload_persistence cmd="docker exec tests-sw-output-mix1 openlan reload --save" Save configuraion ... success # reloading pid:42 .... PID 42 CMD: /usr/bin/openlan-switch -conf:dir /etc/openlan/switch -log:level 20 # max wait 60s... # during 1s, new pid:534 ... PID 534 CMD: /usr/bin/openlan-switch -conf:dir /etc/openlan/switch -log:level 20 [26-06-02 09:46:53][ASSERT#0031][OK] cost=1.084s [26-06-02 09:46:53][ASSERT#0032][cmd] at cases/switch_output_perf.sh:142 fn=test_reload_persistence cmd="docker exec tests-sw-output-mix2 openlan reload --save" Save configuraion ... success # reloading pid:42 .... PID 42 CMD: /usr/bin/openlan-switch -conf:dir /etc/openlan/switch -log:level 20 # max wait 60s... # during 1s, new pid:563 ... PID 563 CMD: /usr/bin/openlan-switch -conf:dir /etc/openlan/switch -log:level 20 [26-06-02 09:46:54][ASSERT#0032][OK] cost=1.072s [26-06-02 09:46:54][ASSERT#0033][cmd] at cases/switch_output_perf.sh:143 fn=test_reload_persistence cmd="docker exec tests-sw-output-mix3 openlan reload --save" Save configuraion ... success # reloading pid:42 .... PID 42 CMD: /usr/bin/openlan-switch -conf:dir /etc/openlan/switch -log:level 20 # max wait 60s... # during 1s, new pid:537 ... PID 537 CMD: /usr/bin/openlan-switch -conf:dir /etc/openlan/switch -log:level 20 [26-06-02 09:46:55][ASSERT#0033][OK] cost=1.073s [26-06-02 09:46:55][ASSERT#0034][cmd] at cases/switch_output_perf.sh:144 fn=test_reload_persistence cmd="docker exec tests-sw-output-mix2 ip neigh flush dev hi-example" [26-06-02 09:46:55][ASSERT#0034][OK] cost=0.057s [26-06-02 09:46:55][ASSERT#0035][cmd] at cases/switch_output_perf.sh:145 fn=test_reload_persistence cmd="docker exec tests-sw-output-mix3 ip neigh flush dev hi-example" [26-06-02 09:46:55][ASSERT#0035][OK] cost=0.055s [26-06-02 09:46:55][ASSERT#0036][match] at cases/switch_output_perf.sh:146 fn=test_reload_persistence retry=20 cmd="docker exec tests-sw-output-mix2 ping -c 3 192.53.0.1" expect="bytes from" PING 192.53.0.1 (192.53.0.1) 56(84) bytes of data. 64 bytes from 192.53.0.1: icmp_seq=1 ttl=64 time=0.945 ms 64 bytes from 192.53.0.1: icmp_seq=2 ttl=64 time=1.43 ms 64 bytes from 192.53.0.1: icmp_seq=3 ttl=64 time=1.64 ms --- 192.53.0.1 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2002ms [26-06-02 09:47:06][ASSERT#0036][OK] cost=10.351s [26-06-02 09:47:06][ASSERT#0037][match] at cases/switch_output_perf.sh:147 fn=test_reload_persistence retry=20 cmd="docker exec tests-sw-output-mix3 ping -c 3 192.53.0.1" expect="bytes from" PING 192.53.0.1 (192.53.0.1) 56(84) bytes of data. 64 bytes from 192.53.0.1: icmp_seq=1 ttl=64 time=0.750 ms 64 bytes from 192.53.0.1: icmp_seq=2 ttl=64 time=1.22 ms 64 bytes from 192.53.0.1: icmp_seq=3 ttl=64 time=1.46 ms --- 192.53.0.1 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2031ms [26-06-02 09:47:08][ASSERT#0037][OK] cost=2.088s [26-06-02 09:47:09] END switch_output_perf status=PASS cost=55.493s