Hierarchy
Tests for LWDRR class hierarchy: verifies parent-child structure, rate shaping through multiple nesting levels, and dynamic reconfiguration of parent relationships.
Test LWDRR Hierarchy
Description
Configures a three-level LWDRR hierarchy and verifies that all classes are present and the parent chain is correct: classes 3,10 under class 2; class 2 under class 1; class 1 at root level.
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 lwdrr bandwidth 100 set traffic control QDISC type lwdrr class 1 bandwidth percentage 80 set traffic control QDISC type lwdrr class 1 weight 100 set traffic control QDISC type lwdrr class 10 bandwidth rate 30 set traffic control QDISC type lwdrr class 10 parent 2 set traffic control QDISC type lwdrr class 10 weight 50 set traffic control QDISC type lwdrr class 2 bandwidth rate 60 set traffic control QDISC type lwdrr class 2 parent 1 set traffic control QDISC type lwdrr class 2 weight 80 set traffic control QDISC type lwdrr class 20 bandwidth percentage 20 set traffic control QDISC type lwdrr class 20 weight 40 set traffic control QDISC type lwdrr class 3 bandwidth rate 30 set traffic control QDISC type lwdrr class 3 parent 2 set traffic control QDISC type lwdrr class 3 weight 50 set traffic control QDISC type lwdrr default-class 20 set traffic control QDISC type lwdrr match 1 class 3 set traffic control QDISC type lwdrr match 1 ip destination port 8080 set traffic control QDISC type lwdrr match 1 ip protocol tcp set traffic control QDISC type lwdrr match 2 class 10 set traffic control QDISC type lwdrr 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.532 ms --- 10.0.0.1 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.532/0.532/0.532/0.000 ms
Step 4: Run the command traffic control show on DUT0 and check whether the output contains the following tokens:
class 1 class 2 class 3 class 10 class 20 (default)Show output
Traffic control for interface 'eth0' - 'egress' mode ------------------------------------------------------------------------------------------ ID traffic control type parent bytes sent pkts sent pkts dropped ------------------------------------------------------------------------------------------ 1:0 QDISC lwdrr root 636 6 0 1:1 QDISC class 1 1:0 0 0 0 1:2 QDISC class 2 1:1 0 0 0 1:3 QDISC class 3 1:2 0 0 0 1:10 QDISC class 10 1:2 0 0 0 1:20 QDISC class 20 (default) 1:0 636 6 0
Step 5: Run the command traffic control show on DUT0 and check whether the output matches the following regular expressions:
class (3|10)\s+1:2 class 2\s+1:1 class 1\s+1:0Show output
Traffic control for interface 'eth0' - 'egress' mode ------------------------------------------------------------------------------------------ ID traffic control type parent bytes sent pkts sent pkts dropped ------------------------------------------------------------------------------------------ 1:0 QDISC lwdrr root 876 8 0 1:1 QDISC class 1 1:0 0 0 0 1:2 QDISC class 2 1:1 0 0 0 1:3 QDISC class 3 1:2 0 0 0 1:10 QDISC class 10 1:2 0 0 0 1:20 QDISC class 20 (default) 1:0 876 8 0
Test LWDRR Rate Shaping
Description
Configures a three-level LWDRR hierarchy (root -> class 1 -> class 2 -> classes 3,10) and verifies that TCP traffic on port 8080 is shaped to ~30 Mbps by class 3 and TCP traffic on any other port is shaped to ~30 Mbps by class 10. Counters are cleared between flows to confirm each class receives the expected traffic.
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 lwdrr bandwidth 100 set traffic control QDISC type lwdrr class 1 bandwidth percentage 80 set traffic control QDISC type lwdrr class 1 weight 100 set traffic control QDISC type lwdrr class 10 bandwidth rate 30 set traffic control QDISC type lwdrr class 10 parent 2 set traffic control QDISC type lwdrr class 10 weight 50 set traffic control QDISC type lwdrr class 2 bandwidth rate 60 set traffic control QDISC type lwdrr class 2 parent 1 set traffic control QDISC type lwdrr class 2 weight 80 set traffic control QDISC type lwdrr class 20 bandwidth percentage 20 set traffic control QDISC type lwdrr class 20 weight 40 set traffic control QDISC type lwdrr class 3 bandwidth rate 30 set traffic control QDISC type lwdrr class 3 parent 2 set traffic control QDISC type lwdrr class 3 weight 50 set traffic control QDISC type lwdrr default-class 20 set traffic control QDISC type lwdrr match 1 class 3 set traffic control QDISC type lwdrr match 1 ip destination port 8080 set traffic control QDISC type lwdrr match 1 ip protocol tcp set traffic control QDISC type lwdrr match 2 class 10 set traffic control QDISC type lwdrr 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.998 ms --- 10.0.0.1 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.998/0.998/0.998/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 the following output on
DUT0:Connecting to host 10.0.0.1, port 8080 [ 5] local 10.0.0.2 port 35012 connected to 10.0.0.1 port 8080 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 5.73 MBytes 48.1 Mbits/sec 0 327 KBytes [ 5] 1.00-2.00 sec 3.42 MBytes 28.7 Mbits/sec 0 327 KBytes [ 5] 2.00-3.00 sec 3.42 MBytes 28.7 Mbits/sec 0 327 KBytes [ 5] 3.00-4.00 sec 3.42 MBytes 28.7 Mbits/sec 0 327 KBytes [ 5] 4.00-5.00 sec 3.42 MBytes 28.7 Mbits/sec 0 327 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-5.00 sec 19.4 MBytes 32.5 Mbits/sec 0 sender [ 5] 0.00-5.03 sec 17.6 MBytes 29.4 Mbits/sec receiver iperf Done.
Step 5: Run the command traffic control show on DUT0 and check whether the output matches the following regular expressions:
class 3\s+1:2\s+[1-9]Show output
Traffic control for interface 'eth0' - 'egress' mode ------------------------------------------------------------------------------------------ ID traffic control type parent bytes sent pkts sent pkts dropped ------------------------------------------------------------------------------------------ 1:0 QDISC lwdrr root 19535790 331 0 1:1 QDISC class 1 1:0 19534890 323 0 1:2 QDISC class 2 1:1 19534890 323 0 1:3 QDISC class 3 1:2 19534890 323 0 1:10 QDISC class 10 1:2 0 0 0 1:20 QDISC class 20 (default) 1:0 900 8 0
Note
Run traffic control clear at DUT0 to reset counters before the next flow.
Step 6: 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 the following output on
DUT0:Connecting to host 10.0.0.1, port 1234 [ 5] local 10.0.0.2 port 58494 connected to 10.0.0.1 port 1234 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 4.97 MBytes 41.7 Mbits/sec 0 230 KBytes [ 5] 1.00-2.00 sec 3.29 MBytes 27.6 Mbits/sec 0 230 KBytes [ 5] 2.00-3.00 sec 3.36 MBytes 28.1 Mbits/sec 0 230 KBytes [ 5] 3.00-4.00 sec 3.79 MBytes 31.8 Mbits/sec 0 230 KBytes [ 5] 4.00-5.00 sec 3.29 MBytes 27.6 Mbits/sec 0 230 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-5.00 sec 18.7 MBytes 31.4 Mbits/sec 0 sender [ 5] 0.00-5.03 sec 17.6 MBytes 29.4 Mbits/sec receiver iperf Done.
Step 7: Run the command traffic control show on DUT0 and check whether the output matches the following regular expressions:
class 10\s+1:2\s+[1-9]Show output
Traffic control for interface 'eth0' - 'egress' mode ------------------------------------------------------------------------------------------ ID traffic control type parent bytes sent pkts sent pkts dropped ------------------------------------------------------------------------------------------ 1:0 QDISC lwdrr root 19455330 336 0 1:1 QDISC class 1 1:0 19455330 336 0 1:2 QDISC class 2 1:1 19455330 336 0 1:3 QDISC class 3 1:2 0 0 0 1:10 QDISC class 10 1:2 19455330 336 0 1:20 QDISC class 20 (default) 1:0 0 0 0