在具有现有多级 qdisc 设置的系统上,我们需要引入额外的延迟(至少是固定的,但通过较小的变化进行固定将是一个不错的选择)。
在 Linux 上执行此操作的规范方法是使用 qdisc netem
。然而,这在这里不起作用,因为netem
它不能与其他 qdisc 一起工作(这是一个有据可查限制,并且一位同事已经亲自验证)。
将虚拟机放置到不执行任何操作的计算机上,不仅netem
看起来有点过分,而且还会使路由和 WLAN 配置变得非常复杂,因此我宁愿不采取这一步骤。
如果相关的话,当前的设置是htb
(仅用于限制带宽……我们可能应该使用的,tbf
但这是我加入时我们所拥有的)和fq_codel
ECN 标记的组合,两者都带有自定义补丁。我不反对将其修补到任何一个......
根据要求,这里是一个示例设置,使用 stock htb
/fq_codel
以便于测试:
#!/bin/mksh
set -ex
dev=eth0
rate=1000
sudo tc qdisc add dev $dev root handle 1: htb default 1
sudo tc class add dev $dev parent 1: classid 1:1 htb rate ${rate}kbit ceil ${rate}kbit prio 1
sudo tc qdisc add dev $dev parent 1:1 handle 2: fq_codel