el_misho Опубликовано 13 апреля, 2011 · Жалоба Здравствуйте, Возникла проблема с шейпером, а именно с 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 Мбит/с): 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 на это могут влиять? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
el_misho Опубликовано 14 апреля, 2011 · Жалоба Может рыть в сторону параметров limit и quantum для дисциплины sfq? Вот что сказано про лимит и quantum: limit Общее количество пакетов, которые могут быть помещены в очередь SFQ (последующие пакеты будут уничтожаться). quantum Количество байт выводимых из очереди за один раз. Т.е может быть такая ситуация, что после определенной скорости пакеты на одной сессии начинают дропаться? Т.е так как limit захардкожен может попробовать увеличить quantum? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 14 апреля, 2011 · Жалоба Т.е так как limit захардкожен может попробовать увеличить quantum? quantum должен быть не меньше MTU (1500 байт). Для экономии процессорного времени вместо sfq лучше использовать pfifo или bfifo. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
el_misho Опубликовано 14 апреля, 2011 · Жалоба 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 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 14 апреля, 2011 (изменено) · Жалоба В корневом классе 1: надо поставить rate равный как минимум сумме всех скоростей дочерних классов. Еще надо бы увеличить размер очереди интерфейса с помощью команды ifconfig ethX txqueuelen 10000 Изменено 14 апреля, 2011 пользователем photon Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
el_misho Опубликовано 14 апреля, 2011 · Жалоба В корневом классе 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 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
photon Опубликовано 14 апреля, 2011 (изменено) · Жалоба 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 используется для него? Изменено 14 апреля, 2011 пользователем photon Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
true.ru Опубликовано 15 апреля, 2011 · Жалоба 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. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
el_misho Опубликовано 15 апреля, 2011 · Жалоба Может быть проблема на стороне хостинга(ов)? И их ограничениями исходящего канала? Посмотрел на разных провайдерах, даже на высоких скоростях скорость скачивания не превышает 1 Мбит/с. Например скачивал файл с zaycev.net. У youtube действительно какой-то скачек просходит и скорость падает до 1 Мбит (тоже тестил в разных местах). А вот онлайн фильмы (с разных хостингов) шпарили с максимальной для меня скоростью - 2.5 Мбит/с. Так как aбоны выходят через NAT может быть такое, что скажем какой-то хостинг имеет ограничение на скачивание с определенного IP? И если так оказалось, что с этого ресурса качают файлы другие абоны из этой же сети, то скорость раздачи выделенная на 1 IP просто разделяется между ними, и поэтому у них так падает скорость. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...