
Подскажите, пожалуйста, возможно ли это настроить на freebsd.
Модератор: terminus
Лимит по маске есть, но если, например, кто то будет отправлять пакеты на один айпи с частотой, как сможет его система и 100 Мбитная сеть...paradox писал(а):именно pps так и небыл рализован
хотя идеи были url
можно попробовать зарезать limit коннектов на айпишники
si__ писал(а):Столкнулся с проблемой органичения флуда из сети через шлюз на freebsd. Сервер пропускает пакетов боольше, чем выдерживает маршрутизатор провайдера. Pipe режут только байты.. а нужно именно пакеты. Вроде под iptable есть приблуды, режущие pps, но переставлять шлюз и осваивать iptabe не очень хорошая перспектива, равно как покупка каталиста за ХХХ уе, умеющего ограничить pps.
Подскажите, пожалуйста, возможно ли это настроить на freebsd.
Совершенно верно, спасибо, подскажите, пожалуйста, куда это вставить, ip_fw2.c ... ?warzoni писал(а): Здрасвуйте! если я не ошибся то расмотрите этот пример
http://lists.freebsd.org/pipermail/free ... 00074.html
К сожелению когда я нахожу овтеты, и это заключаетца в програмирвоание либо разберателстве соурцев, то я прибегаю к с пециалистам,я хочу сам видить и надеюсь,програмисты нам расжуют, куда и как вставить *),...я не сталкивался с этой проблеммой но ваш вопрос меня насторожил и хотелось бы самому увидить,реализацию данного ограничение на уровне Ipfwsi__ писал(а):Совершенно верно, спасибо, подскажите, пожалуйста, куда это вставить, ip_fw2.c ... ?warzoni писал(а): Здрасвуйте! если я не ошибся то расмотрите этот пример
http://lists.freebsd.org/pipermail/free ... 00074.html
Код: Выделить всё
weight 50 pipe 102 10 sl. 1 queues (1 buckets) droptail
Код: Выделить всё
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;
buckets hash-table-sizewarzoni писал(а):Я вот о чём подумал а разве нету ограничение пакетов на Ip адрес видь есть же на queues
weight 50 pipe 102 10 sl. 1 queues (1 buckets) droptail
загоняйте в трубу и указуйте не больше 10 бакетов на айпи адрес..
тоесть pipe устанавливаете трубу и queues загоняете в пайпы и ставте ограничение на пакеты ..помойму так..
у меня просто режит по айпишникам и например я делаю юзеру 512 килабит скорасть и небольше 10 пакетов в секунду...пакеты регулирую queues
Код: Выделить всё
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
......................................
сейчас только не ленивый "продает" скорость хомячкам до 100Мбит/сек... - в пределе это 205 кило-pps 64байтными пакетами. Если учесть что скорость будут только расти... на один брас будет приходить до нескольких лямов-pps, может десятка лямов-pps.FreeBSP писал(а):вариант: снимать с файера(ipfw) статистику по пакетам, вычислять PPS и динамически ставить шейпинг
реализовать можно как скриптом так и прогой/ при программной реализации достигается более высокая точность и понизится латентность системы
но вот такая мысль, если просто сужать пропускную способность, то где то надо хранить поступающие пакеты, причем их очередь будет нарастать...
или я просто не понимаю ижею шейпинга по ппс?
В том то и дело что pps - это pps, и со скоростью оно может вообще не коррелироваться, pps-ов может быть много... Если ограничивать скорость pps-ы не ограничиваютсяFreeBSP писал(а):вариант: снимать с файера(ipfw) статистику по пакетам, вычислять PPS и динамически ставить шейпинг
реализовать можно как скриптом так и прогой/ при программной реализации достигается более высокая точность и понизится латентность системы
Лимитировать пока не приходилось, но пакеты считать пришлось.Inzevision писал(а):попытаюсь оживить эту тему. кто-то решил вопрос лимитирования пакетов/сек на фре?
Код: Выделить всё
#!/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
Код: Выделить всё
netstat -a 1
Код: Выделить всё
netstat -I em0 1
Код: Выделить всё
count udp from table(4) to any in via em0 limit src-addr 15