Контроль соединения с Радиус-сервером
СКАТ контролирует соединение с Радиус-сервером, пытаясь вовремя отловить момент разрыва связи и необходимости переключения на другой (резервный) Радиус. Так как это UDP-соединение, такой контроль может быть осуществен только по отсутствию ответов на запросы СКАТа. Контроль ведется только по запросам авторизации: при детектировании разрыва связи (Радиус не отвечает на Access-Request) подсистема авторизации СКАТа оповещает подсистему аккаунтинга о необходимости переключения на другой сервер. То есть авторизация является ведущей подсистемой, а аккаунтинг - ведомой (напомним, что порты для отправки запросов авторизации и аккаунтинга в Радиус-протоколе - разные, хотя сервер один).
При разрыве связи аккаунтинг не может оповестить Радиус-сервером об этом событии, так как сервер считается упавшим. Все активные (started) аккаунтинг-сессии переводятся во внутреннее состояние suspended: fastpcrf продолжает принимать данные от всех fastdpi, стартовать новые сессии, закрывать старые, - все работает так, как будто связь с Радиус-сервером есть, но никакие аккаунтинг-данные на Радиус не посылаются. Сессия в состоянии suspended ведет себя так же, как активная сессия.
При возобновлении связи с Радиус-сервером (или при переключении на другой) fastpcrf посылает на него сообщение Accounting-On
с указанием NAS-атрибутов fastpcrf (задаются в fastpcrf.conf параметрами radius_attr_nas_ip_address
и radius_attr_nas_id
), а затем для каждой suspended-сессии (а также для всех новых сессий, которые были созданы в период недоступности Радиус-сервера) посылается Acct-Start, сессия переводится в состояние started (активная).