Ограничение пропускной способности сети по фиксированной скорости для всех подключений / пользователей

Я ищу команды в Linux, чтобы ограничить скорость загрузки / выгрузки для всех пользователей фиксированной скоростью.

У меня есть три команды Linux, которые ограничивают скорость сети на ОС.

tc qdisc add dev eth0 root handle 1: htb default 10
tc class add dev eth0 parent 1: classid 1:1 htb rate 1000kbps ceil 1500kbps 
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 10kbps ceil 20kbps

Когда я пытаюсь загрузить с этого сервера с одним клиентом, скорость загрузки составляет 20 Кбит / с, но при попытке загрузки с двумя клиентами скорость уменьшается до 9-10 Кбит / с для каждого клиента.

Есть ли способ сохранить скорость на 20 Кбит / с или любое фиксированное значение для более чем одного соединения / пользователя?

0
задан 22 September 2019 в 10:03
2 ответа

Когда вы используете HTB qdisc, вы должны создать отдельный класс для каждого пользователя / соединения, для тех, кому вы хотите ограничить полосу пропускания.

Типичная конфигурация дерева классов:

  • root qdisc (HTB, дескриптор 1: 0, класс по умолчанию 1: 2)
    • корневой класс (HTB, classid 1: 1, родительский 1: 0, скорость 100 Мбит)
      • класс по умолчанию (HTB, classid 1: 2, parent 1: 1, rate 50Mbit, ceil 100Mbit)
      • общий класс (HTB, classid 1: 3, parent 1: 1, rate 50Mbit, ceil 100Mbit)
        1. host1 класс (HTB, classid 1:11, родительский 1: 3, скорость 20 Кбит)
        2. host2 класс (HTB, classid 1:12, parent 1: 3, rate 20Kbit)
        3. hostN класс (HTB, classid 1:13, родительский 1: 3, скорость 20 Кбит)

Команды tc должны выглядеть так:

# remove current configuration if exists
tc q del dev <iface> root || true
tc q del dev <iface> ingress || true

# create the root queue discipline
tc q add dev <iface> root handle 1:0 htb default 3

# attach the root class to the root qdisc
tc c add dev <iface> parent 1:0 classid 1:1 htb rate 100Mbit

# default class
tc c add dev <iface> parent 1:1 classid 1:2 htb rate 50Mbit ceil 100Mbit

# class to limit the hosts
tc c add dev <iface> parent 1:1 classid 1:3 htb rate 50Mbit ceil 100Mbit

# attach classes to limit every host (one class = one host)
tc c add dev <iface> parent 1:3 classid 1:11 htb rate 20Kbit
tc c add dev <iface> parent 1:3 classid 1:12 htb rate 20Kbit
tc c add dev <iface> parent 1:3 classid 1:13 htb rate 20Kbit

# classification of the downstream traffic to hosts
tc f add dev <iface> parent 1:0 protocol ip prio 10 handle 800::1 u32 match ip dst 192.0.2.2 flowid 1:11
tc f add dev <iface> parent 1:0 protocol ip prio 10 handle 800::2 u32 match ip dst 192.0.2.3 flowid 1:12
tc f add dev <iface> parent 1:0 protocol ip prio 10 handle 800::3 u32 match ip dst 192.0.2.4 flowid 1:13
0
ответ дан 5 December 2019 в 00:44

Я пока не могу спросить Антона Данилова с комментарием: «Если я хочу выделить 50% полосы пропускания, чтобы быть доступным для конкуренции, но я хочу разделить оставшиеся 50% между пользователями поровну» , обеспечивая гарантированный минимум, как это сделать? "

0
ответ дан 5 December 2019 в 00:44

Теги

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