dadv: (Default)
[personal profile] dadv

Балансировать входящий трафик по трём каналам с BGP, имея всего два десятка префиксов, дело не вполне тривиальное. Отчаявшись получить от ребят, управляющих биллингом, процентное потребление входящего трафика префиксами, отзеркалировал netflow-трафик (v5) на свою FreeBSD и нарисовал перловый скрипт на 110 строк, который через Net::Pcap выбирает netflow из bpfilter, через Net::NetPacket достаёт из трафика собственно netflow, через Net::Flow его парсит и считает нужные мне проценты.

На десяти мегабитах отзеркалированного netflow скрипт в пиках кушает по 90% одного из четырех ядер Xeon E5420 2.5Ghz, причём всё это время он проводит внутри Net::Flow::decode(). К счастью, пики случаются не всё время. Но ставить в постоянную работу такой CPU-hog боязно.

Update: выкинул Net::Flow и переписал скрипт на ручное декодирование netflow v5 через unpack(). Теперь в пике скрипт грузит CPU на 15% (и это ещё не чистил циклы особо).

Date: 2011-10-24 14:15 (UTC)
From: [identity profile] mtg-nvkz.livejournal.com
А с SCE никакая статистика не снимается?

Date: 2011-10-24 15:10 (UTC)
From: [identity profile] dadv.livejournal.com
Снимается. А какая разница, откуда снимать?

Date: 2011-10-24 16:34 (UTC)
From: [identity profile] mtg-nvkz.livejournal.com
Если Netflow, то никакой. А если ещё какая статистика/агрегация, то есть.

Date: 2011-10-24 14:29 (UTC)
From: [identity profile] dmarck.livejournal.com
переписать на си? взять flowtools-ng?

Date: 2011-10-25 10:53 (UTC)
From: [identity profile] dadv.livejournal.com
Просто выкинул Net::Flow, переделал на ручной unpack(). Резко полегчало (обновил пост).

Date: 2011-10-25 04:19 (UTC)
From: [identity profile] birdofluck.livejournal.com
Помню, что мониторный интерфейс, что в общем-то налагает..

Может быть, включить promisc и делать ipfw fwd в того, кто честно слушает сокет?

И да, есть еще и flowd с возможностью отдачи скушанного netflow со всех сенсоров в unix socket в своем определенном формате. Куском софтины, которая это жует (для целей предаггрегации) могу поделиться

Date: 2011-10-25 10:55 (UTC)
From: [identity profile] dadv.livejournal.com
> Помню, что мониторный интерфейс, что в общем-то налагает..

Сам по себе интерфейс в состоянии monitor способен пережевывать сотни мегабит без заметной нагрузки на CPU.

> Может быть, включить promisc и делать ipfw fwd в того, кто честно слушает сокет?

Это будет сильнее грузить, чем ifconfig monitor. А интерфейс и так в promisc.

> И да, есть еще и flowd с возможностью отдачи скушанного netflow со всех сенсоров в unix socket в своем определенном формате. Куском софтины, которая это жует (для целей предаггрегации) могу поделиться

Спасибо, у меня уже всё хорошо стало (обновил пост).

Profile

dadv: (Default)
Choose your future

July 2024

M T W T F S S
12 34567
891011121314
15161718192021
22232425262728
293031    

Tags

Style Credit

Powered by Dreamwidth Studios