我目前在代码中遇到了麻烦。
主要是,我模拟两台计算机之间的连接,通过以太网桥(Raspberry Pi,Raspbian)连接。因此,我可以通过 tc qdisc 影响此连接的参数(如带宽,延迟等)。 这很好,你可以在下面的代码中看到。
但现在我的问题是:
我也试图排除特定的端口范围,这意味着不受我给定参数影响的端口(延迟等等)。
为此,我创建了两个prio乐队。 prio band 0(更高优先级)处理我的端口排除(已在父根中)。
之后在prio band 1(较低优先级)中,我通过 netem 来减少延迟。
整个数据流量将通过我受影响的prio频段1,剩余的(排除数据)将通过prio频段0不受影响。
执行代码时我没有遇到内核错误!
但在输入 filter parent 1: protocol ip pref 1 basic
后,我才会收到 sudo tc filter show dev eth1
。
甚至没有提到我的比赛。
我错了什么?
你能解释一下为什么我没有得到我想要的输出吗?
这是我的代码(执行顺序正确):
sudo tc qdisc add dev eth1 root handle 1: prio bands 2 priomap 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
sudo tc qdisc add dev eth1 parent 1:1 handle 10: tbf rate 512kbit buffer 1600 limit 3000
sudo tc filter add dev eth1 parent 1: protocol ip prio 1 handle 0x10 basic match "cmp(u16 at 0 layer transport lt 100) and cmp(u16 at 0 layer transport gt 800)" flowid 1:1
sudo tc qdisc add dev eth1 parent 1:2 handle 20: tbf rate 1024kbit buffer 1600 limit 3000
sudo tc qdisc add dev eth1 parent 20:1 handle 21: netem delay 200ms
Here you can see my hierarchy as an image
问题再次出现:
我甚至没有提到我的过滤器匹配。
我错了什么? 你能解释一下为什么我没有得到我想要的输出吗?
我感谢任何帮助!谢谢你的努力!
~Rotsechs
答案 0 :(得分:0)
似乎我不得不忽略缺失的输出!然而,它完美地运作。
我建立了与以太网桥的SSH连接(通过MobaXterm)。
后来我延迟了400ms。控制台输入按预期减慢。
最后我创建了过滤器并将端口范围从20到24排除(SSH有端口22)。
我的SSH连接延迟立刻消失了!