Патч для ng_netflow для работы с информацией об Автономных Системах (AS)

Применим для: ng_netflow-0.2.5 под FreeBSD 4.8-4.11
Модификация для FreeBSD 7.x, 8.x

Назначение: заполнение полей "source AS" и "destination AS" в экпсортируемых netflow-записях. Файлы: patch_asnum_1, база ripe (декабрь 2006)

Как это устроено.

В описание netgraph-узла ng_netflow были добавлены новые типа сообщений (примеры):

enableasfill { enable=1 }	- включает данную функциональность
addnettoas { oct1=10, oct2=11, oct3=12, oct4=0, mask=24, as=55}    - добавляет информацию о принадлежности сети 10.11.12.0/24 к автономке 55
getasnumber { oct1=10, oct2=11, oct3=12, oct4=44}  - возвращает номер AS, к которой приписан IP 10.11.12.44
{ as=55 }

Для правильного внесения информации рекомендуется запонять модуль информацией сверху вниз - сначала /8, затем /9 и т.д.

Требования к памяти:

модифицированный узел Netgrapha типа ng_netflow при создании занимает на ~300kbyte=(255*255*(size_of(ptr)+1) byte больше (для 64 битной-архитектуры размер увеличится в 2 раза ;). Рабочий размер - ~1Mbyte (после внесения информации о всех сетях RIPE).

Оценка количества операций для получения информации об одном IP: худший случай (оказалась сеть /24 и таких сетей в сети /16 256 штук) - поиск в линейном односвязном списке из 256 элементов;

Как это использовать

Самый надежный источник нужной для работы модуля информации на данный момент - база данных RIPE. Это европейские+российские сети. Остальные RIR не дают таких баз. Полученный файл обрабатывается и приводится к виду управляющих сообщений netgraph (результат записывается в ripe_list.ng).
msg collector: addnettoas { oct1=214, oct2=0, oct3=0, oct4=0, mask=8, as=721}
msg collector: addnettoas { oct1=12, oct2=0, oct3=0, oct4=0, mask=9, as=7018}
........и т.д. затем
msg collector: enableasfill { enable=1 }  //включаем эту функциональность
ngctl -f ripe_list.ng

collelctor в данном случая - имя узла ng_netflow, с которым будем работать

Функцонал вводится в действие и доступен без пересборки "мира" и даже без перезагрузки системы - выгрузили старый модуль, скомпилировали и установили пропатченный (kldunload ng_netflow; make && make install; kldload ng_netflow), загрузили в память и готово.

E-mail:

Изменено: 27-01-2011