Шейпер по pps в Freebsd

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
si__
проходил мимо
Сообщения: 6
Зарегистрирован: 2009-09-26 23:55:32

Шейпер по pps в Freebsd

Непрочитанное сообщение si__ » 2009-09-27 0:04:12

Столкнулся с проблемой органичения флуда из сети через шлюз на freebsd. Сервер пропускает пакетов боольше, чем выдерживает маршрутизатор провайдера :( . Pipe режут только байты.. а нужно именно пакеты. Вроде под iptable есть приблуды, режущие pps, но переставлять шлюз и осваивать iptabe не очень хорошая перспектива, равно как покупка каталиста за ХХХ уе, умеющего ограничить pps.
Подскажите, пожалуйста, возможно ли это настроить на freebsd.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: Шейпер по pps в Freebsd

Непрочитанное сообщение paradox » 2009-09-27 0:30:47

именно pps так и небыл рализован
хотя идеи были url

можно попробовать зарезать limit коннектов на айпишники

si__
проходил мимо
Сообщения: 6
Зарегистрирован: 2009-09-26 23:55:32

Re: Шейпер по pps в Freebsd

Непрочитанное сообщение si__ » 2009-09-27 0:51:28

paradox писал(а):именно pps так и небыл рализован
хотя идеи были url

можно попробовать зарезать limit коннектов на айпишники
Лимит по маске есть, но если, например, кто то будет отправлять пакеты на один айпи с частотой, как сможет его система и 100 Мбитная сеть...
Может есть какие то "извращенные" методы, как-то завернуть в netgraph?
Тогда еще вопрос, осилит ли линукс на железе вроде 3,0 ггц коре дуо pps 100-200 к, с учетом фильтраций iptable?

warzoni
сержант
Сообщения: 186
Зарегистрирован: 2008-07-04 17:17:59
Откуда: Ukraine,Kiev
Контактная информация:

Re: Шейпер по pps в Freebsd

Непрочитанное сообщение warzoni » 2009-09-27 0:54:58

si__ писал(а):Столкнулся с проблемой органичения флуда из сети через шлюз на freebsd. Сервер пропускает пакетов боольше, чем выдерживает маршрутизатор провайдера :( . Pipe режут только байты.. а нужно именно пакеты. Вроде под iptable есть приблуды, режущие pps, но переставлять шлюз и осваивать iptabe не очень хорошая перспектива, равно как покупка каталиста за ХХХ уе, умеющего ограничить pps.
Подскажите, пожалуйста, возможно ли это настроить на freebsd.

Здрасвуйте! если я не ошибся то расмотрите этот пример

http://lists.freebsd.org/pipermail/free ... 00074.html

si__
проходил мимо
Сообщения: 6
Зарегистрирован: 2009-09-26 23:55:32

Re: Шейпер по pps в Freebsd

Непрочитанное сообщение si__ » 2009-09-27 1:04:55

warzoni писал(а): Здрасвуйте! если я не ошибся то расмотрите этот пример

http://lists.freebsd.org/pipermail/free ... 00074.html
Совершенно верно, спасибо, подскажите, пожалуйста, куда это вставить, ip_fw2.c ... ?

warzoni
сержант
Сообщения: 186
Зарегистрирован: 2008-07-04 17:17:59
Откуда: Ukraine,Kiev
Контактная информация:

Re: Шейпер по pps в Freebsd

Непрочитанное сообщение warzoni » 2009-09-27 1:14:20

si__ писал(а):
warzoni писал(а): Здрасвуйте! если я не ошибся то расмотрите этот пример

http://lists.freebsd.org/pipermail/free ... 00074.html
Совершенно верно, спасибо, подскажите, пожалуйста, куда это вставить, ip_fw2.c ... ?
К сожелению когда я нахожу овтеты, и это заключаетца в програмирвоание либо разберателстве соурцев, то я прибегаю к с пециалистам,я хочу сам видить и надеюсь,програмисты нам расжуют, куда и как вставить *),...я не сталкивался с этой проблеммой но ваш вопрос меня насторожил и хотелось бы самому увидить,реализацию данного ограничение на уровне Ipfw :smile:

warzoni
сержант
Сообщения: 186
Зарегистрирован: 2008-07-04 17:17:59
Откуда: Ukraine,Kiev
Контактная информация:

Re: Шейпер по pps в Freebsd

Непрочитанное сообщение warzoni » 2009-09-27 1:29:07

Я вот о чём подумал а разве нету ограничение пакетов на Ip адрес видь есть же на queues

Код: Выделить всё

weight 50 pipe 102   10 sl. 1 queues (1 buckets) droptail
загоняйте в трубу и указуйте не больше 10 бакетов на айпи адрес..

тоесть pipe устанавливаете трубу и queues загоняете в пайпы и ставте ограничение на пакеты ..помойму так..

у меня просто режит по айпишникам и например я делаю юзеру 512 килабит скорасть и небольше 10 пакетов в секунду...пакеты регулирую queues
Последний раз редактировалось warzoni 2009-09-27 1:39:32, всего редактировалось 1 раз.

si__
проходил мимо
Сообщения: 6
Зарегистрирован: 2009-09-26 23:55:32

Re: Шейпер по pps в Freebsd

Непрочитанное сообщение si__ » 2009-09-27 1:34:12

Будем надеятся, программисты подскажут, по идее надо править /usr/src/sys/netinet/ip_fw2.c, но файл не маленький :smile:
предположу, что

Код: Выделить всё

 case O_PPS: {
надо добавить в

Код: Выделить всё

int
ipfw_chk(struct ip_fw_args *args)
{ ...
например, перед

Код: Выделить всё

 case O_RECV:
                                match = iface_match(m->m_pkthdr.rcvif,
                                    (ipfw_insn_if *)cmd);
                                break;
а структуру в ipfw.h
только в том же ipfw.h надо ж указать O_PPS: в enum ipfw_opcodes {

si__
проходил мимо
Сообщения: 6
Зарегистрирован: 2009-09-26 23:55:32

Re: Шейпер по pps в Freebsd

Непрочитанное сообщение si__ » 2009-09-27 1:42:53

warzoni писал(а):Я вот о чём подумал а разве нету ограничение пакетов на Ip адрес видь есть же на queues

weight 50 pipe 102 10 sl. 1 queues (1 buckets) droptail

загоняйте в трубу и указуйте не больше 10 бакетов на айпи адрес..

тоесть pipe устанавливаете трубу и queues загоняете в пайпы и ставте ограничение на пакеты ..помойму так..

у меня просто режит по айпишникам и например я делаю юзеру 512 килабит скорасть и небольше 10 пакетов в секунду...пакеты регулирую queues
buckets hash-table-size
Specifies the size of the hash table used for storing the various
queues. Default value is 64 controlled by the sysctl(8) variable
net.inet.ip.dummynet.hash_size, allowed range is 16 to 65536.

т.е, такая конструкция

Код: Выделить всё

  ipfw  pipe 11 copnfig bw 512kbits/s queue 40
 ..... 12  ....
  ipfw queue 111 config pipe 11 weigth 20 queue 40  [ buckets 10 ] [ mask src-ip oxffffffff ]
 ...              112   ......
   ipfw queue  113                                     weigth30
...................
  ipfw add 1111 queue 111 tcp from {net_max_prio} to {ip}  limit src-addr 200
 ......  1112               111                  other prio                                   50
  ipfw add 1116 queue 116 udp from {net_max_prio} to {ip}  limit src-addr 50
  ......................................
  ipfw add 1121 queue 112 tcp from {ip} to {net_max_prio} limit dst-addr 200
 ......  1122               112                  other prio                                   50
  ipfw add 1126 queue 112 udp from {ip} to {net_max_prio}   limit dst-addr 50
  ......................................
разве органичит юникастовый флуд пакетами по 25 байт? ведь их там 500 000 пролезет через 100 мбитную сеть

wel
сержант
Сообщения: 170
Зарегистрирован: 2007-02-27 11:59:41

Re: Шейпер по pps в Freebsd

Непрочитанное сообщение wel » 2010-02-28 1:39:35

В связи с проблема с новым протоколом mTp возникает проблема с надобностью ограничения pps на клиентов.
Сейчас есть:
freebSD + mpd5 + PPTP

Аватара пользователя
FreeBSP
майор
Сообщения: 2020
Зарегистрирован: 2009-05-24 20:20:19
Откуда: Москва

Re: Шейпер по pps в Freebsd

Непрочитанное сообщение FreeBSP » 2010-02-28 3:13:48

вариант: снимать с файера(ipfw) статистику по пакетам, вычислять PPS и динамически ставить шейпинг
реализовать можно как скриптом так и прогой/ при программной реализации достигается более высокая точность и понизится латентность системы

но вот такая мысль, если просто сужать пропускную способность, то где то надо хранить поступающие пакеты, причем их очередь будет нарастать...
или я просто не понимаю ижею шейпинга по ппс?
Человек начинает получать первые наслаждения от знакомства с unix системами. Ему нужно помочь - дальше он сможет получать наслаждение самостоятельно ©
Ламер — не желающий самостоятельно разбираться. Не путать с новичком: ламер опасен и знает это!

wel
сержант
Сообщения: 170
Зарегистрирован: 2007-02-27 11:59:41

Re: Шейпер по pps в Freebsd

Непрочитанное сообщение wel » 2010-02-28 3:40:08

FreeBSP писал(а):вариант: снимать с файера(ipfw) статистику по пакетам, вычислять PPS и динамически ставить шейпинг
реализовать можно как скриптом так и прогой/ при программной реализации достигается более высокая точность и понизится латентность системы

но вот такая мысль, если просто сужать пропускную способность, то где то надо хранить поступающие пакеты, причем их очередь будет нарастать...
или я просто не понимаю ижею шейпинга по ппс?
сейчас только не ленивый "продает" скорость хомячкам до 100Мбит/сек... - в пределе это 205 кило-pps 64байтными пакетами. Если учесть что скорость будут только расти... на один брас будет приходить до нескольких лямов-pps, может десятка лямов-pps.
А теперь самое главное - на хомячках не то что заработать, а оборудование обновить сложно, а вот "торрент-качков" среди них только увеличивается...
Чем отличаются честные юрики которые платят 50%-100% от настоящей цены честного Мбит-а, от хомячков - которые платят 0,5-5% за скорость интернета?...

Желание резать количество pps и сессий - убить оверсейлинг услуг провайдера, поднять ARPU, защитить оборудование для предоставления должного качества обслуживания...

wel
сержант
Сообщения: 170
Зарегистрирован: 2007-02-27 11:59:41

Re: Шейпер по pps в Freebsd

Непрочитанное сообщение wel » 2010-02-28 15:34:11

FreeBSP писал(а):вариант: снимать с файера(ipfw) статистику по пакетам, вычислять PPS и динамически ставить шейпинг
реализовать можно как скриптом так и прогой/ при программной реализации достигается более высокая точность и понизится латентность системы
В том то и дело что pps - это pps, и со скоростью оно может вообще не коррелироваться, pps-ов может быть много... Если ограничивать скорость pps-ы не ограничиваются

Inzevision
мл. сержант
Сообщения: 102
Зарегистрирован: 2008-07-30 13:43:00
Откуда: Киев
Контактная информация:

Re: Шейпер по pps в Freebsd

Непрочитанное сообщение Inzevision » 2010-10-22 20:50:26

попытаюсь оживить эту тему. кто-то решил вопрос лимитирования пакетов/сек на фре?

Shuriks
проходил мимо

Re: Шейпер по pps в Freebsd

Непрочитанное сообщение Shuriks » 2010-10-23 8:01:33

Inzevision писал(а):попытаюсь оживить эту тему. кто-то решил вопрос лимитирования пакетов/сек на фре?
Лимитировать пока не приходилось, но пакеты считать пришлось.
Здесь уже появлялась идея считать пакеты с ipfw. Это и реализовал.
При желании, можно на основе анализа рассчитанных pps заняться уже и ограничением. Как вариант, в зависимости от значения pps можно менять значение probe для pipe.
Собственно сам скрипт, вызывается каждые 15 сек.

Код: Выделить всё

#!/usr/local/bin/bash

for ((i=1; i<=4; i++))
{
 pr[i]=$(cut -d" " -f$i prev.pps);
}

cur[1]=$(ipfw -a list | egrep ^"00001" | tr -s " " | cut -d" " -f2);
cur[2]=$(ipfw -a list | egrep ^"00002" | tr -s " " | cut -d" " -f2);
cur[3]=$(ipfw -a list | egrep ^"00011" | tr -s " " | cut -d" " -f2);
cur[4]=$(ipfw -a list | egrep ^"00012" | tr -s " " | cut -d" " -f2);

for ((i=1; i<=4; i++))
{
 pps[i]=$(echo "scale=0; (${cur[i]}-${pr[i]})/15" | bc);
}

echo $(date "+%H:%M:%S")" "${pps[1]}" "${pps[2]}" "${pps[3]}" "${pps[4]} >> $(date "+%Y%m%d").pps;
echo ${cur[1]} ${cur[2]} ${cur[3]} ${cur[4]} > prev.pps
Прошу сильно не пинать за такую реализацию, только начинаю осваивать скриптописание. Хочу уйти от bash, но пока знаний не хватает. Если есть у кого желание оптимизировать сей скрипт, буду очень благодарен :-).
З.Ы. Использование bc осталось с тех пор, когда считал pps с точностью до 0,1

napTu
рядовой
Сообщения: 17
Зарегистрирован: 2009-09-23 18:47:44

Re: Шейпер по pps в Freebsd

Непрочитанное сообщение napTu » 2012-07-23 11:07:26

проходил мимо, но...

pps вроде так:

Код: Выделить всё

netstat -a 1

Код: Выделить всё

netstat -I em0 1
ограничить так

Код: Выделить всё

count udp from table(4) to any in via em0 limit src-addr 15