@CTOPMbI4

Как настроить ipfw под большие нагрузки?

FreeBSD 8.1-RELEASE
Зависает при высоких нагрузках. Когда трафик под потолок.
Лечится только ребутом, либо передергиванием вышестоящего интерфейса.
Кто сталкивался, как затюнить ipfw под большие нагрузки?
  • Вопрос задан
  • 4248 просмотров
Пригласить эксперта
Ответы на вопрос 1
RicoX
@RicoX
Ушел на http://ru.stackoverflow.com/
Если не считать того что на 8.1 IPFW глючней некуда, то примерно так:
В /etc/sysctl.conf добавить:
net.inet.ip.fw.one_pass=1               #пакеты, прошедшие пайпы вылетают из фаервола, и дальше не идут по нему
net.inet.tcp.blackhole=2                #ядро убивает tcp пакеты, приходящие в систему на непрослушиваемые порты
net.inet.udp.blackhole=1                #ядро убивает udp пакеты, приходящие в систему на непрослушиваемые порты
net.inet.icmp.drop_redirect=1           #не обращаем внимания на icmp redirect
net.inet.icmp.log_redirect=0            #(N) и не логируем их
net.inet.icmp.maskrepl=0                #не отдавать по icmp маску своей подсети
net.inet.icmp.icmplim=100
net.inet.icmp.bmcastecho=0              #(N) защита от SMURF атак
net.inet.ip.redirect=0                  #(N) не реагируем на icmp redirect
net.inet.ip.sourceroute=0               #(N) отключение маршрутизации от источника
net.inet.ip.accept_sourceroute=0        #(N) старый и бесполезный механизм
net.inet.ip.ttl=226                     #(N)почему бы не поставить ttl побольше было 64 ;)
net.inet.tcp.drop_synfin=1              #(N)небольшая защита
net.inet.tcp.syncookies=1               #(N)от доса
kern.ipc.somaxconn=32768                #(N)увеличиваем размер очереди для сокетов
kern.maxfiles=204800                    #(N)увеличиваем число открытых файловых дескрипторов
kern.maxfilesperproc=200000             #(N)кол-во ф.д. на каждоый процесс
kern.ipc.nmbclusters=524288             #(N)увеличиваем число сетевых буферов
kern.ipc.maxsockbuf=83886080            #(N)
kern.random.sys.harvest.ethernet=0      #(N)не использовать трафик и прерывания
kern.random.sys.harvest.interrupt=0     #(N)как источник энтропии для random'a
net.inet.ip.intr_queue_maxlen=10240     #(N)размер очереди ip-пакетов
net.route.netisr_maxqlen=4096


Если используете еще и dummynet, то
net.inet.ip.dummynet.io_fast=1          #заставляет dummynet работать побыстрее
net.inet.ip.dummynet.max_chain_len=2048 #(N)
net.inet.ip.dummynet.hash_size=65535    #(N)Было 256
net.inet.ip.dummynet.pipe_slot_limit=2048 #


Дальше в зависимости от сетевых, для em
dev.em.0.rx_int_delay=200
dev.em.0.tx_int_delay=200
dev.em.0.rx_abs_int_delay=4000
dev.em.0.tx_abs_int_delay=4000
dev.em.0.rx_processing_limit=4096

cat /boot/loader.conf
hw.em.rxd=4096
hw.em.txd=4096
hw.em.max_interrupt_rate=32000

для igb
dev.igb.0.rx_processing_limit=4096

Ядро соберите с HZ побольше.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы