Назад | Перейти на главную страницу

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

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

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

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

Спасибо!

После некоторых исследований и благодаря комментарию 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