Linux за българи: Форуми

Linux секция за напреднали => Хардуерни и софтуерни проблеми => Темата е започната от: niklaus в Dec 24, 2008, 19:00



Титла: Linux Router OS & Traffic > 500 Mbits
Публикувано от: niklaus в Dec 24, 2008, 19:00
Здравейте,
бих искал да споделя нещо, става дума за проблем с нарастване на трафика.
Имам Дебиан Рутер с трафик шееп и мак аксес, желязото е стабилно CPU 3,4GHz, Intel, RAM DDR2 4 GB, SATA 250 GB, 2xLAN GB, но когато трафика започва да нараства над > 500-550 Мбитс, започва натоварване на машината ( CPU > 85 %) ;(

Мисля е дошло време за смяна на дистрото с Slack, Gentoo или FreeBSD,
според Вас, това били довело до подбрение, тоест машината да започне да "носи" голям трафик.

p.s Коя според Вас, Linux/UNIX OS би била най-подходяща  когато става въпрос за трафик > 500-600 Mbits. 

Предварително Ви Благодаря, за споделените идеи!


Титла: Re: Linux Router OS & Traffic > 500 Mbits
Публикувано от: gat3way в Dec 24, 2008, 20:10
А защо мислиш че трябва да доведе до това?


Титла: Re: Linux Router OS & Traffic > 500 Mbits
Публикувано от: Slevin_ в Dec 25, 2008, 12:06
niklaus, защо ти идва идеята за смяна на дистрибуция.
Има много "въпросителни" в така зададения въпрос от теб.
Дай подробности за хардуера, да видим с какво точно разполагаш.
1. Дъното какво е?
2. Мрежовите адаптери какви са?


Титла: Re: Linux Router OS & Traffic > 500 Mbits
Публикувано от: Mitaka в Dec 25, 2008, 12:51
Аз лично съм правил Линукс рутери за сравнително слаб трафик (<100 мбит).
За голямо натоварване имам много добри впечатления от Mikrotik и Cisco 1700 series.
Дори мога да кажа, че Микротика не отстъпва кой знае колко на Cisco, особено като се вземе предвид и цената...


Титла: Re: Linux Router OS & Traffic > 500 Mbits
Публикувано от: savago в Dec 25, 2008, 14:13
Здравейте,
бих искал да споделя нещо, става дума за проблем с нарастване на трафика.
Имам Дебиан Рутер с трафик шееп и мак аксес, желязото е стабилно CPU 3,4GHz, Intel, RAM DDR2 4 GB, SATA 250 GB, 2xLAN GB, но когато трафика започва да нараства над > 500-550 Мбитс, започва натоварване на машината ( CPU > 85 %) ;(

Мисля е дошло време за смяна на дистрото с Slack, Gentoo или FreeBSD,
според Вас, това били довело до подбрение, тоест машината да започне да "носи" голям трафик.

p.s Коя според Вас, Linux/UNIX OS би била най-подходяща  когато става въпрос за трафик > 500-600 Mbits. 

Предварително Ви Благодаря, за споделените идеи!

За скорост ти е нужна шина, добра работа с памет и добри мрежови интерфейси. Търси отговора в AMD64 базирана машина PCI-e 4x слотове с 64-bits FreeBSD, карти с чипсети em (примерно, Intel 82546EB, supermicro ползват този чип) или други с offload поддръжка, 1-1,5 Gb/s ще бъде добре, повече да пуснеш през една машина ще е лудо :)


edit by neter: Редактирано, съгласно т.3 от правилата ($2) на форума. Нека не се повтаря ;)


Титла: Re: Linux Router OS & Traffic > 500 Mbits
Публикувано от: @vankata в Dec 27, 2008, 14:46
Натоварването на машината идва то големият брой пакети който обработва за секунда , тъй като всеки пакет генерира прекъсване към процесора, а не от големият трaфик.


Титла: Re: Linux Router OS & Traffic > 500 Mbits
Публикувано от: teleport в Dec 28, 2008, 10:16
Това с прекъсванията не е вярно за интелските карти. Ето машина която кара 600+ Mbit/s с пълна bgp таблица:

