Перейти к содержимому
Калькуляторы

Проблема с шейпером (htb) Скорость не достигает максимума

Здравствуйте,

 

Возникла проблема с шейпером, а именно с htb. Расширили канал, увеличили абонентскую скорость до нескольких мегабит. И начали происходить непонятные вещи.

 

Существует абонентский web трафик, который направляется в отдельный класс (например 1002 см. ниже) каждого абонента. С учетом полосы пропускания RATE для некоторых абонентов равен 80 Кбит/с (гарантированная скорость), а CEIL выставлена 2,5 Мбит/с.

 

И происходит такая ситуация: в течение первых 15 секунд (примерно) когда человек начинает что-то грузить (например, ролик с youtube) она держится, а потом падает до 1 Мбита. Какие-либо файлы также качаются на скорости 1 Мбит/с. И потом, что интересно эта скорость прям держится в районе 1 Мбит/с и не растет и не падает. При этом канал вообще свободный и родительский класс тоже свободен. Тесты скорости иногда выдают 2,3 Мбит/с. Но вот просто не понятно где может быть косяк, что скорость падает при свободном то канале.

 

Что интересно, раньше при 500 Кбит/с или даже при 1500 Кбит/с эта скорость достигалась и держалась. А вот с 2,5 Мбит/с – падает до 1 Мбит.

 

Также удивляет, что скорость постоянно скачет около значения 1000 Мбит/с. Т.е как бы волнами идет, то падает до 700 Кбит/с то возрастает до 1300 Кбит/с. Т.е колеблется около 1000 Кбит/с.

 

Весь web трафик идет через сквид. Раньше в нем стояли ограничения на скорость скачки на некоторые файлы как 512 Кбит/с, но после расширения, вообще мы конфиг сквида поправили и убрали вообще какие-либо ограничения.

 

Вот дерево классов (пример для 3 абонентов, для внутреннего интерфейса, у 1:100 как пример канал равен 10 Мбит/с):

classp.png

 

Ssh – это служебный трафик.

Bit - это класс пирингово трафика (торрент)

Ring – региональное кольцо

Local – внутри локальной сети

 

Т.е скажем для абона 192.168.0.2 скорость 2500 держится секунд 15 потом стабильно падает до 1 Мбит, при свободном канале.

Вот пример создания класса:

/sbin/tc class add dev eth0 parent 1:100 classid 1:1002 htb rate 80Kbit ceil 2500Kbit

/sbin/tc qdisc add dev eth0 parent 1:1002 handle 1002 sfq perturb 10

/sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 100 u32 match ip dst 192.168.0.2 classid 1:1002

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Может рыть в сторону параметров limit и quantum для дисциплины sfq?

 

Вот что сказано про лимит и quantum:

limit

Общее количество пакетов, которые могут быть помещены в очередь SFQ (последующие пакеты будут уничтожаться).

 

quantum

Количество байт выводимых из очереди за один раз.

 

Т.е может быть такая ситуация, что после определенной скорости пакеты на одной сессии начинают дропаться?

Т.е так как limit захардкожен может попробовать увеличить quantum?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Т.е так как limit захардкожен может попробовать увеличить quantum?

quantum должен быть не меньше MTU (1500 байт). Для экономии процессорного времени вместо sfq лучше использовать pfifo или bfifo.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

quantum для sfq стоит 1514b (по умолчанию)

quantum для класса 2000

 

Загрузка CPU - 1% всё время. Так что ресурсы не критичны.

 

Сейчас посмотрел статистику для root qdisc. Это вообще нормально, что такое большое количество dropped и overlimits?

 

qdisc htb 1: root r2q 5 default 400 direct_packets_stat 1087 ver 3.17

Sent 42737451559 bytes 42739969 pkt (dropped 512899, overlimits 86837479 requeues 15)

rate 0bit 0pps backlog 0b 151p requeues 15

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В корневом классе 1: надо поставить rate равный как минимум сумме всех скоростей дочерних классов. Еще надо бы увеличить размер очереди интерфейса с помощью команды ifconfig ethX txqueuelen 10000

Изменено пользователем photon

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В корневом классе 1: надо поставить rate равный как минимум сумме всех скоростей дочерних классов. Еще надо бы увеличить размер очереди интерфейса с помощью команды ifconfig ethX txqueuelen 10000

 

В корневом классе уже стоит rate с большим запасом - 100 Мбит.

 

Вы уверены что параметр txqueuelen 10000 на это повлияет?

Ведь абонентов всего около 200. Искал в нете, ничего толкового каким значением его выставлять - не нашел.

 

Вот вывод команды ifconfig для интерфейса, смотрящего в локальную сеть:

eth0 RX packets:1576245414 errors:0 dropped:0 overruns:0 frame:0

TX packets:1600484754 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:3311345618 (3.3 GB) TX bytes:970263012 (970.2 MB)

Interrupt:16 Base address:0x6000

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

qdisc htb 1: root r2q 5 default 400 direct_packets_stat 1087 ver 3.17

Sent 42737451559 bytes 42739969 pkt (dropped 512899, overlimits 86837479 requeues 15)

rate 0bit 0pps backlog 0b 151p requeues 15

Странно, что здесь 0bit. Насколько я помню, ceil в дочерних классах работает, только если явно указать скорость корневого класса. Какая команда tc используется для него?

Изменено пользователем photon

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

tc -s q s dev eth0

qdisc htb 1: root refcnt 2 r2q 10 default 0 direct_packets_stat 6658998

Sent 1487776950214 bytes 2051574479 pkt (dropped 307311, overlimits 2577864060 requeues 4)

rate 0bit 0pps backlog 0b 0p requeues 4

 

 

у себя вижу тот же 0 bit, но при этом проблем с скоростью не наблюдаю, в рамках rate/ceil.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Может быть проблема на стороне хостинга(ов)? И их ограничениями исходящего канала? Посмотрел на разных провайдерах, даже на высоких скоростях скорость скачивания не превышает 1 Мбит/с. Например скачивал файл с zaycev.net. У youtube действительно какой-то скачек просходит и скорость падает до 1 Мбит (тоже тестил в разных местах).

 

А вот онлайн фильмы (с разных хостингов) шпарили с максимальной для меня скоростью - 2.5 Мбит/с.

 

Так как aбоны выходят через NAT может быть такое, что скажем какой-то хостинг имеет ограничение на скачивание с определенного IP? И если так оказалось, что с этого ресурса качают файлы другие абоны из этой же сети, то скорость раздачи выделенная на 1 IP просто разделяется между ними, и поэтому у них так падает скорость.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.