X-RaY™ Опубликовано 12 апреля, 2010 · Жалоба А знания надо собирать по крупинкам из совершенно разных мест, а в железе, той же циско миллион мануалов как и что сделать. А тюнинг и настройки freebsd для стабильной работы и хорошей производительности в роли пппое браса или роутера, тайна за 7ю печатями(вэб,фс тюнинг не в счет). Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
DemYaN Опубликовано 13 апреля, 2010 · Жалоба для начала стоило бы поставаить нормальную сетевую карту Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Vetal13 Опубликовано 13 апреля, 2010 · Жалоба Xeon X3430 @ 2.40GHz С набортными em-ами dummynet+pf_NAT+ng_netflow спокойно жует 800+320 Mb/s (in+out) И это в 1U корпусе Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
X-RaY™ Опубликовано 13 апреля, 2010 · Жалоба Киньте в меня пожалуйста кто нибуть свои изменения в ядре, sysctl.conf и loader.conf для pppoe браса, хоть будет с чего начать вникать. Заранее спасибо. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ilya Evseev Опубликовано 14 апреля, 2010 · Жалоба Киньте в меня пожалуйста кто нибуть свои изменения в ядре, sysctl.conf и loader.conf для pppoe браса, хоть будет с чего начать вникать. Заранее спасибо.PPPoE уже не использую, вот мои настройки для шейперной фермы (dummynet+ngnetflow). /boot/loader.conf ichwd_load="YES" # .. /etc/rc.conf: watchdogd_enable="YES" netgraph_load="YES" dummynet_load="YES" ng_ipfw_load="YES" ng_netflow_load="YES" kern.coredump=0 kern.hz=2000 # Intel network cards hw.em.rxd=4096 hw.em.txd=4096 hw.em.enable_msi=1 hw.em.rx_int_delay=600 hw.em.tx_int_delay=600 hw.em.rx_abs_int_delay=1000 hw.em.tx_abs_int_delay=1000 # http://lists.freebsd.org/pipermail/freebsd-net/2009-June/022227.html hw.bge.rxd=512 /etc/sysctl.conf net.inet.ip.fw.verbose=1 net.inet.ip.fw.debug=0 net.link.ether.inet.log_arp_wrong_iface=0 net.inet.ip.dummynet.io_fast=1 net.inet.ip.fastforwarding=1 net.inet.ip.redirect=0 net.inet.ip.fw.dyn_buckets=2048 # default=256 net.inet.ip.dummynet.hash_size=1024 # default=64 # Drop SYN without RST on closed ports net.inet.tcp.blackhole=2 net.inet.udp.blackhole=1 # Igor Sysoev settings for Intel network cards: # http://dadv.livejournal.com/49013.html dev.em.0.rx_int_delay=600 dev.em.0.tx_int_delay=600 dev.em.0.rx_abs_int_delay=1000 dev.em.0.tx_abs_int_delay=1000 dev.em.0.rx_processing_limit=1024 dev.em.0.rx_kthreads=1 dev.em.1.rx_int_delay=600 dev.em.1.tx_int_delay=600 dev.em.1.rx_abs_int_delay=1000 dev.em.1.tx_abs_int_delay=1000 dev.em.1.rx_processing_limit=1024 dev.em.1.rx_kthreads=1 net.inet.ip.intr_queue_maxlen=400 # Igor Sysoev patch for Broadcom NIC coalescing: # http://lists.freebsd.org/pipermail/freebsd-net/2009-June/022227.html dev.bge.0.rx_coal_ticks=500 dev.bge.0.tx_coal_ticks=10000 dev.bge.0.rx_max_coal_bds=64 dev.bge.0.tx_max_coal_bds=128 dev.bge.0.program_coal=1 dev.bge.1.rx_coal_ticks=500 dev.bge.1.tx_coal_ticks=10000 dev.bge.1.rx_max_coal_bds=64 dev.bge.1.tx_max_coal_bds=128 dev.bge.1.program_coal=1 /etc/rc.local # Workaround Intel NIC initialization problems - do it again... egrep '^dev\.em\.' /etc/sysctl.conf | while read line; do sysctl $line; done # Bind all kernel threads to CPU cores 0,1 sharing common L2-cache ps -axo pid,command | egrep '^ +[0-9]+ \[' | while read pid cmd; do cpuset -l 0,1 -p $pid; done Kernel options cpu I686_CPU # 32-bit cpu HAMMER # 64-bit options COMPAT_IA32 # 64-bit ident FREELSD #=makeoptions DEBUG=-g options ALTQ # Suppress warning messages when PF NAT is used options ALTQ_CBQ options ALTQ_RED options ALTQ_RIO options ALTQ_HFSC options ALTQ_CDNR options ALTQ_PRIQ options ALTQ_NOPCC options ALTQ_DEBUG options IPFIREWALL options IPFIREWALL_VERBOSE options IPFIREWALL_VERBOSE_LIMIT=999 options IPFIREWALL_FORWARD options IPFIREWALL_DEFAULT_TO_ACCEPT device pf # ..required for pfSync device pfsync device carp device gre Kernel patches (optional) Driver "bge" coalescing http://lists.freebsd.org/pipermail/freebsd...une/022227.html Intel "em" drivers http://people.yandex-team.ru/~wawa/ http://www.intel.com/support/network/sb/cs-006120.htm Dummynet crash http://freebsd.rambler.ru/bsdmail/freebsd-...7/msg01566.html Possible deadlock in routing code http://www.freebsd.org/cgi/query-pr.cgi?pr=130652 /etc/pf.conf nat_net="10.0.0.0/8" nat_pool="1.2.3.4" set limit { states 200000, frags 50000, src-nodes 30000 } set optimization aggressive set state-policy if-bound set block-policy return set skip on { lo0, vlan1 } binat on vlan2 from 10.20.30.41 to 1.2.3.41 binat on vlan2 from 10.20.30.42 to 1.2.3.42 # ...and so on... nat on vlan2 from $nat_net to any -> $nat_pool По умолчанию pf выключен, NAT делается на Линукс-бордере. Подсчёт трафика на внешних интерфейсах и отправка по netflow mknetflow() { test -n "$netflow_target" || return 1 iface=$1 index=$2 outrule=$3 inrule=$4 rmhook netflow: out$index rmhook netflow: iface$index $ngctl show netflow: >/dev/null 2>&1 && netflow_created=1 $ipfw add $inrule netgraph $inrule ip from any to any via $iface $ipfw add $inrule netgraph $inrule icmp from any to any via $iface if [ -z "$netflow_created" ]; then $ngctl mkpeer ipfw: netflow $inrule iface$index $ngctl name ipfw:$inrule netflow else $ngctl connect ipfw: netflow: $inrule iface$index fi $ngctl connect ipfw: netflow: $outrule out$index if [ -z "$netflow_created" ]; then $ngctl mkpeer netflow: ksocket export inet/dgram/udp $ngctl msg netflow:export connect inet/$netflow_target fi $ngctl msg netflow: "setdlt { iface=$index dlt=12 }" $ngctl msg netflow: "setifindex { iface=$index index=100$index }" } netflow_target=10.20.1.1 mknetflow vlan2 0 100 101 mknetflow vlan3 1 102 103 # ...and so on... Это не мануал для чайников, а куски из служебного регламента и svn-исходников, поэтому если что-то неясно - спрашивайте. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
X-RaY™ Опубликовано 19 апреля, 2010 · Жалоба Промучавшись недельку с нг_кар и получив в результате фигу )) подробней Думаю вернутся на думминет, а какая версия фри и мпд у кого стоит и не валится, что бы не попасться опять на "новенькое" ? Ilya Evseev огромное спасибо за информацию! Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
jab Опубликовано 20 апреля, 2010 · Жалоба 7.2-STABLE + mpd 4.4 + dummynet Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dignity Опубликовано 20 апреля, 2010 · Жалоба HP DL360 G4 2 x Xeon 3.2 Dual Core, 4GB RAM 690Mbit/sec на 500 байтных пакетах Iperf в одну сторону (правда банальный Eth0->Eth1). Делал на Vyatta. Карточки встроенные. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Jugernault Опубликовано 20 апреля, 2010 · Жалоба для начала стоило бы поставаить нормальную сетевую карту Intel 82574L вродде бы нее уродливая... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
X-RaY™ Опубликовано 21 апреля, 2010 · Жалоба Смотрю на mpd4.4 и думаю... этож какой конфиг будет и .links при 100 вланах по 100 ng ... судя по Подскажите, пожалуйста, как правильно настроить mpd4 как pppoe-сервер на 24-х vlan-ах FreeBSD 6.2-STABLE? При том что примерное количество одновременных pppoe-сессий составляет около 300, но количество одновременных сессий на каждом vlan-е неизвесто? Нашёл пример схожей задачи:default: load server1 load server2 load server3 ... pppoe_standard: set ccp yes mpp-e40 set ccp yes mpp-e128 set ccp yes mpp-stateless set pppoe service "*" set pppoe disable originate set pppoe enable incoming ... server1: new -i ng1 pppoe1 pppoe1 set ipcp ranges x.x.x.x/32 y.y.y.y/24 load pppoe_standard server2: new -i ng2 pppoe2 pppoe2 set ipcp ranges x.x.x.x/32 y.y.y.y/24 load pppoe_standard server3: new -i ng3 pppoe3 pppoe3 set ipcp ranges x.x.x.x/32 y.y.y.y/24 load pppoe_standard ... mpd.links file: pppoe1: set link type pppoe set pppoe iface vlan0 pppoe2: set link type pppoe set pppoe iface vlan1 pppoe3: set link type pppoe set pppoe iface vlan2 Но, как я понимаю, мне надо прописывать фиксированное количество ng-интерфейсов на каждый vlan? Если я буду исходить из количества, например, 50 сессий на vlan, то суммарно их должно быть 50*24 = 1200. Нормально ли это? Не вылезут ли бока у FreeBSD/mpd? Я пробовал создавать интерфейсы по типу ngAABB, где AA - номер vlan-а, а BB- "порядковый" номер клиента на vlan-е. Так интерфейсов получилось 2500 (хотя реально требуется 300), и созадавались они с минуту. Вот теперь переживаю как это будет функционировать, ведь проверить можно только в продакшене. :( В моем случае это 10000 интерфейсов ... Есть какие готовые средства автоматизации этого дела, скрипты мож какие ? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Lynx10 Опубликовано 21 апреля, 2010 · Жалоба по одной записи на влан Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
X-RaY™ Опубликовано 21 апреля, 2010 · Жалоба Значит или мне не так объяснили или я не так понял, что вполне вероятно )) Допустим,пример влан 1-100 , в каждом в пике может быть до 100 пппое сессий активных, что писать в mpd.conf , mpd.links , при пптп оно выглядит крайне просто, а тут получается надо завести в mpd.conf 10000 ng , а потом в mpd.links на каждую сотню ng определить влан ? Или можно завести как то проще? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
jab Опубликовано 21 апреля, 2010 · Жалоба Прокладку надо рихтовать. mp4 свободно держит до 8000 интерфейсов ( думаю у меня бы и 32000 заработало со временем, было бы желание ). конфиги в непакованном виде меньше пол-мега. Аптаймы почти год. ( я раз в год стараюсь проводить профилактику или апгрейд ). Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
X-RaY™ Опубликовано 22 апреля, 2010 · Жалоба Прочитав десятки веток разных форумов (больше по mpd4 pppoe в роли сервера не нашел, по mpd5 полно, но оно у меня и так есть)) в голове получилась каша и полнейшее непонимание куда вписывать вланы(и что вообще вписывать в .links), на мпд5 создал просто в mpd.conf bundle template на каждый влан и готово, а в мпд4 даже в conf.sample нету примера для pppoe сервера ( Если не затруднит, опишите или дайте пример, как правильно сделать pppoe сервер на mpd4 на много вланов(как должны выглядеть mpd.conf и mpd.links), заранее спасибо! Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ilya Evseev Опубликовано 28 июня, 2010 (изменено) · Жалоба У меня при обновлении с 7.x до 8.1-RC1 возник такой глюк: dymmynet_load="YES" в /boot/loader.conf теперь молча игнорируется. Если сделать "kldload dummynet", то он загружается и работает. Вроде бы мелочь, но неприятная. UPD. Оказывается, теперь полагается писать dummynet_enabled="YES" в /etc/rc.conf. Изменено 28 июня, 2010 пользователем Ilya Evseev Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Moby Опубликовано 17 августа, 2010 · Жалоба У меня начались такие же проблемы с bge как у инициатора темы (тоже сервер HP только G5). Когда трафик приближается к 80 М/b появляются ошибки на интерфейсе, и без ifconfig down && up никак не убираются. 15.08.10 появились изменения в драйвере http://www.freebsd.org/cgi/cvsweb.cgi/src/...ev/bge/if_bge.c Обновился, но не помогло :-((( Есть ещё варианты пока покупается и едет карта Intel :-) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Baneff Опубликовано 25 апреля, 2011 · Жалоба По быстрому переделал патчик под 8.0\9.0 может и пригодится кому. --- if_bge.c.org 2010-03-30 21:08:20.000000000 +0400 +++ if_bge.c 2010-03-30 21:10:07.000000000 +0400 @@ -483,8 +483,18 @@ DRIVER_MODULE(miibus, bge, miibus_driver, miibus_devclass, 0, 0); static int bge_allow_asf = 1; +static int bge_rxd = BGE_SSLOTS; +static int bge_rx_coal_ticks = 150; +static int bge_tx_coal_ticks = 150; +static int bge_rx_max_coal_bds = 10; +static int bge_tx_max_coal_bds = 10; TUNABLE_INT("hw.bge.allow_asf", &bge_allow_asf); +TUNABLE_INT("hw.bge.rxd", &bge_rxd); +TUNABLE_INT("hw.bge.rx_int_delay", &bge_rx_coal_ticks); +TUNABLE_INT("hw.bge.tx_int_delay", &bge_tx_coal_ticks); +TUNABLE_INT("hw.bge.rx_coal_desc", &bge_rx_max_coal_bds); +TUNABLE_INT("hw.bge.tx_coal_desc", &bge_tx_max_coal_bds); SYSCTL_NODE(_hw, OID_AUTO, bge, CTLFLAG_RD, 0, "BGE driver parameters"); SYSCTL_INT(_hw_bge, OID_AUTO, allow_asf, CTLFLAG_RD, &bge_allow_asf, 0, @@ -1027,7 +1037,7 @@ bzero(sc->bge_ldata.bge_rx_std_ring, BGE_STD_RX_RING_SZ); sc->bge_std = 0; - for (i = 0; i < BGE_SSLOTS; i++) { + for (i = 0; i < bge_rxd; i++) { if ((error = bge_newbuf_std(sc, i)) != 0) return (error); BGE_INC(sc->bge_std, BGE_STD_RX_RING_CNT); @@ -2787,10 +2797,10 @@ /* Set default tuneable values. */ sc->bge_stat_ticks = BGE_TICKS_PER_SEC; - sc->bge_rx_coal_ticks = 150; - sc->bge_tx_coal_ticks = 150; - sc->bge_rx_max_coal_bds = 10; - sc->bge_tx_max_coal_bds = 10; + sc->bge_rx_coal_ticks = bge_rx_coal_ticks; + sc->bge_tx_coal_ticks = bge_tx_coal_ticks; + sc->bge_rx_max_coal_bds = bge_rx_max_coal_bds; + sc->bge_tx_max_coal_bds = bge_tx_max_coal_bds; /* Set up ifnet structure */ ifp = sc->bge_ifp = if_alloc(IFT_ETHER);<!--c2--></div><!--ec2--> И в 8.2-STABLE и в 9.0-CURRENT изменились исходники if_bge.c, в результате чего вышеприведённый патч уже не накладывается. Я руками подправил по аналогии, но там не только номера строк поменялись, но и имя одной константы, так что я совсем не уверен в правильности своих действий ибо не специалист я в таких делах. В результате наложения нижеприведённого патча в 9.0-CURRENT amd64 ядро у меня скомпилилось, но крутилки не появились :(. Может есть у кого решение? Спасибо. --- if_bge.c.org 2011-04-25 19:10:28.000000000 +0300 +++ if_bge.c 2011-04-25 19:19:56.000000000 +0300 @@ -501,8 +501,18 @@ DRIVER_MODULE(miibus, bge, miibus_driver, miibus_devclass, 0, 0); static int bge_allow_asf = 1; +static int bge_rxd = BGE_STD_RX_RING_CNT; +static int bge_rx_coal_ticks = 150; +static int bge_tx_coal_ticks = 150; +static int bge_rx_max_coal_bds = 10; +static int bge_tx_max_coal_bds = 10; TUNABLE_INT("hw.bge.allow_asf", &bge_allow_asf); +TUNABLE_INT("hw.bge.rxd", &bge_rxd); +TUNABLE_INT("hw.bge.rx_int_delay", &bge_rx_coal_ticks); +TUNABLE_INT("hw.bge.tx_int_delay", &bge_tx_coal_ticks); +TUNABLE_INT("hw.bge.rx_coal_desc", &bge_rx_max_coal_bds); +TUNABLE_INT("hw.bge.tx_coal_desc", &bge_tx_max_coal_bds); SYSCTL_NODE(_hw, OID_AUTO, bge, CTLFLAG_RD, 0, "BGE driver parameters"); SYSCTL_INT(_hw_bge, OID_AUTO, allow_asf, CTLFLAG_RD, &bge_allow_asf, 0, @@ -1084,7 +1094,7 @@ bzero(sc->bge_ldata.bge_rx_std_ring, BGE_STD_RX_RING_SZ); sc->bge_std = 0; - for (i = 0; i < BGE_STD_RX_RING_CNT; i++) { + for (i = 0; i < bge_rxd; i++) { if ((error = bge_newbuf_std(sc, i)) != 0) return (error); BGE_INC(sc->bge_std, BGE_STD_RX_RING_CNT); @@ -3035,10 +3045,10 @@ /* Set default tuneable values. */ sc->bge_stat_ticks = BGE_TICKS_PER_SEC; - sc->bge_rx_coal_ticks = 150; - sc->bge_tx_coal_ticks = 150; - sc->bge_rx_max_coal_bds = 10; - sc->bge_tx_max_coal_bds = 10; + sc->bge_rx_coal_ticks = bge_rx_coal_ticks; + sc->bge_tx_coal_ticks = bge_tx_coal_ticks; + sc->bge_rx_max_coal_bds = bge_rx_max_coal_bds; + sc->bge_tx_max_coal_bds = bge_tx_max_coal_bds; /* Initialize checksum features to use. */ sc->bge_csum_features = BGE_CSUM_FEATURES; Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ilya Evseev Опубликовано 28 апреля, 2011 · Жалоба Я поступил проще. Т.к. значения на практике всё равно никогда через /boot/loader.conf не меняются, прописал их прямо в код bge_attach() вместо старых священных цифирей: --- if_bge.c.orig 2011-01-10 22:55:30.000000000 +0300 +++ if_bge.c.new 2011-04-28 18:27:18.000000000 +0400 @@ -3028,10 +3028,10 @@ /* Set default tuneable values. */ sc->bge_stat_ticks = BGE_TICKS_PER_SEC; - sc->bge_rx_coal_ticks = 150; - sc->bge_tx_coal_ticks = 150; - sc->bge_rx_max_coal_bds = 10; - sc->bge_tx_max_coal_bds = 10; + sc->bge_rx_coal_ticks = 500; + sc->bge_tx_coal_ticks = 10000; + sc->bge_rx_max_coal_bds = 64; + sc->bge_tx_max_coal_bds = 128; /* Initialize checksum features to use. */ sc->bge_csum_features = BGE_CSUM_FEATURES; BGE_TICKS_PER_SEC уже установлено в максимум, поэтому оставлено без изменений. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...