Код:
top - 11:41:16 up 267 days, 23:52,  1 user,  load average: 0.00, 0.00, 0.00
Tasks:  74 total,   1 running,  73 sleeping,   0 stopped,   0 zombie
Cpu0  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu1  :  0.0%us,  0.0%sy,  0.0%ni, 85.0%id,  0.0%wa,  4.0%hi, 11.0%si,  0.0%st
Cpu2  :  0.0%us,  0.3%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu3  :  0.0%us,  0.0%sy,  0.0%ni, 86.3%id,  0.0%wa,  3.7%hi, 10.0%si,  0.0%st
Mem:   1033664k total,   999044k used,    34620k free,   133288k buffers
Swap:  2031608k total,        0k used,  2031608k free,   639016k cached

# route -n | wc -l
270363

# sar -I 66 5 5
Linux 2.6.18-53.1.14.el5 (localhost)    12/28/2008

11:55:43 AM      INTR    intr/s
11:55:48 AM        66  14244.80
11:55:53 AM        66  13743.80
11:55:58 AM        66  14326.20
11:56:03 AM        66  14714.80

Машината не е нищо особено, supermicro X7SBI с Q6600, 2 вградени Intel 82573 на PCIe x1, iptables/tc модулите не са заредени.

Натоварването идва от iptables и tc. Обработката на всеки пакет през iptables може значително да се оптимизира, защото линейната филтрация по mac в един chain с 500 правила е изключително бавна.

TC трудно се оптимизира, особено когато се дели peer/int трафик, но не е невъзможно.


Титла: Re: Linux Router OS & Traffic > 500 Mbits
Публикувано от: gat3way в Dec 28, 2008, 12:44
Не е валидно за карти, които подържат NAPI. Последното зависи от хардуера и от драйвера. Всеки получен етернет фрейм на картата се пази в RX ring буфера й. В традиционният случай, нов фрейм ще вдигне прекъсване, IRQ handlera ще се погрижи фрейма да се изкопира от RX buffer-a в РАМ-та и да се предаде нататък към IP стека. При NAPI, това прекъсване се забранява (само ако хардуера и драйвера го подържат). Един kernel thread минава на определен интервал и обира съдържанието на RX buffer-a. Така условно вместо стотици прекъсвания, имаш само 1. Разбира се, така има известен риск при голям трафик да бъдат издропени някои пакети, но това е друга история. Почти всички гигабитови адаптери подържат това, малка част от 100-мегабитовите тоже.


Титла: Re: Linux Router OS & Traffic > 500 Mbits
Публикувано от: netgraph в Dec 28, 2008, 16:22
gat3way е прав. Това се нарича polling и е най - добрия начин при големи трафици. Обикновено той е пряко свързан с HZ (или по точно броя прекъсвания, които се генерират в сек.). Например в FreeBSD 7 се регистрира callout, който се вика през 10 подобни прекъсвания (ако са 5000 за сек. например се вика 500 пъти в сек., което не е много, тъй като аз съм писал рутер, който си издържа пакети от 5000 / sec и му остава доста процесорно време). Проблема на повечето операционни системи ("модерни"), е че  вземат примерно 1 ключалка преди да почнат да poll-ват картите и ги poll-ват линейно, като друг процес неможе да ги poll-не (заради ключалката). По принцип това може много да се оптимизира като се стартират отделни thread-ове примерно за всеки процесор и те poll-ват карти, които не са заключени (не се poll-ват в момента). Ако OS има добре написан мрежови стек, той няма да зависи от 1 ключалка на пакет, а ще се използват други техники за паралелна обработка (естествено до колкото може) на пакетите приети от тези thread-ове. За жалост поне в FreeBSD, тъй като скоро не съм хвърлял око на линукс, това не е така, за това ми се наложи да си го направя. В крайна сметка подобно нещо прекарваше 7 gbps на 1 mpps (в посока, не сумарно) на 1 quad-core, който имаше на всеки core по 50 % idle. Друго много важно нещо, за което трябва да гледаш е counter наречен missed packets това са пакети, които адаптера не е успял да вземе. Много е важно дънната ти платка да има хубава шина, тъй като например с S5000V на интел PCIe не ти е за северния мост, а е за южния, което създава много проблеми над 5 gbps. Много добро дъно за големи трафици е S5000P серията. То има 2 PCIe за северния мост (на които примерно може да се закачат 2 4 портови сървърни интел адаптера).

