wget 中的 tc 类速率 50Kbps!= 50K/s?

wget 中的 tc 类速率 50Kbps!= 50K/s?

得到以下测试规则设置:

tc qdisc add dev wlan0 root handle 1: htb
tc class add dev wlan0 parent 1: classid 1:1 htb rate 1000Mbps
tc class add dev wlan0 parent 1:1 classid 1:5 htb rate 50Kbps ceil 50Kbps burst 1kbit cburst 1kbit
tc qdisc add dev wlan0 parent 1:5 handle 5:0 sfq perturb 5
tc filter add dev wlan0 parent 1:0 protocol ip u32 match ip dport 80 0xffff classid 1:5
tc filter add dev wlan0 parent 1:0 protocol ip u32 match ip sport 80 0xffff classid 1:5

(我也用 iptables --set-mark 尝试过,但没有任何真正的运气,所以我默认回到简单的“简单”tc 规则。)

这个例子作品在某种意义上说,它确实标记了我的 :80 包裹并限制它们但不至 50Kbps...

  • wget说:

    0% [ ] 4,142,336    490K/s
    
  • tc -s class show dev wlan0说:

    root@bt:~/Desktop/tk_net# tc -s class show dev wlan0
    class htb 1:5 parent 1:1 leaf 5: prio 0 rate 400000bit ceil 400000bit burst 128b cburst 128b 
     Sent 7234 bytes 113 pkt (dropped 0, overlimits 0 requeues 0) 
     rate 3584bit 7pps backlog 0b 0p requeues 0 
     lended: 113 borrowed: 0 giants: 0
     tokens: 17500 ctokens: 17500
    
    class htb 1:1 root rate 8000Mbit ceil 8000Mbit burst 0b cburst 0b 
     Sent 7234 bytes 113 pkt (dropped 0, overlimits 0 requeues 0) 
     rate 3584bit 7pps backlog 0b 0p requeues 0 
     lended: 0 borrowed: 0 giants: 0
     tokens: 15 ctokens: 15
    
  • 改变:

    classid 1:5 htb rate 50Kbps ceil 50Kbps
    

    classid 1:5 htb rate 1Kbps ceil 1Kbps
    

    在 wget 中生成 ~ 34.7K/s

  • tc说:

    root@bt:~/Desktop/tk_net# tc -s class show dev wlan0
    class htb 1:5 parent 1:1 leaf 5: prio 0 rate 8000bit ceil 8000bit burst 127b cburst 127b 
     Sent 44799 bytes 644 pkt (dropped 112, overlimits 0 requeues 0) 
     rate 2544bit 4pps backlog 0b 0p requeues 0 
     lended: 641 borrowed: 0 giants: 0
     tokens: 1124984 ctokens: 1124984
    
    class htb 1:1 root rate 8000Mbit ceil 8000Mbit burst 0b cburst 0b 
     Sent 44601 bytes 641 pkt (dropped 0, overlimits 0 requeues 0) 
     rate 4208bit 7pps backlog 0b 0p requeues 0 
     lended: 0 borrowed: 0 giants: 0
     tokens: 15 ctokens: 15
    

我按照以下说明进行操作:

我尝试限制进/出站 :80 流量时做错了什么?

答案1

您不能使用整形来限制传入流量速率。为此,您需要使用监管,但其效果可能有限。

整形控制数据包从网络接口发出的速率。您设置的规则控制网络出口。

数据包以另一端发送的速率到达。监管可以通过丢弃超过给定速率的数据包来限制数据包送入输入队列的速率。 TCP 随后应调整其发送速率。没有拥塞控制的协议(UDP 和基于其的协议)在数据包丢失时不会减慢速度,因此监管不会对发送方的速率产生影响。

Linux 流量整形的监管是通过入口过滤器完成的。从...开始http://lartc.org/howto/lartc.adv-qdisc.ingress.html

相关内容