On Thu, Nov 16, 2023 at 03:34:43PM -0500, Willem de Bruijn wrote:
From: Willem de Bruijn willemb@google.com
Commit 29f834aa326e ("net_sched: sch_fq: add 3 bands and WRR scheduling") introduces multiple traffic bands, and per-band maximum packet count.
Per-band limits ensures that packets in one class cannot fill the entire qdisc and so cause DoS to the traffic in the other classes.
Verify this behavior:
- set the limit to 10 per band
- send 20 pkts on band A: verify that 10 are queued, 10 dropped
- send 20 pkts on band A: verify that 0 are queued, 20 dropped
- send 20 pkts on band B: verify that 10 are queued, 10 dropped
Packets must remain queued for a period to trigger this behavior. Use SO_TXTIME to store packets for 100 msec.
The test reuses existing upstream test infra. The script is a fork of cmsg_time.sh. The scripts call cmsg_sender.
The test extends cmsg_sender with two arguments:
'-P' SO_PRIORITY There is a subtle difference between IPv4 and IPv6 stack behavior: PF_INET/IP_TOS sets IP header bits and sk_priority PF_INET6/IPV6_TCLASS sets IP header bits BUT NOT sk_priority
'-n' num pkts Send multiple packets in quick succession. I first attempted a for loop in the script, but this is too slow in virtualized environments, causing flakiness as the 100ms timeout is reached and packets are dequeued.
Also do not wait for timestamps to be queued unless timestamps are requested.
Signed-off-by: Willem de Bruijn willemb@google.com
Thanks Willem,
this looks nice and clean to me.
Reviewed-by: Simon Horman horms@kernel.org