По принцип се говори, че в Solaris мрежовия стек вече е доста оптимизиран за МП, но никога не съм гледал дали наистина е така или пак има някоя ключалка например на poll функцията, което е достатъчно да трябва да чакаш картите да се poll-ват 1 по 1.
Доста обещаващо звучи DragonFlyBSD, което има доста оптимизиран стек за МП и може би е най - близо до истината, но има доста други недостатъци.
Честно казано скоро в Линукс не съм гледал какво са правили, но при всички положения за голям трафик poll ти е най - добрия вариант просто всичко останало опира до настройка по колко пакета да взема на poll, колко пъти да poll-ва в сек. и други подобни.

Интересна тема :)

Поздрави.


Титла: Re: Linux Router OS & Traffic > 500 Mbits
Публикувано от: gat3way в Dec 29, 2008, 00:29
В линукс, мрежовият стек е доста добре дизайн-нат откъм smp-awareness.  Имаш N на брой ksoftirqd thread-a, всяка от тях върви на определен процесор (от 1 до N). Разбира се, винаги има разни неща за доизчистване от гледна точка на lock granularity, но положението е много по-добре, отколкото например в прехваленото OpenBSD по отношение на скалируемост. 


Титла: Re: Linux Router OS & Traffic > 500 Mbits
Публикувано от: netgraph в Dec 29, 2008, 03:33
Мдам разгледах го горе долу, само да съм сигурен, това стартира по 1 softirq тип за RX и TX per CPU ако съм разбрал правилно, което е добре. Това имах впредвид въпреки, че има доста код докато се стигне до самия poll, но все пак си е general purpose и е нормално. Доста по добре от много други OS.

Едит: Също като гледам тия ksoftirqd, които се стартират per CPU правят каквито softirq-та има регистрирани с функции, не са само за polling :)
Anyway, определено се заинтересувах и ще си поиграя


Титла: Re: Linux Router OS & Traffic > 500 Mbits
Публикувано от: samiboy в Dec 29, 2008, 18:31
Тъй като не си реших проблема http://www.linux-bg.org/forum/index.php?topic=33450.0 и се оказа, че не е арп флууд се надявам да е хардуер и затова поръчах:
Supermicro X7SBE
INTEL Network Card PRO/1000 MT Dual Port Server Adapter Network Adapter (10/100/1000Base-T, 1000Mbps, Gigabit Ethernet, PCI-X), 1-pk
XEON X3220/2.4/1066/8MB/BOX

1-вия ми въпрос е като ви чета има ли някаква допълнителна оптимизизация освен, че кернела ще лоудне е1000.

2-рия Никой не споменава дистрибуция. Аз работя добре със Slackware, Debian и може да се каже с CentOS. Debian най-лесно се конфигурира пък и има невероятно много информация за него в google но съм склонен да инсталирам и друга дистрибуция стига да имам реална полза от това.
Нещото което най много товари машината е poptop a този проект най добре се подържа в Debian.
Но все пак ако не е тайна на каква дистрибуция разчитате когато става на въпрос за такива трафици  ..


Титла: Re: Linux Router OS & Traffic > 500 Mbits
Публикувано от: gat3way в Dec 29, 2008, 18:52
Дистрибуцията няма почти никакво значение - значение има ядрото.


Титла: Re: Linux Router OS & Traffic > 500 Mbits
Публикувано от: Slevin_ в Dec 29, 2008, 20:44
Тъй като не си реших проблема http://www.linux-bg.org/forum/index.php?topic=33450.0 и се оказа, че не е арп флууд се надявам да е хардуер и затова поръчах:
Supermicro X7SBE
INTEL Network Card PRO/1000 MT Dual Port Server Adapter Network Adapter (10/100/1000Base-T, 1000Mbps, Gigabit Ethernet, PCI-X), 1-pk
XEON X3220/2.4/1066/8MB/BOX

