LINUX.ORG.RU
ФорумAdmin

IPtables как ограничить скорость


0

0

Есть несколько машин, которые ходят через нат с помощью такого правила
-A POSTROUTING -s 10.10.10.10 -d ! 111.111.111.26/255.255.255.240 -o eth0 -j SNAT --to-source 111.111.111.27
нужно ограничить скорость для этой машины.
Думаю, что нужно использовать критерий limit, но как, не понимаю :(
Если кто знает - подскажите пожалуйста.

anonymous

совершенно правильно понимаешь,
очень просто делается
... -m limit --limit число_пакетов_в_секунду ... --jump чего делать
tc в твоем случае применять нет никакой необходимости, т.к.
iptables вполне нормально будет резать трафик по tbf.

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

Что то я не совсем понял, как ты собираешся по числу пакетов определить скорость ? Это первое, и каким образом оно будет трафик резать, причем там tbf ?

покажи пример, ато больше на ересь похоже..

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

как обычно - скорость = число_пакетов * AVG pkt size
а трафик будет резаться откидыванием пакетов. tbf это
метод, при помощи которого модуль limit регулирует скорость.

про ересь не заикайся даже, лучше rtfm:

iptables --append FORWARD -p icmp -m limit --limit 100 --jump ACCEPT

можешь проверять

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

нууу... не путайте firewall и qos :)

limit просто отбрасывает "лишние" пакеты
tbf же их задерживает в буффере и отбрасывает только когда буффер заполняется.

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

есть одно "но" , отмечу что это мое мнение , основанное на моем понимании передачи пакетов в сети езернет . Значит так - если вы ограничите скорость , теблями , т.е. колво пакетов , допустим в 10 пакетов в секунду максимум , то предположим в идеале размер пакета 1500 байт то максимальная скорость будет 1500*10=15000 , тобишь примерно 15 кб , но , ситуации разные бывают , пакеты не всегда 1500 , они могут быть и меньше при большой нагрузке , то.е. например 1000 , уже бует 10 кб в сек ( это я как мог дословно объяснил ). Так что если вы хотите ограничит скорость - ограничивайте используя например скрипты htb.init или cbq.init , что бы не мучится с самостоятельным прописыванием правил . На если вам именно пакеты в сек - используйте иптеблес .

Почему я это тут сказал - из работы . Вывод этот сделан на основе показаний например iptraf . Т.е. если клиенту стоит 8 кб в сек , то имея у себя вирусную активность у него не 5 пакетов в секунду максимум как могло бы быть предположено а все 50-100 . И он еще позвонит и спросит - "хули у меня нэт тормазит !?" .

Поэтому те кто предлагает резать СКОРОСТЬ используя limit , т.е. резав пакеты - ОШИБАЕТСЯ , в идеале надо резать скорость клиенту используя tc , т.е. скрипты всякие , такие как htb.init , если клиентов дофига то проще скрипт заюзать . И ТАК ЖЕ надо зарезать максимальное количество (!!!) пакетов используя ресурсы теблей . Мы пока не сделали этого , но пока оптимальный вариант - 20-30 пакетов в секунду для скорости 256 кбит .
Кстати это достаточно серьезно - клиенты-юзвери с достаточно прямолинейной логикой , если в флашгете написано что чем больше одновременных закачек ставить тем больше производительность канала и больший кпд и большая скорость . Он и ставит 100 одновременных сессий на скорости 256 кбит .... Ну все зашибись - скорость у него 32 кб , по нашим графикам нагрузки канала . А вот пакетов у него больше 40-50 , при этом у него наблюдаются страшные тормаза с нэтом , закачка с ошибками и он еще и звонит и тоже спрашивает - что там за фигня у вас с нэтом , все качается с ошибками , так что лучше ему зарезать что бы ниче не качалось выше нормы =)

Если я не прав - скажите где - и скажите почему - с сылками в интернете а без голословных утверждений . Я тут все написал изходя из практики .

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

Ой, а можно еще раз, а то что-то я не понял, зачем резать кол-во пакетов, если уже скорость в байтах режется?

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

если ты думаешь, что алгоритмы ограничения скорости не имеют никакого
отношения среднему размеру пакета, а оперируют только размером
передаваемой информации, то ты сильно заблуждаешься. погрешности
(например htb и особенно cbq) очень хорошо видны на низких скоростях,
поэтому чтобы добиться более точной работы нужно подкручивать параметры
очередей и в идеале увеличивать hz.
поэтому limit вполне нормальный способ более-менее ограничивать
скорость в первом приближении.

Z0termaNN
()
Ответ на: комментарий от fagot

фагот - потому что ненравятся две вещи -

1 - всякие флешгеты в которых клиент ставит 100 сессий одновременно .

2 - вирусная активность .

во всех этих случаях сыпятся куча мелких пакетов весом по 100-300 байт , вот и прикиньте сколько их может быть если у человека максимум 32 кбайта . На счет CBQ добавлю - да , в этом случае когда клиент использовал агрессивно канал флашгетом , то у CBQ крыша ехала , и скорость увеличивалсь клиенту раза в два . При HTB никогда , ни при каких обстоятельствах не зафиксировано увелечение скорости клиенту выше чем это прописано . Если только меньше ;)

Так что это все жиззненно необходимые вещи .

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

>1 - всякие флешгеты в которых клиент ставит 100 сессий одновременно .

а какая связь между кол-вом сессий и пакетов? Можно и сессии рубить, раз такое дело. Или ESFQ использовать.

>во всех этих случаях сыпятся куча мелких пакетов весом по 100-300 байт , вот и прикиньте сколько их может быть если у человека максимум 32 кбайта

Все-равно не понял. Ну, пусть себе сыпятся, будут складываться в буфер, кончилось в нем место - уничтожаются. Как это хоть на что-то влияет?

>При HTB никогда

если leaf-дисциплина стоит по-умолчанию, тоже будет у клиента больше скорость, чем надо бы, елси он качает flashget'том.

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

> как обычно - скорость = число_пакетов * AVG pkt size

Скорее так можно зараннее известный трафик рубить, ICMP там. В остальном практического смысла от пакетов/сек помоему нет.

> метод, при помощи которого модуль limit регулирует скорость.

ничего он не регулирует

iptables --append FORWARD -p icmp -m limit --limit 100 --jump ACCEPT

Если -P FORWARD DROP то да. Но это простые дропы а tbf тут это способ определения скорости, не больше.

Я другое имел ввиду. Думал ты хотел сказать что сам посоебе limit режет.

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