Jump to content

Recommended Posts

Posted (edited)

здравствуйте. посоветуйте, что покрутить для уменьшения нагрузки на "swi1: net" и увеличить производительность, а значит и размер полосы, которую он может отнатить.

 

вот конфиги:

# -- [r00] 8 marta 108 - 01
natd2_enable="YES"
natd2_alias="92.43.185.2"
natd2_network="10.72.21.0/24"
natd2_port="8702"
...
(повторяем 118 раз)
...
# -- [r30] agal 46 - 05
natd118_enable="YES"
natd118_alias="92.43.185.118"
natd118_network="10.72.217.0/24"
natd118_port="8818"

$fwcmd table 2 flush
$fwcmd table 3 flush
for nat in ${nats}; do
natd_port="$(eval echo \${${nat}_port})"
natd_alias="$(eval echo \${${nat}_alias})"
natd_network="$(eval echo \${${nat}_network})"
$fwcmd nat $natd_port config ip $natd_alias deny_in reset same_ports
natd_port1=$natd_port
$fwcmd table 2 add $natd_network $natd_port1
$fwcmd table 3 add $natd_alias $natd_port1
done
for oif in ${oiflist}; do
$fwcmd add 2000 nat tablearg all from any to table\(3\) in via ${oif}
$fwcmd add 2000 nat tablearg all from table\(2\) to any out via ${oif}
done

ещё в файерволе есть ещё около 170 всяких deny/allow и пайпы. загрузка этого роутера на 60 мегабитах около 60-65% в "sw1: net" ну и остальное по мелочи. работает он на xeon e5410, два гига памяти, гиг всегда свободен.

 

/etc/sysctl.conf:

security.jail.allow_raw_sockets=1
kern.maxfiles=40000
net.inet.ip.fw.one_pass=0
dev.em.0.rx_int_delay=1500
dev.em.0.tx_int_delay=1500
dev.em.0.rx_abs_int_delay=2000
dev.em.0.tx_abs_int_delay=2000
dev.em.1.rx_int_delay=1500
dev.em.1.tx_int_delay=1500
dev.em.1.rx_abs_int_delay=2000
dev.em.1.tx_abs_int_delay=2000
net.inet.ip.dummynet.hash_size=1024
net.inet.ip.intr_queue_maxlen=256
net.graph.maxdgram=81920
net.graph.recvspace=81920
net.inet.ip.dummynet.io_fast=1
net.isr.direct=0

если убрать net.isr.direct=0, то роутер начинает произвольно перегружаться кернел паниками, видимых причин я не обнаружил.

 

/boot/loader.conf

autoboot_delay="1"
geom_mirror_load="YES"
geom_journal_load="YES"
if_tap_load="YES"
ng_ipfw_load="YES"
ipfw_nat_load="YES"
kern.maxusers="2048"
net.graph.maxalloc=4096
kern.ipc.maxpipekva=32000000

Edited by raven428
Posted

вы будете смеяться, но с ipfw nat работает примерно в полтора раза быстрей, чем с ng_nat.

 

да, и ipfw nat и natd - это всё таки разные вещи, хоть и работают в одном месте.

Posted

может быть ещё подскажите, что нужно предпринять в ipfw, чтобы в этих сотне с лишним натов не забивались таблицы. например, чтобы было, скажем, по 200-300 записей на один серый адрес и остальное всё "забывалось"? или может быть ещё какие-то ограничения сделать?

Posted

http://forum.nag.ru/forum/index.php?showto...st&p=363863

Весь траф (более 200 Мбит/с входящего) идет через шифрованые тунели, ng_nat и ng_netflow, полинга нет, тюнинг - options KVA_PAGES=512 и sysctl net.inet.ip.fw.dyn_max=65000

похоже вы фрю затюнили досмерти :)

Posted

Несколько раз подумать над остальными 170 правилами.

По возможности распихать по таблицам, включая пайпы.

Дополнительно раскидать правила группами через skipto так, чтобы пакет на всем пути маршрутизации проходил как можно меньше правил.

 

Posted

Жуткая конфигурация.

Первое и самое главное, обновиться до стейбла, там много полезных коммитов было.

 

по остальными пунктам:

 

sysctl:

net.inet.ip.intr_queue_maxlen=256 увеличить до 4000-8000 тысяч

добавить к ней в пару

net.route.netisr_maxqlen=1024

 

добавить net.inet.ip.fastforwarding=1

 

дотюнить сетевухи:

dev.em.0.rx_processing_limit=4096

dev.em.1.rx_processing_limit=4096

 

таймеры отложенных прерываний вернуть для эксперементов в дефолт.

 

в loader.conf

hw.em.rxd=4096

hw.em.txd=4096

 

 

natd выкинуть, заменить на pfnat(работа с таблицами ограничение числа сессий) или ng_nat(больший паралелиризм при правельной настройке)

 

по поводу net.isr.direct=0

нужен крешдамп для анализа, в принципе после избавления от natd можно попробовать вернуть его в дефолт(1)

 

 

Posted
net.inet.ip.intr_queue_maxlen=256 увеличить до 4000-8000 тысяч

Пока нет дропов нет никакого смысла увеличивать. Особенно при 80Mbps нагрузки.

Posted
net.inet.ip.intr_queue_maxlen=256 увеличить до 4000-8000 тысяч

Пока нет дропов нет никакого смысла увеличивать. Особенно при 80Mbps нагрузки.

про запас, вдруг вири попрут массово :)
Posted

"таймеры отложенных прерываний вернуть для эксперементов в дефолт." - это что?

 

"natd выкинуть, заменить на pfnat". где вы увидели natd? я пробовал схему с ng_nat, и ipfw nat работает примерно в полтора раза быстрей, я это проверил на практике.

 

hw.em.rxd и hw.em.txd в sysctl нет. давно они появились?

Join the conversation

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

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.