1-вия ми въпрос е като ви чета има ли някаква допълнителна оптимизизация освен, че кернела ще лоудне е1000.
irq affinity - то ползваш ли го?


Титла: Re: Linux Router OS & Traffic > 500 Mbits
Публикувано от: savago в Dec 29, 2008, 23:13
Тъй като не си реших проблема http://www.linux-bg.org/forum/index.php?topic=33450.0 и се оказа, че не е арп флууд се надявам да е хардуер и затова поръчах:
Supermicro X7SBE
INTEL Network Card PRO/1000 MT Dual Port Server Adapter Network Adapter (10/100/1000Base-T, 1000Mbps, Gigabit Ethernet, PCI-X), 1-pk
XEON X3220/2.4/1066/8MB/BOX

1-вия ми въпрос е като ви чета има ли някаква допълнителна оптимизизация освен, че кернела ще лоудне е1000.

2-рия Никой не споменава дистрибуция. Аз работя добре със Slackware, Debian и може да се каже с CentOS. Debian най-лесно се конфигурира пък и има невероятно много информация за него в google но съм склонен да инсталирам и друга дистрибуция стига да имам реална полза от това.
Нещото което най много товари машината е poptop a този проект най добре се подържа в Debian.
Но все пак ако не е тайна на каква дистрибуция разчитате когато става на въпрос за такива трафици  ..

X7SBi-LN4 като че ли е по добре,все пак това са 4 гига порта :) . Относно избора на ос,всеки ползва това което познава наи добре,лично за мен в мрежовите приложения фаворити са ми openbsd (border router,bgp,altq/qos,общ шейп) i freebsd (access servers,mass shaping ...). Би било добре да групираш приоложенията на отделни машини,примернно bgp/dns на border router-a и ppp/dhcp /shaper-a на access-a. С IPFW имаш възможност да шейпваш по маски и вкарваш правилата в таблици,малко правила малко натоварване.


Титла: Re: Linux Router OS & Traffic > 500 Mbits
Публикувано от: teleport в Dec 30, 2008, 06:16
X7SBI(-ln4) е дъно за 1U шаси, X7SBE е дъно за 2U шаси. Според Перси X7SBI не влиза в 2U, X7SBE дали влиза в 1U нямам идея.

Аз държа всичките рутери/сървъри на CentOS 5. Със Q6600 и пуснат irqbalance натоварването се разпределя така ( номерата на ядрата са условни ): 1-во e1000/ETH0, 2-ро e1000/ETH1, 3-то iptables/tc към ETH0, 4-то iptables/tc към ETH1.

Centos 5 има в ядрото mppe и инсталирането на pptpd е повече от елементарно. poptop никога не съм пробвал да пускам. Еднинственото което си компилирам допълнително е IPMARK модул за ядрото. CentOS работо изключително стабилно на всякакви supermicro дъна ( X7SBI, PDSML, PDSMI ), виж uptime в предишния пост.

Възможните допълнителни настройки можеш да видиш с "modinfo e1000 | grep parm". Параметрите и стойностите им са описани в нета. Единствената настройка която правя:

/sbin/ethtool -A eth0 rx off tx off
/sbin/ethtool -A eth1 rx off tx off

Това се налага когато интерфейса е вързан на Gbit към глупави switch-ове, особено тези базирани на realtek. Проблема е че тези switch-ове с повод и без повод генерират PAUSE FRAMES и e1000 разчитайки на информацията от switch-а трудно дига скорост над 100Mbit. С деактивирани pause frames без проблем достига 500+ Mbit/s при натоварване около 60% на 2-те ядра с iptables/tc. Вероятно и повече е възможно, но аз избягвам да има повече от /24 мрежа след рутер ( ethernet сегмент ), така че не съм си правил труд да оптимизирам повече.


Титла: Re: Linux Router OS & Traffic > 500 Mbits
Публикувано от: VladSun в Dec 30, 2008, 10:04
Единствената настройка която правя:

/sbin/ethtool -A eth0 rx off tx off
/sbin/ethtool -A eth1 rx off tx off

Уфф, това колко нерви ми скъса преди време :(