Basic

The following scenario shows how to configure a LWDRR qdisc.

../../../../../_images/topology29.svg

Test LWDRR QDisc

Description

In this scenario, a Lockless Weighted Deficit Round Robin (LWDRR) qdisc is configured in DUT0 (‘eth0’ interface) to achieve bandwidth sharing among weighted 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 lwdrr bandwidth 100
set traffic control QDISC type lwdrr burst 200ms
set traffic control QDISC type lwdrr class 1 bandwidth percentage 50
set traffic control QDISC type lwdrr class 1 burst 100ms
set traffic control QDISC type lwdrr class 1 description 'Web traffic'
set traffic control QDISC type lwdrr class 1 weight 100
set traffic control QDISC type lwdrr class 10 bandwidth percentage 10
set traffic control QDISC type lwdrr class 10 limit 5000
set traffic control QDISC type lwdrr class 10 weight 30
set traffic control QDISC type lwdrr class 2 bandwidth percentage 20
set traffic control QDISC type lwdrr class 2 priority 3
set traffic control QDISC type lwdrr class 2 weight 60
set traffic control QDISC type lwdrr default-class 10
set traffic control QDISC type lwdrr match 1 class 1
set traffic control QDISC type lwdrr match 1 ip destination port 8080
set traffic control QDISC type lwdrr match 2 class 2
set traffic control QDISC type lwdrr match 2 ip protocol tcp
set traffic control QDISC type lwdrr quantum 1500

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 1
Show 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.958 ms

--- 10.0.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.958/0.958/0.958/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
Expect the following output on DUT0:
Connecting to host 10.0.0.1, port 8080
[  5] local 10.0.0.2 port 52378 connected to 10.0.0.1 port 8080
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  7.49 MBytes  62.8 Mbits/sec    0    249 KBytes
[  5]   1.00-2.00   sec  5.53 MBytes  46.4 Mbits/sec    0    249 KBytes
[  5]   2.00-3.00   sec  5.59 MBytes  46.9 Mbits/sec    0    249 KBytes
[  5]   3.00-4.00   sec  6.28 MBytes  52.7 Mbits/sec    0    264 KBytes
[  5]   4.00-5.00   sec  5.53 MBytes  46.4 Mbits/sec    0    264 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-5.00   sec  30.4 MBytes  51.0 Mbits/sec    0             sender
[  5]   0.00-5.02   sec  29.2 MBytes  48.8 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 1
Expect the following output on DUT0:
Connecting to host 10.0.0.1, port 1234
[  5] local 10.0.0.2 port 40180 connected to 10.0.0.1 port 1234
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  4.26 MBytes  35.7 Mbits/sec    0    260 KBytes
[  5]   1.00-2.00   sec  2.24 MBytes  18.8 Mbits/sec    0    260 KBytes
[  5]   2.00-3.00   sec  2.24 MBytes  18.8 Mbits/sec    0    260 KBytes
[  5]   3.00-4.00   sec  2.24 MBytes  18.8 Mbits/sec    0    260 KBytes
[  5]   4.00-5.00   sec  2.24 MBytes  18.8 Mbits/sec    0    260 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-5.00   sec  13.2 MBytes  22.2 Mbits/sec    0             sender
[  5]   0.00-5.05   sec  11.9 MBytes  19.8 Mbits/sec                  receiver

iperf Done.

Step 6: Run the command traffic control show on DUT0 and check whether the output contains the following tokens:

class 1
class 2
class 10 (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      45457670        759             0
1:1   QDISC            class 1             1:0       32201697        514             0
1:2   QDISC            class 2             1:0       13254945        235             0
1:10  QDISC            class 10 (default)  1:0           1028         10             0

Attention

The previous command output should include packets for the different LWDRR classes. If not, obtaining debugging information may prove useful. This can be achieved by setting the following configuration commands: set traffic control <NAME> type lwdrr 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.