Недавно заметил, что работающий исключительно в локалке провайдера DC++ иногда вдруг отжирает часть канала у активно раздающего uTorrent (при включенном DC uTorrent раздает только 27 кб/с, при выключенном - положенные 55).
Решил попробовать настроить шейпер трафика.
Дано:
Модем Acorp LAN422 с прошивкой V.2.03.RU.01112007.
К нему, грубо говоря, подключен один компьютер, где:
1. Изредка используется веб-браузер.
2. Постоянно качает и раздает uTorrent (в интернет).
3. Работает сервер GTA San Andreas Multiplayer (порт 7777, UDP, только в локалку провайдера).
4. Работает (качает и раздает) клиент DC++ (в локалку).
В модеме два соединения на одном VPI/VCI под разными логинами и паролями - одно смотрит в локалку и имеет скорость, совпадающую с физической скоростью соединения (8000/2500 кбит/с), другое – в интернет и имеет 512/512 кбит/с. Настроен роутинг, чтобы модем знал, что идет в локалку, а что - в интернет, открыты все нужные порты, в общем - все работает.
Чего бы хотелось:
Чтобы uTorrent всегда раздавал на максимуме и чтобы на сервере SAMP были пинги поменьше (чтобы SAMP'у не мешал DC).
Важное условие: скорость DC++ в самом клиенте ограничивать нельзя (если начну здесь объяснять почему, все только запутается).
Я внимательно выкурил документацию и форум, чуть-чуть сломал себе мозг и решил шейпить пока только исходящий трафик.
Вот настройки (и их описание - что они делают в моем понимании):
Первый класс - для http:
6 0 0 0 80 (Protocol, Src IP, Dst IP, Src Port, Dst Port).
Имеет гарантированную половину канала в интернет, если свободен - весь канал, имеет высший приоритет.
Второй - для uTorrent:
0 0 0 0 bit (Protocol, Src IP, Dst IP, Src Port, Dst Port).
Имеет гарантированную половину канала в интернет, если свободен - весь канал, приоритет ниже, чем у первого.
Третий - для сервера SA:MP (работает в локалке):
17 0 0 7777 0 (Protocol, Src IP, Dst IP, Src Port, Dst Port).
Имеет гарантированные 600 кбит/с канала локалки, если что - весь канал локалки за вычетом канала в интернет (они все же физически через одну дырку бегут - вот я и решил так сделать, чтобы никогда и ни при каких условиях игрушка не заняла канал в инет). Значения скоростей класса завышены относительно максимального возможного количества игроков на сервере (точно никто не считал, сколько генерирует этот сервер трафика; считается - максимум 15 кбит/с на игрока, а у меня максимум 32 игрока)
Четвертый - для DC++ (работает в локалке):
0 0 0 0 dc (Protocol, Src IP, Dst IP, Src Port, Dst Port).
Имеет гарантированные 991 кбит/с канала локалки (чтоб при максимальной нагрузке на все сервисы не пытался отобрать канал у сервера SA:MP и, тем более, у интернетных программ), если что - получает весь физический канал (то есть, как я понимаю, способен использовать все, что не используют другие).
Пятый - для всего остального:
0 0 0 0 0.
Не знаю, почему именно так, но вроде бы все так делают.
Почему везде sfq, тоже не знаю. Так решил, а о чем думал - не помню.
Результаты:
Совершенно точно, что с такими настройками шейпера график отдачи uTorrent превращается в прямую линию, лежащую на установленном максимуме, при включенном DC++ (без шейпера скорость отдачи болтается в любом месте между максимумом и половиной).
При включении шейпера пинги до Яндекса постепенно уменьшаются с 200-400 до 30-70.
Эффект для SA:MP особый не замечен – вроде бы пинги у людей упали с 300-400 до 150-200, но там сложно оценить без дополнительного софта и экспериментов.
Вот так вот.
Может быть, эти настройки кому-то помогут, а кто-то, быть может, предложит способы их оптимизации.