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

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

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

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

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

Спасибо!

1
задан 1 February 2016 в 13:41
2 ответа

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

1
ответ дан 3 December 2019 в 23:51

Вы должны быть в состоянии формировать свой трафик с помощью hfsc : линкшер м2 полосы пропускания должен быть перцендентным. Вот некоторая документация : (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
0
ответ дан 3 December 2019 в 23:51

Теги

Похожие вопросы