LINUX.ORG.RU
ФорумAdmin

Помогите с TC

 , , ,


0

1

Задача стандартная: нужно поделить интернет канал между потребителями с возможностью заимствования (повышения пропускной способности) если канал простаивает. Канал не должен простаивать.

Потребители:
192.168.3.0/24, 192.168.6.0/24 - офисы, требуется гарантированный канал.
192.168.22.212-218 - многопоточные WEB пауки, выкачивают Интернет. Стараются потребить максимум трафика.

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

Моя конфигурация:

tc qdisc del dev eth0 root
tc qdisc add dev eth0 root handle 1: htb default 20
tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit ceil 100mbit
tc class add dev eth0 parent 1:1 classid 1:11 htb rate 75mbit ceil 100mbit
tc class add dev eth0 parent 1:1 classid 1:13 htb rate 5mbit ceil 5mbit
tc class add dev eth0 parent 1:1 classid 1:16 htb rate 10mbit ceil 10mbit
tc class add dev eth0 parent 1:1 classid 1:20 htb rate 10mbit ceil 20mbit
tc filter add dev eth0 parent 1: protocol ip prio 1 u32 match ip dst 192.168.3.0/24 flowid 1:13
tc filter add dev eth0 parent 1: protocol ip prio 1 u32 match ip dst 192.168.6.0/24 flowid 1:16
tc filter add dev eth0 parent 1: protocol ip prio 1 u32 match ip dst 192.168.22.218/32 flowid 1:11
tc filter add dev eth0 parent 1: protocol ip prio 1 u32 match ip dst 192.168.22.217/32 flowid 1:11
tc filter add dev eth0 parent 1: protocol ip prio 1 u32 match ip dst 192.168.22.216/32 flowid 1:11
tc filter add dev eth0 parent 1: protocol ip prio 1 u32 match ip dst 192.168.22.214/32 flowid 1:11
tc filter add dev eth0 parent 1: protocol ip prio 1 u32 match ip dst 192.168.22.213/32 flowid 1:11
tc filter add dev eth0 parent 1: protocol ip prio 1 u32 match ip dst 192.168.22.212/32 flowid 1:11

★★★

Результаты покажите, в виде ежесекундного объёма данных по каждой группе адресов. А то сейчас выяснится, что провайдер вам не даёт 100 Мбит/с гарантированной полосы.

mky ★★★★★ ()
Ответ на: комментарий от mky

Не знаю как быстро нарисовать графики для каждой группы адресов. Замер скорости провожу при помощи wget mirror.yandex.ru и speedtest.net. Входящий трафик на порту к которому подключен провайдер 96Мбит/с. Я уменьшил rate интерфейса до 90Мбит/c, офисной сети получил 10Мбит/с в speedtest.net с сервера нашего города.

Затем выбираю далекий сервер в Америке, получаю не более 5Мбит/c. Отключаю серверы закачки, повторяю тест - получаю 10Мбит.
Какая связь? Полагаю, дело в TCP.

exst ★★★ ()
Ответ на: комментарий от exst

Не знаю как быстро нарисовать графики для каждой группы адресов.

парсить число байтов в «tc -s qdisc show dev ethX» для каждой очереди

Затем выбираю далекий сервер в Америке, получаю не более 5Мбит/c. Отключаю серверы закачки, повторяю тест - получаю 10Мбит.

а ты чего хотел ? у тебя 1:13 и 1:16 ограничены по скорости CEIL.

vel ★★★★★ ()
Ответ на: комментарий от vel

а ты чего хотел ? у тебя 1:13 и 1:16 ограничены по скорости CEIL.

Ожидал получить 9-10Мбит. Получил в два раза меньше.

exst ★★★ ()
Ответ на: комментарий от exst

дык смотри в какой класс у тебя трафик попадает. 1:13 - 5мбит, 1:16 - 10Мбит. В момент тестирования кроме тебя там никого больше нет ?

Чтоб «tc -s class show ...» показывал скорость нужно сказать «echo 1 >/sys/module/sch_htb/parameters/htb_rate_est» и заново установить очереди и классы.

vel ★★★★★ ()
Ответ на: комментарий от exst

Я уменьшил rate интерфейса до 90Мбит/c,

Это вы про ″classid 1:1″ ? Вам нужно пробовать уменьшить для 1:11 ″ceil″ до 90 Мбит, а для 1:1 так и оставить 100, как у сетевого интерфейса.

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

mky ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.