krab Posted September 9, 2005 Posted September 9, 2005 Приветствую Столкнулся с проблемой поиска железа для программного шейпера (FreeBSD 5.4). Задача шейпить 2000-4000 адресов, и пропускать без шейпинга остальной трафик (10-15Kpps, 100 мегабит). Существующие решения уже не справляются с загрузкой, дропают пакеты (2xXeon 3.06, L2 1024K). Будет ли лучше перейти на Opteron 2.4 или остаться на Интеле (2xXeon 3.6 или чем черт не шутит двухядерный P4 EE). У кого какие мысли? Или может попробовать Linux 2.6.x и TC (хотя у меня что-то сомнения на счет его производительности)? Вставить ник Quote
Nailer Posted September 9, 2005 Posted September 9, 2005 Делайте распределенную архитектуру. Другими словами - ставьте два сервера. И надежнее, и производительность удваивается.. Вставить ник Quote
Ascent77 Posted September 9, 2005 Posted September 9, 2005 krab, 1) 2000-4000 userov aktivnih(on-line)? 2) 15Kpps eto ostal'noj trafik ili ves' trafik? 3) Obchaja zagruzka kanala Kpps, Mbit/s? 4) Kakoj shiriny kanal 100Mb/s 1Gbit/s? 6) Vkljuchen li polling? Вставить ник Quote
Guest Posted September 9, 2005 Posted September 9, 2005 krab, 1) 2000-4000 userov aktivnih(on-line)? 2) 15Kpps eto ostal'noj trafik ili ves' trafik? 3) Obchaja zagruzka kanala Kpps, Mbit/s? 4) Kakoj shiriny kanal 100Mb/s 1Gbit/s? 6) Vkljuchen li polling? 1) те кого надо шейпить (это количество пайпов) 2) весь 3) 50-70Mbs 4) 100Mbs 6) Да HZ=4000 Вставить ник Quote
Guest Posted September 9, 2005 Posted September 9, 2005 Делайте распределенную архитектуру. Другими словами - ставьте два сервера. И надежнее, и производительность удваивается.. каким образом это реализовать? часть резать на одном и часть на другом? Вставить ник Quote
Nailer Posted September 9, 2005 Posted September 9, 2005 Делайте распределенную архитектуру. Другими словами - ставьте два сервера. И надежнее, и производительность удваивается.. каким образом это реализовать? часть резать на одном и часть на другом? Да. Все равно 4000 клиентов явно не в одной подсети сидят. Плюс можно взаимно зарезервировать роутеры, чтобы в случае падения одного второй мог подхватывать нагрузку. Как это делать - вопрос слишком общий, вариантов много. Вставить ник Quote
Ascent77 Posted September 9, 2005 Posted September 9, 2005 1) 2xXeon 3.06 ne mogut zagnutsja na 100Mbit/s 2) 70Mbit/s eto pri normal'nih uslovijah ne bolee 40Kpps sm. punkt 1. 3) poprobujte ispol'zovat' v pravilah tables i pipe s bitovimi maskami. Takoj potok obrabativajet 2.6Ghz Atlon XP, v top-e pokazivaja 20% zagruzki, pri etom nabor pravil ne optimizirovan po-polnoj. Nuzhno smotret' nastroiki BSD grabli 99% v nih. Вставить ник Quote
Guest Posted September 9, 2005 Posted September 9, 2005 А НАТ natd используется поди? Вставить ник Quote
Guest Posted September 9, 2005 Posted September 9, 2005 А НАТ natd используется поди? ipnat Вставить ник Quote
Guest Posted September 9, 2005 Posted September 9, 2005 1) 2xXeon 3.06 ne mogut zagnutsja na 100Mbit/s2) 70Mbit/s eto pri normal'nih uslovijah ne bolee 40Kpps sm. punkt 1. 3) poprobujte ispol'zovat' v pravilah tables i pipe s bitovimi maskami. Takoj potok obrabativajet 2.6Ghz Atlon XP, v top-e pokazivaja 20% zagruzki, pri etom nabor pravil ne optimizirovan po-polnoj. Nuzhno smotret' nastroiki BSD grabli 99% v nih. как я понимаю дело не в потоке а в количестве правил/пайпов ipfw правила оптимизированы (т.е. via in/out и прочее) привожу: $ ipfw l|wc -l 3384 $ netstat -w 1 -d input (Total) output packets errs bytes packets errs bytes colls drops 15506 0 7165757 15237 0 5565053 0 0 17476 0 8601284 16958 0 6345530 0 0 16947 0 7891496 16728 0 6033655 0 0 16031 0 7587958 15634 0 5881659 0 0 ^C $ cat /etc/sysctl.conf kern.polling.enable=1 kern.polling.user_frac=20 net.inet.ip.forwarding=1 #net.inet.ip.fastforwarding=1 #net.inet.tcp.blackhole=2 #net.inet.udp.blackhole=1 #kern.ipc.somaxconn=1024 net.inet.ip.fw.dyn_max=16384 net.inet.icmp.icmplim=50 net.inet.icmp.drop_redirect=1 net.inet.ip.redirect=0 #net.inet.icmp.log_redirect=1 #net.inet.ip.redirect=0 #net.inet.tcp.sendspace=32768 #net.inet.tcp.recvspace=32768 #net.link.ether.inet.max_age=1200 #net.inet.icmp.maskrepl=0 #kern.polling.burst_max=300 #kern.polling.poll_in_trap=1 #kern.polling.idle_poll=1 $ top last pid: 14569; load averages: 1.13, 1.07, 1.07 up 2+03:04:53 19:21:05 33 processes: 1 running, 32 sleeping CPU states: 0.9% user, 0.0% nice, 2.7% system, 27.8% interrupt, 68.6% idle Mem: 123M Active, 87M Inact, 143M Wired, 4K Cache, 111M Buf, 644M Free Swap: 1000M Total, 1000M Free PID USERNAME PRI NICE SIZE RES STATE C TIME WCPU CPU COMMAND 5069 root 20 -15 5860K 5008K kserel 3 328:09 0.00% 0.00% ipcad 5075 root 96 0 74992K 74412K select 3 23:29 0.00% 0.00% bgpd 5071 root 96 0 43388K 42680K select 3 1:21 0.00% 0.00% zebra 5073 root 96 0 2428K 1764K select 0 1:07 0.00% 0.00% ripd 5101 root 96 0 2708K 2116K select 3 0:04 0.00% 0.00% sshd 5114 root 8 0 1356K 1036K nanslp 0 0:01 0.00% 0.00% cron 4982 root 96 0 1312K 896K select 1 0:01 0.00% 0.00% syslogd 13478 madint 96 0 5296K 2364K select 0 0:00 0.00% 0.00% sshd 13480 root 8 0 3120K 2000K wait 2 0:00 0.00% 0.00% bash 14271 root 5 0 3112K 1992K ttyin 1 0:00 0.00% 0.00% bash 14269 archie 96 0 5296K 2364K select 0 0:00 0.00% 0.00% sshd 14270 archie 8 0 3080K 1960K wait 3 0:00 0.00% 0.00% bash 13479 madint 8 0 3080K 1960K wait 2 0:00 0.00% 0.00% bash 14267 root 4 0 5332K 2308K sbwait 0 0:00 0.00% 0.00% sshd 13476 root 4 0 5332K 2308K sbwait 2 0:00 0.00% 0.00% sshd 14569 root 96 0 2380K 1672K CPU0 0 0:00 0.00% 0.00% top 5164 root 5 0 1280K 932K ttyin 2 0:00 0.00% 0.00% getty 5168 root 5 0 1280K 932K ttyin 1 0:00 0.00% 0.00% getty 5165 root 5 0 1280K 932K ttyin 3 0:00 0.00% 0.00% getty 5170 root 5 0 1280K 932K ttyin 2 0:00 0.00% 0.00% getty 5166 root 5 0 1280K 932K ttyin 3 0:00 0.00% 0.00% getty 5171 root 5 0 1280K 932K ttyin 1 0:00 0.00% 0.00% getty 5169 root 5 0 1280K 932K ttyin 1 0:00 0.00% 0.00% getty 5167 root 5 0 1280K 932K ttyin 2 0:00 0.00% 0.00% getty 5152 root 110 0 1436K 1088K select 0 0:00 0.00% 0.00% inetd 244 root 20 0 1184K 576K pause 0 0:00 0.00% 0.00% adjkerntz 4962 root 115 0 516K 360K select 2 0:00 0.00% 0.00% devd $ systat -v 1 2 users Load 1.16 1.08 1.08 Sep 9 19:21 Mem:KB REAL VIRTUAL VN PAGER SWAP PAGER Tot Share Tot Share Free in out in out Act 127720 2188 157748 3048 660044 count All 359488 4448 2442480 5916 pages Interrupts Proc:r p d s w Csw Trp Sys Int Sof Flt cow 4129 total 1 31 21601 3421147729502 423 146392 wire 128 8: rtc 125532 act 13: npx 2.1%Sys 28.5%Intr 0.6%User 0.0%Nice 68.8%Idl 88864 inact 14: ata | | | | | | | | | | 4 cache 26: ahd =++++++++++++++> 660040 free 27: ahd daefr 48: em0 Namei Name-cache Dir-cache prcfr 49: em1 Calls hits % hits % react 4001 0: clk pdwake zfod pdpgs Disks da0 pass0 pass1 ofod intrn KB/t 0.00 0.00 0.00 %slo-z 113888 buf tps 0 0 0 tfree 5 dirtybuf MB/s 0.00 0.00 0.00 69985 desiredvnodes % busy 0 0 0 22791 numvnodes 28 freevnodes НО ПРИ ЭТОМ ПАКЕТЫ ДРОПАЮТСЯ (т.е. на 100 пакетов стабильно 1-2 теряются при пинге с соседней машины, что совсем ненормально) Есть какие-нибудь мысли? Вставить ник Quote
krab Posted September 9, 2005 Author Posted September 9, 2005 прошу прощения, 2 предыдущих сообщения мои Вставить ник Quote
Nailer Posted September 9, 2005 Posted September 9, 2005 krab, а что вы пингуете? Попробуйте попинговать ближайший к машине интерфейс (внутренний), внешний и удаленный узел в сети. Вставить ник Quote
krab Posted September 9, 2005 Author Posted September 9, 2005 результаты везде одни и те же, наблюдаются потери пакетов если уменьшать количество правил, потери изчезают Вставить ник Quote
Guest Posted September 9, 2005 Posted September 9, 2005 Да не в количестве правил дело, ругается ли ipfw в логах ? Вставить ник Quote
Ascent77 Posted September 9, 2005 Posted September 9, 2005 krab, budem dejstvovat' po-pogovorke luchshee odin raz uvidet' chem sto raz uslychat':) Vhodnije dannije: 1) Imejem 3(kol-vo po vkusu) tarifnih plana i sootvetstvujuschie im skorosti - ECONOMICAL 1$ - 1Mbit/s - BASE 10$ - 3Mbit/s - PROGRESSIVE 100$ - 10Mbit/s 2) Mnozhestvo klientov kotorih nuzhno posheipit' v sootvetstvii s tarifnimi planami. Chto neobhodimo: -ipfw2 -dummynet Realizacyja: #!/bin/sh ipfw="/sbin/ipfw -q" ECONOMICAL=1 BASE=2 PROGRESSIVE=3 #Zdes' zabivajem nashi 2000 klientov. #-------------TABLE ECONOMICAL---------- ${ipfw} table ${ECONOMICAL} add 10.0.0.1/32 ........ ........ #-------------TABLE BASE-------------------- ${ipfw} table ${BASE} add 10.0.1.1/32 ........ ........ #-------------TABLE PROGRESSIVE---------- ${ipfw} table ${PROGRESSIVE} add 10.0.2.1/32 ........ ........ #Zdes' ogranichivajem po skorostjam. #WORLD to ECONOMICAL ${ipfw} add pipe 1 ip from any to "table(${ECONOMICAL})" in ${ipfw} pipe 1 config mask dst-ip 0xffffffff bw 1Mbit/s #ECONOMICAL to WORLD ${ipfw} add pipe 2 ip from "table(${ECONOMICAL})" to any out ${ipfw} pipe 2 config mask src-ip 0xffffffff bw 1Mbit/s #WORLD to BASE ${ipfw} add pipe 3 ip from any to "table(${BASE})" in ${ipfw} pipe 3 config mask dst-ip 0xffffffff bw 3Mbit/s #BASE to WORLD ${ipfw} add pipe 4 ip from "table(${BASE})" to any out ${ipfw} pipe 4 config mask src-ip 0xffffffff bw 3Mbit/s #WORLD to BASE ${ipfw} add pipe 5 ip from any to "table(${PROGRESSIVE})" in ${ipfw} pipe 5 config mask dst-ip 0xffffffff bw 10Mbit/s #BASE to WORLD ${ipfw} add pipe 6 ip from "table(${PROGRESSIVE})" to any out ${ipfw} pipe 6 config mask src-ip 0xffffffff bw 10Mbit/s P.S. V tablicu mozhno dobavlat' ne tol'ko konkretnije ip no i podseti, chto escho effektivnee, naprimer ${ipfw} table ${BASE} add 10.0.1.0/24 - odnoj strochkoj zabili 254 klienta, vot takim nehitrym sposobom mozhno zamenit' 10 kilometrovye cepochki pipov. Вставить ник Quote
Ali-ajar Posted September 9, 2005 Posted September 9, 2005 load averages: 1.13 а это нормально ? затребованно 113% ресурсов проца может стоит с этой машинки вынести бгп ,нат, роутинг короче все кроме шейперов либо как уже говорили использовать 2 сервака и более Вставить ник Quote
krab Posted September 9, 2005 Author Posted September 9, 2005 Ascent77, спасибо, будем пробовать :) о результатах сообщу :) Вставить ник Quote
Ascent77 Posted September 9, 2005 Posted September 9, 2005 Mozhno chut' escho usovershenstvovat' naprimer tak 1) ext_if="fxp1" int_if="fxp0" ${ipfw} add pipe 2 ip from any to "table(${ECONOMICAL})" via ${ext_if} in ${ipfw} pipe 2 config mask dst-ip 0xffffffff bw 1Mbit/s ${ipfw} add pipe 3 ip from "table(${ECONOMICAL})" to any via ${int_if} in ${ipfw} pipe 3 config mask src-ip 0xffffffff bw 1Mbit/s, chtoby pakety ne proverjalis' 2 raza. 2) mozhno poigratsja s razmerami ocheredej na pipe, no tam zavisit ot bandwidth kotoruju nado predostavit'. 3) Nuzhno pervim postavit' pravilo razreshajuchee prohodit' malen'kim paketam, dlja togo chtoby na malih skorostjah shaper ne davil zaprosi na ustanovlenije novih sojedinenij, togda zakachki ne budut podavljat' drug druga i polzovateli smogut komfortno prosmatrivat' stranichki nesmotrja na aktivnyje zakachki, naprimer takoje ${ipfw} add pipe 1 ip from any to any iplen 48-100, ili bolee konkretnoje pravilo na pakety ustanovlenija sojedinenija. P.S. v obchem ekperementirujte, a 2x3.06 Xeon bolee chem dostatochno.:) Вставить ник Quote
Guest Posted September 9, 2005 Posted September 9, 2005 Шапка кривовата, правильнее так: #!/bin/sh ipfw="/sbin/ipfw -q" ${ipfw} -f flush ${ipfw} -f pipe flush echo all flushed И лучше dummynet привязывать к конкретному интерфейсу, зачем шейпить локальный траффик Вставить ник Quote
Ascent77 Posted September 9, 2005 Posted September 9, 2005 :) eto ne produktion, eto example, napisannij po-pamjati:), v production nabivka tablic voobshe vynesena v drugoj script + antispoof + filters + ..., na to ono i production:) Вставить ник Quote
Maris Posted June 8, 2006 Posted June 8, 2006 SHeiper zagibajetsa ;( sperva nachili pojevlatsa IP (RND) s visokim pingom ~ 1000ms posle rebura shepera vdrug vso stalo ploxa nesmatra na to chto u sheipera CPU indl 60% (mashina 2xCPU xeon 3.0GHz) shema takaja: inet ^ +++ +++ bgp +++ + +++ + + sheiper +++ + +++ + + L3 swich saberajet v kuchu /25;/24; (6k ip) +++ + IBM# ipfw l | wc -l ipfw: DEPRECATED: 'l' matched 'list' as a sub-string 118 IBM# netstat -w 1 -d input (Total) output packets errs bytes packets errs bytes colls drops 78337 0 62363070 78322 0 62211101 0 0 81391 0 64840212 81385 0 64688306 0 0 81038 0 64628723 81039 0 64492204 0 0 81047 0 64438166 81035 0 64287401 0 0 79829 0 63260906 79844 0 63117561 0 0 1) dabavitj v shemu isho adin sheiper v cepochku i raznesti zadachi 2) dabavitj v shemu isho adin sheiper paralenij sheiper i L3 swich rznesa etim nogruzku. 3) ? Вставить ник Quote
krab Posted June 13, 2006 Author Posted June 13, 2006 Maris, какие интерфейсы на роутере (em, bge)? Полгигабита через один шейпер это вообще сильно :o Ну и sysctl net.inet.ip.dummynet.hash_size тоже в студию. Вставить ник Quote
Maris Posted June 15, 2006 Posted June 15, 2006 em adna onbord , vtaraja dvux glavaja na pci-x vso begala cherez pci-x in/out raznos: "in" na pci-x "out" na onbord , trabl poka 2 dna nevijevlalsa. dummynet sluchana neispolzujet kokijeta bufera na setovkax ? "na sheipere zapustil ping, pri otkluchenija kabela ot setevoj, pisal chto nedostatoshna bufera ? " net.inet.ip.dummynet.hash_size: 64 eto znachenije pitalsa menatj, pakreine mere v online izmenenij 0, posle izmenenij nuzna zdatj kokojeto vrema ? Вставить ник Quote
krab Posted June 15, 2006 Author Posted June 15, 2006 попробуй написать в sysctl.conf net.inet.ip.dummynet.hash_size=16384 и перегазгрузиться или выполнить sysctl net.inet.ip.dummynet.hash_size=16384 с рутовыми правами и переконфигурить пайпы Вставить ник Quote
Maris Posted June 15, 2006 Posted June 15, 2006 356 raz bolshe ;) ipfw pipe xx list , stala mnoga monoga 0.0.0.8/0....... etc Kak imeno etot parametor vlejajet na rabotu dumminet ? Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.