Процентное динамическое управление пропускной способностью с помощью tc

Кто-нибудь знает, можно ли использовать tc (iproute2) для процентного разделения текущей доступной пропускной способности? Мы находимся на GPRS-соединении, на котором часто меняется доступная пропускная способность. Я хочу добиться следующего:

  • Выход на порт x: 60% доступной пропускной способности
  • Выход на порт y: 30% доступной пропускной способности
  • Весь другой исходящий трафик: 10% доступной полосы пропускания

С tc мне удалось достичь чего-то в этом направлении, используя htb qdisc и создав 3 класса со скоростью 60 / 30 / 10 кбит / с. Используя потолок в 100 Кбит / с, классы будут использовать любую доступную полосу пропускания менее 100 Кбит / с, если она доступна, но никогда больше.

Этот тип статически настроенной полосы пропускания, однако, не является решением, которое будет работать для нас, так как наша полоса пропускания чрезвычайно изменчива, и мы не хотим настраивать потолок. Наша цель - максимально использовать доступную пропускную способность. В идеале мы не хотим настраивать скорость в байтах / секундах, а в процентах. Это возможно? Я посмотрел Prio QDisc, но документации там действительно не хватает.

Спасибо!

2 ответа

После некоторых исследований и благодаря комментариям EEAA стало ясно, что разделение доступной полосы пропускания в процентах невозможно.

Вы должны иметь возможность формировать свой трафик с помощью hfsc: пропускная способность 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
Другие вопросы по тегам