Шейпер

Доброго времени суток. Наконец-то познакомился (дошли руки и глаза) поближе с iptables. Вот сейчас возник ,чисто пока теоретический, вопрос, каким средством можно было бы распилить канал между юзерами на шлюзе с пингвином и iptables в качестве стандартного фаера. Интересен опыт, а также сама ликвидность вопроса. Поскольку не везде можно получить рабочий шейпер, не смотря на то, что как бы функционал заложен. Хочется услышать мнения именно нашего комунити, так как последнему я доверяю как себе -)
Лозунг у них был такой: "Познание бесконечности требует бесконечного времени". С этим я не спорил, но они делали из этого неожиданный вывод: "А потому работай не работай — все едино". И в интересах неувеличения энтропии Вселенной они не работали. (с)
Это задача для tc.
Хотя проще реализовывать ограничения с помощью squid. Тогда, хотя бы, логично: при ограниченном канале ставишь кеширующий прокси для экономии трафика и, как дополнение, делишь по определенным правилам этот слабый канальчик между пользователями.
А если канал более-менее нормальный, то лучше не ограничивать отдельных пользователей нарезанными полосками. Лучше посмотреть в сторону приоритезации трафика. На мой взгляд это позволяет более полно использовать ресурсы канала.
Тем не менее, по исходной задаче напоролся на один скрипт, который, похоже, реализует ее.
А по QoS, если есть запал, можно начать с этой странички.
здорого, мне как раз нужно по факту простенький шейпер по ip для борьбы с непонятливыми соседями, которые вопреки моим инструкциям могут врубить торрент на весь канал, что приведет не к смерти, но весьма сильному торможению остального трафика. В идеале хочется также как и на фряхе в свое время, чтобы канал открывался полностью если пользователь один и т.д., т.е. в случае отсутвия необходимости шейпинга канал предоставлялся по формуле приблизительной (заданный минимальный канал по правилам+свободные в данный момент каналы, приблизительно поровну разделенные между так скажем активными каналами , ес-но до момента когда места останется только для строго оговоренного минимального канала)
qos, ну не знаю, уж слишком много НО и Если в этом, деле, но все равно будет полезно почитать.
PS:
Эх жалко скрипт не комментирован(просто не хвататет исходных данных примера), надо будет анализоровать и додумывать, но уже лучше чем ничего.) Записываю ссылки в блокнотик. Вопрос личный тогда еще , неужели сквид может мне помочь отрезать торренты, с приложениями типа загрузчиков, браузер, icq и пр. все ясно, и картинки(парсеры логов кальмара) там отличные , кто куда и зачем, а что насчет утилит, которые не поддерживают прокси или я чтото не допонял?
Лозунг у них был такой: "Познание бесконечности требует бесконечного времени". С этим я не спорил, но они делали из этого неожиданный вывод: "А потому работай не работай — все едино". И в интересах неувеличения энтропии Вселенной они не работали. (с)
ну торренты вещь очень хитрая, на nag.ru целая эпопея в 50 страниц была о том как его вырезать: http://forum.nag.ru/forum/index.php?showtopic=55025
просто замечательный шейпер на хешах на tc был тут: http://abills.net.ua/forum/viewtopic.php?f=6&t=5160 я его у себя в общаге использую, очень хорошо работает.
а еще можете почитать тему здесь: viewtopic.php?f=16&t=4742&hilit=+%D1%88%D0%B5%D0%B9%D0%BF%D0%B5%D1%80
а пара замечаний сразу:
1) если делаете шейпер и используете метки - теряете в производительности, маркировка пакетов слабое место. лучше сразу фильтр сделать в tc.
2) squid проще, да, но опять теряем в производительности, плюс куча не нужных плюшек, которые могут просто мешать. тк они могут смотреть содержимое пакета, а нам это не надо. просто шейпер посмотрит только заголовок.
3) если вы будете работать с торрентами, то для них делайте не шейпер (sfq и прочее), а полисер, и причем максимально простой, те до своего класса пакет должен пройти минимум фильтров. разница в том, что шейпер копит пакеты в очереди если те приходят слишком быстро, а полисер тупо отбрасывает. торрент же такая вещь, которая срет тучей маленьких пакетов, и если шейпер, то нам надо много оперативки и хороший проц.
4) хеш фильтры работают быстрее обычных.
5) вы никогда полностью не вычистите торренты. делаете этакий низкоприоритетный класс и отправляете туда все что не попало в высокоприоритетный.
Шейпить? Только htb.init (морда для tc)
вот кстати этот htb.init я вам не советую юзать ;) когда я решал эту задачу (реализация шейпера) он показался мне слишком заумным и абсолютно не нужным, а когда понял синтаксис tc мое мнение ни сколько не поменялось :)
tc сам по себе гораздо проще, да много писать придется, но для упрощения задачи можно картинку нарисовать с классами и подклассами, а по ней уже правила составлять.
ок , наверно надо покурить будет с tc . всем спасибо, более менее направление нарисовалось в подсознании. Да и торренты мне не надо убивать, просто умерить их пыл и не более того.
Лозунг у них был такой: "Познание бесконечности требует бесконечного времени". С этим я не спорил, но они делали из этого неожиданный вывод: "А потому работай не работай — все едино". И в интересах неувеличения энтропии Вселенной они не работали. (с)
Shaman
вот кстати этот htb.init я вам не советую юзать ;) когда я решал эту задачу (реализация шейпера) он показался мне слишком заумным и абсолютно не нужным, а когда понял синтаксис tc мое мнение ни сколько не поменялось :)
tc сам по себе гораздо проще, да много писать придется, но для упрощения задачи можно картинку нарисовать с классами и подклассами, а по ней уже правила составлять.

Пользуясь случаем хотелось бы попросить нормальный, вменяемый мануал по tc. Ибо я не пью, а без пол литра там не разобраться.
я LARTC курил :) сначала перевод, а потом оригинал читал, где непонятно переведено было. поллитры в принципе достаточно :-D
просто так читать смысла нет, нужно пример готовый разбирать, посмотрите темку на этом форуме, я ссылку выше давал, там тов. gard выкладывал шейперы по которым я разбирался как все это работает. ну и практика обязательно, и начинать надо с простых вещей. я даже помню как gard постоянно советовал упростить шейпер, что бы понять где косяк :)
ну а суть не сложная, рисуете картинку с классами как оно должно быть, создаете корневую дисциплину, для каждого класса пишете команду tc, которая создаст нужный класс. На классы вешаете нужные дисциплины. в дисциплине же укажете скорости, потом пишите фильтры которые раскидают трафик по классам. выглядит вся структура в виде дерева. те в корне дисциплина, у корня подклассы, у подклассов дисциплина и свои подклассы у которых так же дисциплина. фильтры так же могут иметь родительский класс, те не обязательно все в корень бросать.
 
Зарегистрироваться или войдите чтобы оставить сообщение.