Повторные тесты проведенные нашими специалистами преследовали цель определить числовые параметры нагрузочной способности агента, которые являются критичными для обеспечивающей аппаратуры (читай NAS - VPN сервера), после проведения оптимизации алгоритмов работы RADIUS агента и устранения узких мест его кода, выявленных в течение испытаний, проведенных в июле 2006 года на сети оператора сотовой связи с большой интенсивностью обращений к ресурсам АСР по протоколу RADIUS. См. июльские результаты тестирования, в которых определяются обсуждаемые параметры.
Нагрузочные испытания проводились на машине Intel P4 2.4Гц 512Мб RAM на объеме абонентской базы (AV) в 10000 пользователей. При этом часть пользователей имела статическую привязку ip адреса, а оставшаяся (подавляющая) часть получала адрес из пула.
В сборке 0009 значительно усовершенствованы алгоритмы работы с БД в процессе аутентификации пользователей, в частности, оптимизирован процесс выдачи ip адресов из пула. Это позволило добиться поддержки агентом до 10 000 активных сессий (CS). В реальности это означает поддержку абонентской базы до 20 000 средствами одного агента (лучше двух в режиме зеркалирования или, еще лучше, балансировки нагрузки).
Справка: популярный шлюз Сisco Systems 7301 при условии отсутствия шифрования и побочных функций, таких, как шейпинг полосы пропускания, NetFlow экспорт, и т.д. поддерживает до 2500 одновременных сессий. В действительности же до 2000 т.к. редко можно встретить реализации узла доступа без вышеуказанных функций (привет корбине телеком :).
Максимальная наблюдаемая скорость обработки пакетов аутентификации (на самом деле аутентификация + старт-экаунтинг) - 145 авторизаций в секунду (APS). Включение повышенной детализации лог-файла (3) снижает величину APS до 120.
Использование скрипта script_start, выполняемого при получении старт-экаунтинга снижает APS еще вдвое, даже если скрипт выполняет всего лишь вывод параметров в лог (здесь повышается задержка в обработке именно старт-экаунтинг пакета, не аутентификации). Необходимость в Script_start появляется, как правило, если требуются какие-то дополнительные действия по организации пользовательского доступа (например, ограничение полосы пропускания). В противном случае лучше его отключить, закомментировав соответствующую строку в конфигурации billing.conf.
Наибольшее количество ресурсов требуется для обработки эккаунтинг-стоп пакетов, где работа с БД гораздо интенсивнее (здесь наблюдалась скорость 50-55 пакетов в секунду). Таким образом, при интервале прихода эккаунтинг-пакетов в 2 минуты агент способен поддерживать в среднем до 100APS * 120S = ~10000-12000 одновременных сессий (сейчас существует искусственное ограничение в 10000).
Резюмируя испытания числовыми характеристиками параметров можно констатировать следующее. В сборке №0009 агент LANBilling RADIUS DialIn способен функционировать в следующих условиях:
- CS - не более чем 10 000
- Среднее (расчетное) значение (AVG) APS - не более чем 100
- Пиковое значение (PEAK) APS - не более чем 145
- AV = 20 000
Загрузка процессора при указанных нагрузочных параметрах колебалась в пределах 40-80% от максимальной.
АСР допускает масштабирование (размножение) решения в составе агента АСР при превышении расчетной нагрузки (величин значений CS и AVG APS).
Копирование представляет собой установку дополнительных агентов на выделенных серверах оговоренной конфигурации в рамках единой сети FastEthernet/Gigabit Ethernet (уровня 2) с серверной частью АСР (сервером БД MySQL) на не пересекающихся со смежными агентами TCP портах для процессов RADIUS Accounting и RADIUS authentication.
Сравнивая результаты испытаний проведенных летом прошлого года и нынешние, можно сделать вывод, что несмотря на то, что необходимость отслеживания состояний активных сессий - причина повышенных требований агента к аппаратуре, проведенные доработки агента позволили в сборке №0009 возложить на агент функции, как аутентификации, так и эккаунтинга (тарификации), которые до момента выхода текущей сборки должны были выполняться либо при помощи масштабирования агентов, либо применением схемы, в которой аутентификация и эккаунтинг разделены, как, например, при совместном использовании freeRADIUS и NetFlow агента.
В данном описании проведенных испытаний используются следующие термины и определения:
Абонент - пользователь системы, которому предоставляются услуга доступа в интернет по выделенному каналу.
Объем абонентской базы (AV) - количество зарегистрированных абонентов в центральном хранилище АСР. Под абонентом понимается объект "пользователь" имеющий одну учетную запись RADIUS DialUP/LL.
Сессия - продолжающийся во времени процесс доступа абонента к услуге ограниченный моментом начала соединения (в терминах протокола RADIUS START пакет) и моментом окончания соединения (RADIUS STOP пакет).
Количество одновременно поддерживаемых сессий (CS) - количество одновременно существующих сеансов связи абонентов системы
Плотность потока авторизаций (потока запросов на оказание услуги) - скорость поступления запросов на предоставление услуги или запросов на получение (внесение) информации в хранилище данных АСР. Фактически представляет из себя количество полученных/переданных пар RADIUS Request/RADIUS response пакетов в единицу времени (здесь и далее используется характеристика авторизации в секунду APS).
Все характеристики нагрузочной способности модуля RADIUS циклически связаны между собой. Величина APS влияет на параметр CS и, как следствие, на объем абонентской базы, которую практически способен обслуживать один модуль RADIUS. В свою очередь значение параметра APS определяется значением AV - количеством активных абонентов зарегистрированных в системе. Чем больше AV, тем больший поток запросов к АСР создадут абоненты при прочих равных условиях. Соответственно, чем выше APS, тем меньшее количество одновременных сессий сможет обслужить агент, который хранит массив существующих сессий в памяти и осуществляет поиск по нему алгоритмом поиска по бинарному дереву (ограничением в данном случае является производительность сервера).
(с) Сетевые решения, 2007