我是一个新手网络工程师。
我正在尝试理解Linux命令tc。
我制作了一个简单的网络,由两个主机H1、H2和一个交换机S1组成,它们通过使用迷你网络连接。
然后,我让H1将UDP数据包发送到H2,并使用iPerf2通过交换机S1发送。
#H1
iperf -s -p 1212 -f m -i 1
#H2
iperf -c 10.0.0.1 -p 1212 -t 10000 -f m -b 70M -u为了限制链路带宽,我在下面做了一个简单的bash脚本。
#!/bin/bash
#s1-eth1 is outgoing port from H1 to H2
#its orginal bandwidth 100Mbit/s
sudo tc qdisc del dev s1-eth1 root
sudo tc qdisc add dev s1-eth1 root handle 1:0 htb default 12
sudo tc qdisc add dev s1-eth1 parent 1:0 classid 1:1 htb rate 50Mbit
sudo tc filter add deb s1-eth1 protocol ip parent 1:0 prio 1 u32 match ip dport 1212 0xffff flowid 1:1我原以为S1的rx率是50 50Mbit/s,但没有。
它显示了大约40 40Mbit/s。
当我更改这个实验的设置时,它显示的值比我使用tc命令设置的值要小。
为什么会发生这种事?我查看了Linux tc的内核代码,但我无法理解它。
你能给我一点提示吗?
发布于 2019-07-29 17:55:41
提示和故障排除。
tc -p filter show dev <iface>)tc -s -s -d f ls dev <iface>) -故障排除的第一步。tc -s -s -d qdisc list dev <iface>和tc -s -s -d c ls dev <iface>) --故障排除的第二步。modinfo sch_htb)时,一些调度程序可以创建默认的估计器。1:12,但不要定义它。https://serverfault.com/questions/977148
复制相似问题