Зачастую необходимо принимать и тарифицировать большие объемы NetFlow потока с маршрутизаторов. Для того, чтобы пакеты не уничтожались при заполнении приемного буфера необходимо в конфигурационном файле utm5.cfg увеличить размер этого буфера:
nfbuffer_bufsize=10485760
Данная директива устанавливает размер приемного буфера равный 10 МБ. При этом при старте ядра биллинговой системы в debug.log должна быть указана строка об успешном увеличении приемного буфера:
?Debug : Jan 29 19:39:30 NFBuffer: Setting SO_RCVBUF to <10485760> bytes
В некоторых случаях понадобится увеличить максимально допустимый размер приемного буфера в операционной системе. Произвести данную операцию под Linux можно командой:
sysctl -w net.core.rmem_max=10485760
под FreeBSD:
kern.ipc.maxsockbuf=10485760 net.inet.udp.recvspace=10485760 net.local.dgram.recvspace=10485760 net.inet.udp.maxdgram=100000
В результате таких настроек биллинговая система сможет принимать большие объемы NetFlow пакетов. В частности не будет происходить потеря пакетов в моменты пиковых загрузок.
Для уменьшения нагрузки на CPU и уменьшения занимаемого на жестком диске места необходимо использовать новый механизм хранения детальных данных по трафику. Детальные данные представляют собой полную копию всего NetFlow потока принятого биллинговой системой. Для включения нового механизма необходимо в центре управления в разделе «Настройки» добавить опцию:
raw_storage_file=1
после добавления данного параметра необходимо произвести перезапуск ядра биллинговой системы.
При этом детальные данные будут записываться в файлы с расширением .utm. Формат файлов разработан в компании НетАП. Для дальнейшего анализа этих данных можно воспользоваться утилитой get_nf_direct. Пример использования:
/netup/utm5/bin/get_nf_direct -b /netup/utm5/db/iptraffic_raw_1138443603.utm –u
Результатом работы будет вывод данных сохраненных в файле /netup/utm5/db/iptraffic_raw_1138443603.utm.
Ядро биллинговой системы производит запись детальных данных в файл в течение 1 часа. Далее производится закрытие файла и открытие нового. После того как файл был закрыт вызывается внешняя программа /netup/utm5/bin/raw_fd_script, которой в параметрах передается путь к закрытому файлу. Данная программа производит необходимые действия – архивирование, резервное копирование и др.
Пример программы /netup/utm5/bin/raw_fd_script на языке shell:
#!/bin/sh gzip $*
В результате таких настроек биллинговая система будет оптимально использовать ресурсы CPU и дисковой подсистемы.
На стенде компании НетАП были произведены испытания производительности биллинговой системы при больших объемах статистики. Для тестирования был использован сервер следующей конфигурации:
CPU: Intel Pentium 4 частота 3.00 ГГц Оперативная память: 2 ГБ Жесткий диск: Serial ATA 250 ГБ Сетевая карта: Intel 100 Мбит/сек Операционная система: Gentoo Linux
Для создания тестового NetFlow потока использовался отдельный сервер. В качестве генератора Netflow пакетов использовалась утилита utm5_flowgen. Загрузка фиксировалась утилитой top. Для того, чтобы условия были максимально приближены к реальным, NetFlow поток на 100% содержит статистику, принадлежащую зарегистрированным в биллинговой системе тестовым абонентам. Корректность приема и тарификации контролировалась по данным отчета по трафику и данным из раздела «Дополнительно» - «Статистика».
Результаты испытаний приведены на графике.
Рисунок 1 Загрузка CPU в зависимости от интенсивности NetFlow – потока
В реальной сети, по наблюдениям сотрудников компании НетАП, в среднем полностью загруженный канал пропускной способностью 100 Мбит/сек генерирует статистику в 100 NetFlow пакетов в секунду. По расчетам, 3000 NetFlow пакетов в секунду будут соответствовать полностью загруженном каналу в 3 Гбит/сек.