Как я могу использовать команду `tc` для получения первого приоритета очереди?

Допустим, у меня 3 очереди (# указывает данные):

Q1: (in)[ ###](out) Q2: (in)[ #####](out) Q3: (in)[ #############](out) 

Допустим, я поместил все мои ICMP-пакеты в Q1 и все постоянные загрузки в Q3.

Как использовать команду tc (из iproute2) для пустого Q1, когда он имеет данные, и игнорировать остальные 2 очереди?

В настоящее time я ограничиваю скорость Q3, но это выглядит довольно грубо. Я бы хотел, чтобы Q3 загружался с полной скоростью в моменты, когда Q1 не имеет трафика.

Это возможно?

Обновление: см. Мою версию 1 моего сценария QoS.

Обновление 2: я дополнительно обновил свой сценарий (см. Версию 2 ), но я изменил ISP с тех пор, пока не закончил QoS (поэтому less необходимости в динамических изменениях скорости). Тем не менее, я добавил, что -u и -d arguments, поэтому я могу изменить верхний / нижний пределы без необходимости редактировать скрипт. Проблема с этим скриптом заkeyается в том, что скорость очереди никогда не достигает значения ceil; они только достигают rate которая, как мне кажется, не должна произойти.

Обновление 3: я понятия не имею, почему, но версия 3 моего QoS-скрипта работает ! Если бы кто-то мог объяснить, почему, это было бы здорово … Я внес только незначительные изменения; Я не могу понять, как я сделал это … Я изменил настройки пакета после того, как обнаружил, что он работает.

Хороший сценарий, мне нравится часть с временем, зависящим от динамической скорости загрузки. 😉 Во всяком случае, я делаю то, что вы хотите. Я сделал это с htb, но переkeyился несколько месяцев назад на hfsc. Трюк состоит в том, чтобы ограничить q3 скоростью до очень низкой скорости, но придать ему максимальную полосу пропускания. q1, с другой стороны, получает более высокую скорость и тот же уровень. Один пример реального мира:

 tc class add dev ppp0 parent 1: classid 1:1 htb rate 100kbps ceil 100kbps tc class add dev ppp0 parent 1:1 classid 1:10 htb rate 60kbps ceil 100kbps prio 1 tc class add dev ppp0 parent 1:1 classid 1:11 htb rate 39kbps ceil 100kbps prio 2 tc class add dev ppp0 parent 1:1 classid 1:12 htb rate 1kbps ceil 100kbps prio 3 

Q1 будет 1:10

Q2 будет 1:11

Q3 будет 1:12

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

tc -s -d class show dev <interface> должен показывать некоторую статистику о очередях. Покажем нам результат, если q1 не имеет ничего общего, и q3 не использует полную полосу пропускания. Также вы можете дать hfsc попробовать.

Одно замечание: QOS или Traffic Control для вашего inputящего трафика в большинстве конфигураций довольно бесполезны. Как правило, вы находитесь в роли приемника, у которого less полномочий по получению количества данных / времени. Вы можете использовать Ingress-Queuing, но это не поможет, оно только отбрасывает уже полученные пакеты.

Это не так плохо, как кажется, потому что большинство коммутируемых соединений в настоящее time являются асимметричными, что означает, что направление передачи является узким местом. (Всегда с вашей точки зрения)

Изучите «приоритет», «курс» и «потолок».

Вы должны быть в состоянии дать Q3 низкий уровень (и высокий потолок) … и Q1 «более низкий» приоритет (что делает его фактически более важным). То, что это должно сделать, это дать Q1 преобладающую полосу пропускания … когда ее не используют … Q3 следует затем поднимать до ее потолка (поскольку это не так важно).

Вот моя рабочая версия: qos-v3.sh

Это даже работает на QoS для загрузки тоже; но для «стабилизации» требуется некоторое time. Это связано с тем, что, насколько я понимаю, serverы все равно будут пытаться отправлять вам максимально возможную скорость, но поскольку сценарий QoS отбрасывает пакеты, inputящее connection часто замедляет скорость, с которой он отправляет пакеты (до тех пор, пока пакеты перестаньте выпадать).

Как 7 из 9 скажут: грубая, но эффективная (о боже, я не …)

  • Управление трафиком Linux: qdisc mq
  • Как я могу сделать формирование трафика в Linux по IP для двусторонней связи?
  • Низкая performance сети при использовании OpenVPN
  • tc prio qdisc для приоритезации трафика mysql
  • Процентное динамическое управление пропускной способностью с tc
  • Одновременное управление HTB, NetEM и TBF
  • tc u32 match protocol в последних ядрах - где обсуждать?
  • Использование tc для задержки пакетов только на один IP-адрес
  • Как я могу ограничить пропускную способность загрузки / загрузки на моем serverе CentOS?
  • Как добавить задержку для inputящего трафика?
  • Ограничение полосы пропускания на Ubuntu Linux
  • Давайте будем гением компьютера.