Тяжела и неказиста
2011-10-24 20:11![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Балансировать входящий трафик по трём каналам с 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% (и это ещё не чистил циклы особо).
no subject
Date: 2011-10-25 10:53 (UTC)