Linux HTB 测试未达到预期

Linux HTB 测试未达到预期

我正在尝试测试 Linux氢能结核,做最简单的例子只是为了看看它是否真的有效。
我正在创建一个根并给它200kbps然后我创建了 3 个类,每个类分配一部分200kbps

              - Root -
             /   |    \
            /    |     \
           /     |      \
          /      |       \
         /       |        \
        /        |         \
    100kbps    60kbps     40kbps

我希望最后看到的是,当它们运行 60 秒时,第一类使用了一半的带宽,第二类使用了 30% 的带宽,最后一类使用了 20% 的带宽。


现在开始设置测试。
我创建了上面的树,并应用了过滤器。

tc qdisc add dev eno2 root handle 1: htb default 30
tc class add dev eno2 parent 1: classid 1:1 htb rate 200kbps ceil 200kbps
tc class add dev eno2 parent 1:1 classid 1:10 htb rate 100kbps ceil 200kbps
tc class add dev eno2 parent 1:1 classid 1:20 htb rate 60kbps ceil 200kbps
tc class add dev eno2 parent 1:1 classid 1:30 htb rate 40kbps ceil 200kbps
tc filter add dev eno2 protocol ip parent 1:0 prio 1 u32 match ip dport 80 0xffff flowid 1:10
tc filter add dev eno2 protocol ip parent 1:0 prio 1 u32 match ip dport 25 0xffff flowid 1:20
tc filter add dev eno2 protocol ip parent 1:0 prio 1 u32 match ip dport 36 0xffff flowid 1:30

对于测试我使用了防火墙
我为服务器打开了3个终端:

sudo iperf -s -p 25 -i 1
sudo iperf -s -p 36 -i 1
sudo iperf -s -p 80 -i 1

然后连接3个客户端,并指定运行时间(60秒)的参数。

iperf -c 132.74.120.45 -p 25 -t 60
iperf -c 132.74.120.45 -p 36 -t 60
iperf -c 132.74.120.45 -p 80 -t 60

结果有点奇怪...似乎无论最初的分配如何,每个都使用了相同数量的带宽? 在此处输入图片描述


此外,我确实使用命令检查了队列规则是 HTB bmon,如下图所示。 在此处输入图片描述


我究竟做错了什么 ?

答案1

HTB 流量整形仅适用于传出设备。因此,如果您想测试该功能,您必须针对可以通过整形接口到达的目的地进行测试。参见图纸:

PC---\
PC----switch----(eno1)router with HTB shaping(eno2)----Internet
PC---/                                        ^^^^ 
                               Shaping is done on the ougtoing device

因此内部网络上的流量不受限制。只有流出网络的流量(在本例中是通过 eno2)受到 HTB 排队规则的限制。

相关内容