Автор Тема: Linux Router OS & Traffic > 500 Mbits  (Прочетена 5156 пъти)

niklaus

  • Участници
  • ***
  • Публикации: 3
  • Distribution: RedHat/CentOS/Fedora
  • Window Manager: Gnome2, MATE
  • chmod a+rwx /bin/freedom
    • Профил
Linux Router OS & Traffic > 500 Mbits
« -: 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. 

Предварително Ви Благодаря, за споделените идеи!
« Последна редакция: Dec 25, 2008, 00:16 от niklaus »
Активен

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Re: Linux Router OS & Traffic > 500 Mbits
« Отговор #1 -: Dec 24, 2008, 20:10 »
А защо мислиш че трябва да доведе до това?
Активен

"Knowledge is power" - France is Bacon

Slevin_

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

"Две неща на този свят са безкрайни - човешката глупост и вселената. За второто не съм съвсем сигурен" А. Айнщайн

Mitaka

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

savago

  • Напреднали
  • *****
  • Публикации: 84
  • Distribution: mainly OpenBSD,FreeBSD
    • Профил
Re: Linux Router OS & Traffic > 500 Mbits
« Отговор #4 -: 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 от правилата на форума. Нека не се повтаря ;)
« Последна редакция: Dec 26, 2008, 21:11 от neter »
Активен

@vankata

  • Новаци
  • *
  • Публикации: 2
    • Профил
Re: Linux Router OS & Traffic > 500 Mbits
« Отговор #5 -: Dec 27, 2008, 14:46 »
Натоварването на машината идва то големият брой пакети който обработва за секунда , тъй като всеки пакет генерира прекъсване към процесора, а не от големият трaфик.
Активен

teleport

  • Напреднали
  • *****
  • Публикации: 134
    • Профил
Re: Linux Router OS & Traffic > 500 Mbits
« Отговор #6 -: 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 трафик, но не е невъзможно.
Активен

gat3way

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

"Knowledge is power" - France is Bacon

netgraph

  • Напреднали
  • *****
  • Публикации: 34
  • Distribution: *BSD, Fedora, RHEL
  • Window Manager: Fluxbox, Mate
    • Профил
Re: Linux Router OS & Traffic > 500 Mbits
« Отговор #8 -: 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-ва в сек. и други подобни.

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

Поздрави.
« Последна редакция: Dec 28, 2008, 16:46 от GytOS »
Активен

__asm__("jmp .");

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Re: Linux Router OS & Traffic > 500 Mbits
« Отговор #9 -: Dec 29, 2008, 00:29 »
В линукс, мрежовият стек е доста добре дизайн-нат откъм smp-awareness.  Имаш N на брой ksoftirqd thread-a, всяка от тях върви на определен процесор (от 1 до N). Разбира се, винаги има разни неща за доизчистване от гледна точка на lock granularity, но положението е много по-добре, отколкото например в прехваленото OpenBSD по отношение на скалируемост. 
Активен

"Knowledge is power" - France is Bacon

netgraph

  • Напреднали
  • *****
  • Публикации: 34
  • Distribution: *BSD, Fedora, RHEL
  • Window Manager: Fluxbox, Mate
    • Профил
Re: Linux Router OS & Traffic > 500 Mbits
« Отговор #10 -: Dec 29, 2008, 03:33 »
Мдам разгледах го горе долу, само да съм сигурен, това стартира по 1 softirq тип за RX и TX per CPU ако съм разбрал правилно, което е добре. Това имах впредвид въпреки, че има доста код докато се стигне до самия poll, но все пак си е general purpose и е нормално. Доста по добре от много други OS.

Едит: Също като гледам тия ksoftirqd, които се стартират per CPU правят каквито softirq-та има регистрирани с функции, не са само за polling :)
Anyway, определено се заинтересувах и ще си поиграя
« Последна редакция: Dec 29, 2008, 04:40 от GytOS »
Активен

__asm__("jmp .");

samiboy

  • Напреднали
  • *****
  • Публикации: 66
    • Профил
Re: Linux Router OS & Traffic > 500 Mbits
« Отговор #11 -: 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.
Но все пак ако не е тайна на каква дистрибуция разчитате когато става на въпрос за такива трафици  ..
Активен

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Re: Linux Router OS & Traffic > 500 Mbits
« Отговор #12 -: Dec 29, 2008, 18:52 »
Дистрибуцията няма почти никакво значение - значение има ядрото.
Активен

"Knowledge is power" - France is Bacon

Slevin_

  • Напреднали
  • *****
  • Публикации: 182
    • Профил
Re: Linux Router OS & Traffic > 500 Mbits
« Отговор #13 -: 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 - то ползваш ли го?
Активен

"Две неща на този свят са безкрайни - човешката глупост и вселената. За второто не съм съвсем сигурен" А. Айнщайн

savago

  • Напреднали
  • *****
  • Публикации: 84
  • Distribution: mainly OpenBSD,FreeBSD
    • Профил
Re: Linux Router OS & Traffic > 500 Mbits
« Отговор #14 -: 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 имаш възможност да шейпваш по маски и вкарваш правилата в таблици,малко правила малко натоварване.
« Последна редакция: Dec 29, 2008, 23:16 от savago »
Активен

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
Linux i Traffic Control
Хардуерни и софтуерни проблеми
foxy 4 6065 Последна публикация Jun 11, 2002, 20:59
от
Router na linux
Кошче
hatlan 0 3048 Последна публикация Nov 10, 2006, 15:28
от hatlan
Linux router
Кошче
hatlan 5 3435 Последна публикация Nov 13, 2006, 18:07
от GattaNegra
Linux router
Кошче
goho50 7 3847 Последна публикация Nov 13, 2006, 14:55
от KPETEH
Linux router
Настройка на програми
vanvan 7 3274 Последна публикация Jun 28, 2007, 12:02
от diel