Повышение производительности биллинговой системы

Все права защищены (c) 2001-2011 NetUP (www.netup.ru)
Перепечатка материалов разрешается только с предварительного разрешения
компании NetUP (info@netup.ru)

Обращаем ваше внимание на то, что информация в данной статье может быть не актуальной.

Повышение производительности биллинговой системы

Зачастую необходимо принимать и тарифицировать большие объемы NetFlowпотока с маршрутизаторов. Для того, чтобы пакеты не уничтожались при заполнении приемного буфера необходимо в конфигурационном файле utm5.cfg увеличить размер этого буфера:

nfbuffer_bufsize=10485760

Данная директива устанавливает размер приемного буфера равный 10 МБ. При этом при старте ядра биллинговой системы в debug.logдолжна быть указана строка об успешном увеличении приемного буфера:

?Debug : Jan 29 19:39:30 NFBuffer: Setting SO_RCVBUF to  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 Гбит/сек.