Шейпер по pps в Freebsd
Модератор: terminus
Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
- проходил мимо
- Сообщения: 6
- Зарегистрирован: 2009-09-26 23:55:32
Шейпер по pps в Freebsd
Столкнулся с проблемой органичения флуда из сети через шлюз на freebsd. Сервер пропускает пакетов боольше, чем выдерживает маршрутизатор провайдера . Pipe режут только байты.. а нужно именно пакеты. Вроде под iptable есть приблуды, режущие pps, но переставлять шлюз и осваивать iptabe не очень хорошая перспектива, равно как покупка каталиста за ХХХ уе, умеющего ограничить pps.
Подскажите, пожалуйста, возможно ли это настроить на freebsd.
Подскажите, пожалуйста, возможно ли это настроить на freebsd.
Услуги хостинговой компании Host-Food.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/
Тарифы на виртуальные сервера (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/
-
- проходил мимо
- Сообщения: 11620
- Зарегистрирован: 2008-02-21 18:15:41
Re: Шейпер по pps в Freebsd
именно pps так и небыл рализован
хотя идеи были url
можно попробовать зарезать limit коннектов на айпишники
хотя идеи были url
можно попробовать зарезать limit коннектов на айпишники
-
- проходил мимо
- Сообщения: 6
- Зарегистрирован: 2009-09-26 23:55:32
Re: Шейпер по pps в Freebsd
Лимит по маске есть, но если, например, кто то будет отправлять пакеты на один айпи с частотой, как сможет его система и 100 Мбитная сеть...paradox писал(а):именно pps так и небыл рализован
хотя идеи были url
можно попробовать зарезать limit коннектов на айпишники
Может есть какие то "извращенные" методы, как-то завернуть в netgraph?
Тогда еще вопрос, осилит ли линукс на железе вроде 3,0 ггц коре дуо pps 100-200 к, с учетом фильтраций iptable?
-
- сержант
- Сообщения: 186
- Зарегистрирован: 2008-07-04 17:17:59
- Откуда: Ukraine,Kiev
- Контактная информация:
Re: Шейпер по pps в Freebsd
si__ писал(а):Столкнулся с проблемой органичения флуда из сети через шлюз на freebsd. Сервер пропускает пакетов боольше, чем выдерживает маршрутизатор провайдера . Pipe режут только байты.. а нужно именно пакеты. Вроде под iptable есть приблуды, режущие pps, но переставлять шлюз и осваивать iptabe не очень хорошая перспектива, равно как покупка каталиста за ХХХ уе, умеющего ограничить pps.
Подскажите, пожалуйста, возможно ли это настроить на freebsd.
Здрасвуйте! если я не ошибся то расмотрите этот пример
http://lists.freebsd.org/pipermail/free ... 00074.html
-
- проходил мимо
- Сообщения: 6
- Зарегистрирован: 2009-09-26 23:55:32
Re: Шейпер по pps в Freebsd
Совершенно верно, спасибо, подскажите, пожалуйста, куда это вставить, ip_fw2.c ... ?warzoni писал(а): Здрасвуйте! если я не ошибся то расмотрите этот пример
http://lists.freebsd.org/pipermail/free ... 00074.html
-
- сержант
- Сообщения: 186
- Зарегистрирован: 2008-07-04 17:17:59
- Откуда: Ukraine,Kiev
- Контактная информация:
Re: Шейпер по pps в Freebsd
К сожелению когда я нахожу овтеты, и это заключаетца в програмирвоание либо разберателстве соурцев, то я прибегаю к с пециалистам,я хочу сам видить и надеюсь,програмисты нам расжуют, куда и как вставить *),...я не сталкивался с этой проблеммой но ваш вопрос меня насторожил и хотелось бы самому увидить,реализацию данного ограничение на уровне Ipfwsi__ писал(а):Совершенно верно, спасибо, подскажите, пожалуйста, куда это вставить, ip_fw2.c ... ?warzoni писал(а): Здрасвуйте! если я не ошибся то расмотрите этот пример
http://lists.freebsd.org/pipermail/free ... 00074.html
-
- сержант
- Сообщения: 186
- Зарегистрирован: 2008-07-04 17:17:59
- Откуда: Ukraine,Kiev
- Контактная информация:
Re: Шейпер по pps в Freebsd
Я вот о чём подумал а разве нету ограничение пакетов на Ip адрес видь есть же на queues
загоняйте в трубу и указуйте не больше 10 бакетов на айпи адрес..
тоесть pipe устанавливаете трубу и queues загоняете в пайпы и ставте ограничение на пакеты ..помойму так..
у меня просто режит по айпишникам и например я делаю юзеру 512 килабит скорасть и небольше 10 пакетов в секунду...пакеты регулирую queues
Код: Выделить всё
weight 50 pipe 102 10 sl. 1 queues (1 buckets) droptail
тоесть pipe устанавливаете трубу и queues загоняете в пайпы и ставте ограничение на пакеты ..помойму так..
у меня просто режит по айпишникам и например я делаю юзеру 512 килабит скорасть и небольше 10 пакетов в секунду...пакеты регулирую queues
Последний раз редактировалось warzoni 2009-09-27 1:39:32, всего редактировалось 1 раз.
-
- проходил мимо
- Сообщения: 6
- Зарегистрирован: 2009-09-26 23:55:32
Re: Шейпер по pps в Freebsd
Будем надеятся, программисты подскажут, по идее надо править /usr/src/sys/netinet/ip_fw2.c, но файл не маленький
предположу, что
надо добавить в
например, перед
а структуру в ipfw.h
только в том же ipfw.h надо ж указать O_PPS: в enum ipfw_opcodes {
предположу, что
Код: Выделить всё
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 надо ж указать O_PPS: в enum ipfw_opcodes {
-
- проходил мимо
- Сообщения: 6
- Зарегистрирован: 2009-09-26 23:55:32
Re: Шейпер по pps в Freebsd
buckets hash-table-sizewarzoni писал(а):Я вот о чём подумал а разве нету ограничение пакетов на Ip адрес видь есть же на queues
weight 50 pipe 102 10 sl. 1 queues (1 buckets) droptail
загоняйте в трубу и указуйте не больше 10 бакетов на айпи адрес..
тоесть pipe устанавливаете трубу и queues загоняете в пайпы и ставте ограничение на пакеты ..помойму так..
у меня просто режит по айпишникам и например я делаю юзеру 512 килабит скорасть и небольше 10 пакетов в секунду...пакеты регулирую queues
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
......................................
-
- сержант
- Сообщения: 170
- Зарегистрирован: 2007-02-27 11:59:41
Re: Шейпер по pps в Freebsd
В связи с проблема с новым протоколом mTp возникает проблема с надобностью ограничения pps на клиентов.
Сейчас есть:
freebSD + mpd5 + PPTP
Сейчас есть:
freebSD + mpd5 + PPTP
- FreeBSP
- майор
- Сообщения: 2020
- Зарегистрирован: 2009-05-24 20:20:19
- Откуда: Москва
Re: Шейпер по pps в Freebsd
вариант: снимать с файера(ipfw) статистику по пакетам, вычислять PPS и динамически ставить шейпинг
реализовать можно как скриптом так и прогой/ при программной реализации достигается более высокая точность и понизится латентность системы
но вот такая мысль, если просто сужать пропускную способность, то где то надо хранить поступающие пакеты, причем их очередь будет нарастать...
или я просто не понимаю ижею шейпинга по ппс?
реализовать можно как скриптом так и прогой/ при программной реализации достигается более высокая точность и понизится латентность системы
но вот такая мысль, если просто сужать пропускную способность, то где то надо хранить поступающие пакеты, причем их очередь будет нарастать...
или я просто не понимаю ижею шейпинга по ппс?
Человек начинает получать первые наслаждения от знакомства с unix системами. Ему нужно помочь - дальше он сможет получать наслаждение самостоятельно ©
Ламер — не желающий самостоятельно разбираться. Не путать с новичком: ламер опасен и знает это!
Ламер — не желающий самостоятельно разбираться. Не путать с новичком: ламер опасен и знает это!
-
- сержант
- Сообщения: 170
- Зарегистрирован: 2007-02-27 11:59:41
Re: Шейпер по pps в Freebsd
сейчас только не ленивый "продает" скорость хомячкам до 100Мбит/сек... - в пределе это 205 кило-pps 64байтными пакетами. Если учесть что скорость будут только расти... на один брас будет приходить до нескольких лямов-pps, может десятка лямов-pps.FreeBSP писал(а):вариант: снимать с файера(ipfw) статистику по пакетам, вычислять PPS и динамически ставить шейпинг
реализовать можно как скриптом так и прогой/ при программной реализации достигается более высокая точность и понизится латентность системы
но вот такая мысль, если просто сужать пропускную способность, то где то надо хранить поступающие пакеты, причем их очередь будет нарастать...
или я просто не понимаю ижею шейпинга по ппс?
А теперь самое главное - на хомячках не то что заработать, а оборудование обновить сложно, а вот "торрент-качков" среди них только увеличивается...
Чем отличаются честные юрики которые платят 50%-100% от настоящей цены честного Мбит-а, от хомячков - которые платят 0,5-5% за скорость интернета?...
Желание резать количество pps и сессий - убить оверсейлинг услуг провайдера, поднять ARPU, защитить оборудование для предоставления должного качества обслуживания...
-
- сержант
- Сообщения: 170
- Зарегистрирован: 2007-02-27 11:59:41
Re: Шейпер по pps в Freebsd
В том то и дело что pps - это pps, и со скоростью оно может вообще не коррелироваться, pps-ов может быть много... Если ограничивать скорость pps-ы не ограничиваютсяFreeBSP писал(а):вариант: снимать с файера(ipfw) статистику по пакетам, вычислять PPS и динамически ставить шейпинг
реализовать можно как скриптом так и прогой/ при программной реализации достигается более высокая точность и понизится латентность системы
-
- мл. сержант
- Сообщения: 102
- Зарегистрирован: 2008-07-30 13:43:00
- Откуда: Киев
- Контактная информация:
Re: Шейпер по pps в Freebsd
попытаюсь оживить эту тему. кто-то решил вопрос лимитирования пакетов/сек на фре?
-
- проходил мимо
Re: Шейпер по pps в Freebsd
Лимитировать пока не приходилось, но пакеты считать пришлось.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
З.Ы. Использование bc осталось с тех пор, когда считал pps с точностью до 0,1
-
- рядовой
- Сообщения: 17
- Зарегистрирован: 2009-09-23 18:47:44
Re: Шейпер по pps в Freebsd
проходил мимо, но...
pps вроде так:
ограничить так
pps вроде так:
Код: Выделить всё
netstat -a 1
Код: Выделить всё
netstat -I em0 1
Код: Выделить всё
count udp from table(4) to any in via em0 limit src-addr 15