Htb
The following scenario shows how to configure a HTB qdisc.
Test HTB QDisc
Description
In this scenario, a Hierarchy Token Bucket (HTB) qdisc is configured in DUT0 (‘eth0’ interface) to achieve linksharing among a hierarchy of classes. Three classes are created with different matches (filters). Each match is allocated to a single class and evaluated in order.
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 50 set traffic control QDISC type htb class 1 ceiling percentage 100 set traffic control QDISC type htb class 2 bandwidth percentage 20 set traffic control QDISC type htb class 2 ceiling percentage 0 set traffic control QDISC type htb class 3 bandwidth percentage 10 set traffic control QDISC type htb class 3 ceiling percentage 0 set traffic control QDISC type htb default-class 3 set traffic control QDISC type htb match 1 class 1 set traffic control QDISC type htb match 1 ip destination port 8080 set traffic control QDISC type htb match 2 class 2 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 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.370 ms --- 10.0.0.1 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.370/0.370/0.370/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 1Expect this output in
DUT0
:Connecting to host 10.0.0.1, port 8080 [ 5] local 10.0.0.2 port 48182 connected to 10.0.0.1 port 8080 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 14.2 MBytes 119 Mbits/sec 135 83.4 KBytes [ 5] 1.00-2.00 sec 11.2 MBytes 93.8 Mbits/sec 0 83.4 KBytes [ 5] 2.00-3.00 sec 11.7 MBytes 98.5 Mbits/sec 0 83.4 KBytes [ 5] 3.00-4.00 sec 11.2 MBytes 93.8 Mbits/sec 0 83.4 KBytes [ 5] 4.00-5.00 sec 11.2 MBytes 93.8 Mbits/sec 0 83.4 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-5.00 sec 59.5 MBytes 99.9 Mbits/sec 135 sender [ 5] 0.00-5.00 sec 58.5 MBytes 98.0 Mbits/sec receiver iperf Done.
Step 5: Initiate a bandwidth test from DUT0
to DUT1
admin@DUT1$ monitor test performance server port 1234 admin@DUT0$ monitor test performance client 10.0.0.1 duration 5 port 1234 parallel 1Expect this output in
DUT0
:Connecting to host 10.0.0.1, port 1234 [ 5] local 10.0.0.2 port 49408 connected to 10.0.0.1 port 1234 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 2.60 MBytes 21.8 Mbits/sec 34 21.2 KBytes [ 5] 1.00-2.00 sec 2.42 MBytes 20.3 Mbits/sec 28 36.8 KBytes [ 5] 2.00-3.00 sec 2.24 MBytes 18.8 Mbits/sec 40 28.3 KBytes [ 5] 3.00-4.00 sec 2.24 MBytes 18.8 Mbits/sec 37 24.0 KBytes [ 5] 4.00-5.00 sec 2.24 MBytes 18.8 Mbits/sec 25 28.3 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-5.00 sec 11.7 MBytes 19.7 Mbits/sec 164 sender [ 5] 0.00-5.00 sec 11.4 MBytes 19.1 Mbits/sec receiver iperf Done.
Step 6: Run command traffic control show
at DUT0
and check if output contains the following tokens:
class 1 class 2 class 3 (default)Show output
Traffic control for interface 'eth0' - 'egress' mode ------------------------------------------------------------------------------------ ID traffic control type parent bytes sent pkts sent pkts dropped ------------------------------------------------------------------------------------ 1:0 QDISC htb root 76686825 50693 33 1:1 QDISC class 1 1:0 64154356 42390 0 1:2 QDISC class 2 1:0 12531613 8295 0 1:3 QDISC class 3 (default) 1:0 856 8 0 2:0 - fq_codel 1:1 64154356 42390 4 3:0 - fq_codel 1:2 12531613 8295 29 4:0 - fq_codel 1:3 856 8 0
Attention
The previous command output should include packets for the different
HTB classes. If not, obtaining debugging information may prove usuful.
This can be achieved by setting the following configuration commands:
set traffic control <NAME> type htb match 1 log <PREFIX>
or
set traffic policy <NAME> rule 1 log prefix <PREFIX>
.
After generating some traffic, the system journal monitor
command
can be used to review log messages.