使用tc的百分比dynamic带宽控制

有谁知道如果tc(iproute2)可以用来百分比当前可用的带宽? 我们正在使用可用带宽频繁变化的GPRS连接。 我想达到的是以下几点:

  • 出口到端口x:可用带宽的60%
  • 出口到端口y:可用带宽的30%
  • 所有其他出口stream量:可用带宽的10%

通过使用tc,我设法通过使用htb qdisc来实现这个方向,并创build了3个类,速率为60/30/10 kbps。 通过使用100kbs的上限,类可以使用100kbs以下的任何可用带宽(如果可用的话),但从不会更多。

然而,这种静态configuration的带宽并不是一种适用于我们的解决scheme,因为我们的带宽变化很大,我们不想configuration天花板。 我们的目标是尽可能使用可用的带宽。 理想情况下,我们不想以字节/秒为单位configuration速率,但是以百分比表示。 这是可能的吗? 我看了一下prio qdisc,但那里的文档真的很缺乏。

谢谢!

经过一番研究和感谢EEAA的评论,很明显,将可用带宽百分比划分是不可能的。

你应该能够用hfsc来形成你的stream量:linkshare m2带宽应该是百分比的。 这是一些文件:( 1,2,3 )

你可以尝试这个代码例如:

iptables -t mangle -A POSTROUTING -p tcp --dport 80 -j CLASSIFY --set-class 1:100 iptables -t mangle -A POSTROUTING -p tcp --dport 80 -j ACCEPT iptables -t mangle -A POSTROUTING -p tcp --dport 22 -j CLASSIFY --set-class 1:200 iptables -t mangle -A POSTROUTING -p tcp --dport 22 -j ACCEPT iptables -t mangle -A POSTROUTING -j CLASSIFY --set-class 1:300 tc qdisc del dev enp0s3 root tc qdisc add dev enp0s3 root handle 1:0 hfsc default 100 tc class add dev enp0s3 parent 1:0 classid 1:10 hfsc ls m2 1000kbit tc class add dev enp0s3 parent 1:10 classid 1:100 hfsc ls m2 600kbit tc qdisc add dev enp0s3 parent 1:100 handle 110: fq_codel tc class add dev enp0s3 parent 1:10 classid 1:200 hfsc ls m2 300kbit tc qdisc add dev enp0s3 parent 1:200 handle 210: fq_codel tc class add dev enp0s3 parent 1:10 classid 1:300 hfsc ls m2 100kbit tc qdisc add dev enp0s3 parent 1:300 handle 310: fq_codel