Перейти к содержимому
Калькуляторы

Умирает FreeBSD шейпер с ipfw ...при загрузке ~40kpps на сетевуху

P.S. У меня на машинке с PF NAT, ng_netflow и ipfw для шейпинга вечером стабильно упирается в процессор (Core2Duo):

 

 

#netstat -i -I vlan3050 -dh 1

input (vlan3050) output

packets errs idrops bytes packets errs bytes colls drops

34K 0 0 17M 37K 0 33M 0 0

Настраивал прямыми руками?

33M = 256mbps. Даже dualcore с набортными броадкомами прокачает больше.

 

И как назло, из ядра убрал hwpc-интерфейс профайлера, так что и модуль не подгрузить :(

Вообще-то hwpmc.

Чрезмерное увлечение кастрацией ядра до добра никогда не доводит.

cd /usr/src/sys/modules/hwpmc

make

kldload ./hwpmc.ko

не пробовал?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вместо навешивания на lo0 айпишников лучше использовать route add -net ваша_сеть -blackhole. Если только, конечно, вы таким навешиванием не решаете для себя вопрос динамического определения nat-серверов с редистрибьюцией в OSPF.

 

andriko, а ICMP у вас так в nat заходят?

 

заходит и выходит, -blackhole тож есть

8.2-RELEASE-p3 GENERIC ipfw, ipfw.ko и ipfw_nat.ko пересобраны с NAT_BUF_LEN 32*1024

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

33M = 256mbps. Даже dualcore с набортными броадкомами прокачает больше.

 

 

Это с шейпером, без шейпера прокачивает 70kpps (600mbps).

 

 

kldload ./hwpmc.ko

 

 

не пробовал?

 

Пробовал, естественно.

 

 


Oct 25 10:23:27 Stella kernel: link_elf_obj: symbol linker_hwpmc_list_objects undefined
Oct 25 10:23:27 Stella kernel: linker_load_file: Unsupported file type

 

Ему в ядре нужно :(.

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Попробуйте ipfw nat

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Если это мне, то да, в планах.

 

ipfw бы ещё научится синхронизировать states, как pfstated...

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В посте №20 предлагается разделять серые ip на некие группы, каждая из которых будет натиться в определенный белый ip. Я так понимаю, что в ipfw nat пока нет полноценной возможности сделать nat в пул? Все таки неудобно разбивать серые адреса на группы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Отдавайте белые, по дхцп или пппХ.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вопрос про Фому, ответ про Ерёму.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Значит с учетом всех модификаций получаем такой скрипт для /24 -> /32

#Some variables
IP123="XXX.YYY.ZZZ"             < - 3 первых байта внешних адресов (99.124.65)
GRAYIP="XXX.YYY"                <- 2 первых байта серой подсети (172.16)
OUT_VLAN="vlanX"                <- Выходной интерфейс (vlan99)
NATIPFW_RULE=30000              <- Номер правила в ipfw
TABLE_NAT_IN=100                <- Номер таблицы серых подсетей
TABLE_NAT_OUT=101               <- Номер таблицы реальников

#Null0 routed NAT network
/sbin/route add -net $IP123.0/24 -blackhole

#Ipfw::NAT config with table
/sbin/ipfw table $TABLE_NAT_IN flush
/sbin/ipfw table $TABLE_NAT_OUT flush
IP4=1
SEGIP3=0
while [ $IP4 -le 254 ]
do
NATNUM=`expr $NATBASE + $IP4`
/sbin/ipfw nat $NATNUM config ip $IP123.$IP4 reset unreg_only same_ports deny_in
/sbin/ipfw table $TABLE_NAT_OUT add $IP123.$IP4 $NATNUM
/sbin/ipfw table $TABLE_NAT_IN add $GRAYIP.$SEGIP3.0/24 $NATNUM
IP4=`expr $IP4 + 1`
SEGIP3=`expr $SEGIP3 + 1`
done
/sbin/ipfw add $NATIPFW_RULE nat tablearg ip from "table($TABLE_NAT_IN)" to any out via $OUT_VLAN
/sbin/ipfw add $NATIPFW_RULE nat tablearg ip from any to "table($TABLE_NAT_OUT)" in via $OUT_VLAN

Изменено пользователем vurd

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Значит с учетом всех модификаций получаем такой скрипт для /24 -> /32

#Some variables
IP123="XXX.YYY.ZZZ"             < - 3 первых байта внешних адресов (99.124.65)
GRAYIP="XXX.YYY"                <- 2 первых байта серой подсети (172.16)
OUT_VLAN="vlanX"                <- Выходной интерфейс (vlan99)
NATIPFW_RULE=30000              <- Номер правила в ipfw
TABLE_NAT_IN=100                <- Номер таблицы серых подсетей
TABLE_NAT_OUT=101               <- Номер таблицы реальников

#Null0 routed NAT network
/sbin/route add -net $IP123.0/24 -blackhole

#Ipfw::NAT config with table
/sbin/ipfw table $TABLE_NAT_IN flush
/sbin/ipfw table $TABLE_NAT_OUT flush
IP4=1
SEGIP3=0
while [ $IP4 -le 254 ]
do
NATNUM=`expr $NATBASE + $IP4`
/sbin/ipfw nat $NATNUM config ip $IP123.$IP4 reset unreg_only same_ports deny_in
/sbin/ipfw table $TABLE_NAT_OUT add $IP123.$IP4 $NATNUM
/sbin/ipfw table $TABLE_NAT_IN add $GRAYIP.$SEGIP3.0/24 $NATNUM
IP4=`expr $IP4 + 1`
SEGIP3=`expr $SEGIP3 + 1`
done
/sbin/ipfw add $NATIPFW_RULE nat tablearg ip from "table($TABLE_NAT_IN)" to any out via $OUT_VLAN
/sbin/ipfw add $NATIPFW_RULE nat tablearg ip from any to "table($TABLE_NAT_OUT)" in via $OUT_VLAN

 

у Вас получается 172.16.0.0/24 -> 99.124.65.1 ... 172.16.254.0/24 -> 99.124.65.255

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

у Вас получается 172.16.0.0/24 -> 99.124.65.1 ... 172.16.254.0/24 -> 99.124.65.255

 

-SEGIP3=0
-/sbin/ipfw table $TABLE_NAT_IN add $GRAYIP.$SEGIP3.0/24 $NATNUM
+/sbin/ipfw table $TABLE_NAT_IN add $GRAYIP.$IP4.0/24 $NATNUM
-SEGIP3=`expr $SEGIP3 + 1`

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.