web-dev-qa-db-ja.com

tcによるパーセント動的帯域幅制御

Tc(iproute2)を使用して、現在利用可能な帯域幅をパーセントで分割できるかどうかを誰かが知っていますか?使用可能な帯域幅が頻繁に変更されるGPRS接続を使用しています。私が達成したいのは次のとおりです。

  • ポートxへの出力:使用可能な帯域幅の60%
  • ポートyへの出力:使用可能な帯域幅の30%
  • 他のすべての出力トラフィック:使用可能な帯域幅の10%

Tcを使用して、htb qdiscを使用し、60/30/10 kbpsのレートで3つのクラスを作成することにより、この方向で何かを達成することができました。 100kbsの上限を使用することにより、クラスは100kbs未満の利用可能な帯域幅を使用しますが、それ以上は使用しません。

ただし、この種の静的に構成された帯域幅は、帯域幅が非常に可変であり、上限を構成したくないため、私たちにとって有効なソリューションではありません。私たちの目標は、利用可能な帯域幅を可能な限り使用することです。理想的には、レートをバイト/秒ではなくパーセンテージで構成する必要があります。これは可能ですか?私はprioqdiscを見ましたが、そこにあるドキュメントは本当に不足しています。

ありがとう!

1
Jeroen

いくつかの調査の後、EEAAのコメントのおかげで、利用可能な帯域幅をパーセントで分割することは不可能であることは明らかです。

1
Jeroen

あなたはhfscであなたのトラフィックを形作ることができるはずです:linksharem2帯域幅はパーセントであると思われます。ここにいくつかのドキュメントがあります:( 12 、)

たとえば、次のコードを試すことができます。

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
0
Sanael