Ceiling
Tests for HTB ceiling behavior. Verifies that the ceiling parameter controls bandwidth borrowing and that setting it below the guaranteed rate limits throughput.
Test HTB Ceiling Enforcement
Description
Verifies that the ceiling parameter controls bandwidth borrowing. With ceiling 80%, class 3 borrows well beyond its guaranteed 30 Mbps when siblings are idle. After lowering the ceiling to 50%, the rate drops accordingly, proving the ceiling is the limiting factor.
Scenario
Step 1: Set the following configuration in DUT0 :
set interfaces ethernet eth0 address 10.0.0.2/24 set interfaces ethernet eth0 traffic control out QDISC set system login user admin authentication encrypted-password '$6$GSjsCj8gHLv$/VcqU6FLi6CT2Oxn0MJQ2C2tqnRDrYKNF8HIYWJp68nvXvPdFccDsT04.WtigUONbKYrgKg8d6rEs8PjljMkH0' set traffic control QDISC type htb bandwidth 100 set traffic control QDISC type htb class 1 bandwidth percentage 80 set traffic control QDISC type htb class 1 ceiling percentage 100 set traffic control QDISC type htb class 2 bandwidth rate 60 set traffic control QDISC type htb class 2 ceiling percentage 80 set traffic control QDISC type htb class 2 parent 1 set traffic control QDISC type htb class 3 bandwidth rate 30 set traffic control QDISC type htb class 3 ceiling percentage 80 set traffic control QDISC type htb class 3 parent 2 set traffic control QDISC type htb class 4 bandwidth rate 30 set traffic control QDISC type htb class 4 parent 2 set traffic control QDISC type htb class 5 bandwidth percentage 20 set traffic control QDISC type htb default-class 5 set traffic control QDISC type htb match 1 class 3 set traffic control QDISC type htb match 1 ip destination port 8080 set traffic control QDISC type htb match 1 ip protocol tcp set traffic control QDISC type htb match 2 class 4 set traffic control QDISC type htb match 2 ip protocol tcp
Step 2: Set the following configuration in DUT1 :
set interfaces ethernet eth0 address 10.0.0.1/24 set system login user admin authentication encrypted-password '$6$GSjsCj8gHLv$/VcqU6FLi6CT2Oxn0MJQ2C2tqnRDrYKNF8HIYWJp68nvXvPdFccDsT04.WtigUONbKYrgKg8d6rEs8PjljMkH0'
Step 3: Ping the IP address 10.0.0.1 from DUT0:
admin@DUT0$ ping 10.0.0.1 count 1 size 56 timeout 1Show output
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data. 64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=0.366 ms --- 10.0.0.1 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.366/0.366/0.366/0.000 ms
Step 4: Initiate a bandwidth test from DUT0 to DUT1
admin@DUT1$ monitor test performance server port 8080 admin@DUT0$ monitor test performance client 10.0.0.1 duration 5 port 8080 parallel 1 bandwidth 70MExpect the following output on
DUT0:Connecting to host 10.0.0.1, port 8080 [ 5] local 10.0.0.2 port 45848 connected to 10.0.0.1 port 8080 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 8.38 MBytes 70.3 Mbits/sec 0 140 KBytes [ 5] 1.00-2.00 sec 8.38 MBytes 70.3 Mbits/sec 0 140 KBytes [ 5] 2.00-3.00 sec 8.38 MBytes 70.3 Mbits/sec 0 140 KBytes [ 5] 3.00-4.00 sec 8.25 MBytes 69.2 Mbits/sec 0 140 KBytes [ 5] 4.00-5.00 sec 8.38 MBytes 70.3 Mbits/sec 0 140 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-5.00 sec 41.8 MBytes 70.0 Mbits/sec 0 sender [ 5] 0.00-5.00 sec 41.8 MBytes 70.0 Mbits/sec receiver iperf Done.
Step 5: Modify the following configuration lines in DUT0 :
set traffic control QDISC type htb class 3 ceiling percentage 50
Step 6: Initiate a bandwidth test from DUT0 to DUT1
admin@DUT1$ monitor test performance server port 8080 admin@DUT0$ monitor test performance client 10.0.0.1 duration 5 port 8080 parallel 1 bandwidth 70MExpect the following output on
DUT0:Connecting to host 10.0.0.1, port 8080 [ 5] local 10.0.0.2 port 52132 connected to 10.0.0.1 port 8080 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 7.50 MBytes 62.9 Mbits/sec 163 41.0 KBytes [ 5] 1.00-2.00 sec 5.75 MBytes 48.2 Mbits/sec 58 39.6 KBytes [ 5] 2.00-3.00 sec 5.62 MBytes 47.2 Mbits/sec 67 46.7 KBytes [ 5] 3.00-4.00 sec 5.75 MBytes 48.2 Mbits/sec 71 50.9 KBytes [ 5] 4.00-5.00 sec 5.62 MBytes 47.2 Mbits/sec 65 46.7 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-5.00 sec 30.2 MBytes 50.8 Mbits/sec 424 sender [ 5] 0.00-5.00 sec 29.2 MBytes 49.0 Mbits/sec receiver iperf Done.
Test HTB Ceiling Below Guaranteed
Description
Verifies that setting the ceiling below the guaranteed bandwidth limits the class to the ceiling value. Class 3 has a guaranteed rate of 30 Mbps, but when the ceiling is set to 20%, the effective rate is capped at ~20 Mbps. This demonstrates that a misconfigured ceiling can negatively impact a class even when sufficient bandwidth is available.
Scenario
Step 1: Set the following configuration in DUT0 :
set interfaces ethernet eth0 address 10.0.0.2/24 set interfaces ethernet eth0 traffic control out QDISC set system login user admin authentication encrypted-password '$6$GSjsCj8gHLv$/VcqU6FLi6CT2Oxn0MJQ2C2tqnRDrYKNF8HIYWJp68nvXvPdFccDsT04.WtigUONbKYrgKg8d6rEs8PjljMkH0' set traffic control QDISC type htb bandwidth 100 set traffic control QDISC type htb class 1 bandwidth percentage 80 set traffic control QDISC type htb class 1 ceiling percentage 100 set traffic control QDISC type htb class 2 bandwidth rate 60 set traffic control QDISC type htb class 2 ceiling percentage 80 set traffic control QDISC type htb class 2 parent 1 set traffic control QDISC type htb class 3 bandwidth rate 30 set traffic control QDISC type htb class 3 ceiling percentage 80 set traffic control QDISC type htb class 3 parent 2 set traffic control QDISC type htb class 4 bandwidth rate 30 set traffic control QDISC type htb class 4 parent 2 set traffic control QDISC type htb class 5 bandwidth percentage 20 set traffic control QDISC type htb default-class 5 set traffic control QDISC type htb match 1 class 3 set traffic control QDISC type htb match 1 ip destination port 8080 set traffic control QDISC type htb match 1 ip protocol tcp set traffic control QDISC type htb match 2 class 4 set traffic control QDISC type htb match 2 ip protocol tcp
Step 2: Set the following configuration in DUT1 :
set interfaces ethernet eth0 address 10.0.0.1/24 set system login user admin authentication encrypted-password '$6$GSjsCj8gHLv$/VcqU6FLi6CT2Oxn0MJQ2C2tqnRDrYKNF8HIYWJp68nvXvPdFccDsT04.WtigUONbKYrgKg8d6rEs8PjljMkH0'
Step 3: Ping the IP address 10.0.0.1 from DUT0:
admin@DUT0$ ping 10.0.0.1 count 1 size 56 timeout 1Show output
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data. 64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=0.504 ms --- 10.0.0.1 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.504/0.504/0.504/0.000 ms
Step 4: Modify the following configuration lines in DUT0 :
set traffic control QDISC type htb class 3 ceiling percentage 20
Step 5: Initiate a bandwidth test from DUT0 to DUT1
admin@DUT1$ monitor test performance server port 8080 admin@DUT0$ monitor test performance client 10.0.0.1 duration 5 port 8080 parallel 1 bandwidth 30MExpect the following output on
DUT0:Connecting to host 10.0.0.1, port 8080 [ 5] local 10.0.0.2 port 43708 connected to 10.0.0.1 port 8080 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 3.12 MBytes 26.2 Mbits/sec 74 21.2 KBytes [ 5] 1.00-2.00 sec 2.25 MBytes 18.9 Mbits/sec 61 15.6 KBytes [ 5] 2.00-3.00 sec 2.25 MBytes 18.9 Mbits/sec 63 12.7 KBytes [ 5] 3.00-4.00 sec 2.38 MBytes 19.9 Mbits/sec 51 24.0 KBytes [ 5] 4.00-5.00 sec 2.25 MBytes 18.9 Mbits/sec 53 21.2 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-5.00 sec 12.2 MBytes 20.6 Mbits/sec 302 sender [ 5] 0.00-5.00 sec 11.7 MBytes 19.6 Mbits/sec receiver iperf Done.