...
При типе инициации "по сигналу" соединение может быть приостановлено, а затем закрыто при отсутствии в течение определённого времени пакетов, подтверждающих её активность (RADIUS-Update, DHCP-Request). Таймауты после последнего подобного пакета задаются в секундах переменными конфигурации устройства connection.suspend.timeout (таймаут после последнего подтверждающего пакета, после которого соединение будет считаться приостановленным) и connection.close.timeout (таймаут после последнего подтверждающего пакета, когда соеденение будет закрыто, если оно уже приостановлено). Приход подтверждающего пакета переводит соединение из приостановленного статуса в активный. Значения параметры connection.suspend.timeout и connection.close.timeout рекомендуется указывать чуть больше, чем 2 * (время между RADIUS/DHCP пакетами). При завершении соединения по сигналу Stop-пакетом (RADIUS-Stop) оно фактически завершается через количество секунд, определяемое переменной connection.finish.timeout. Это позволяет, в частности, реализовать сбор "запоздалой" информации о трафике, которая может прийти после Stop-пакета.
Предупреждение |
---|
После перезапуска Accounting для всех сессий считает время последней активности от момента стартаInetAccounting временем последней активности сессии считает время запуска InetAccounting (а не время из столбца "Активность" сессии). Это сделано для того, чтобы при возможном долгом простое Accounting InetAccounting, после его запуска он не начал завершать все сессии по таймауту. |
Для автоматических сессий (сессий по трафику) параметр connection.close.timeout определяет время в секундах после последнего поступления информации о трафике данной сессии, по прошествии которого, сессия будет завершена. Для таких сессий не рекомедуется устанавливать слишком маленькое значение connection.close.timeout. Параметр connection.auto.minDuration указывает минимальную длительность для сессии по трафику. Рекомендуемые значения для сессий по трафику:
...
Также как у сервиса, у сессии может быть состояние: подключена или отключена. Состояние "подключена" означает, что доступ открыт, клиент может нормально работать, "отключена" - используется для схем без физического отключения сессий, например, когда вместо PoD-пакета при нехватке денег на балансе отправляется CoA с запретом всех направлений, кроме сервера статистики; или при инициации сессии по трафику, когда доступом управляет коммутатор: в состоянии "отключена" тарификация сессии не производится.
Примечание |
---|
По умолчанию состояние сессии всегда "подключена". Переключить состояние сессии можно в обработчике процессора протокола при приходе update-пакета RADIUS (или же start/stop пакета сервисной сессии), в зависимости от содержимого этого пакета: request.setOption( InetRadiusProcessor.DEVICE_STATE, InetServ.STATE_ENABLE ) или request.setOption( InetRadiusProcessor.DEVICE_STATE, InetServ.STATE_DISABLE ). А также в обработчике активации сервисов, если по RADIUS-пакетам не ясно в каком состоянии сессия: для этого в connectionModify( e ) при обработке переключения доступа нужно установить e.setConnectionStateModified( true ). В стандартных обработчиках этот функционал уже реализован и требует только настройки для соответствующего обработчика - например, |
...
sa.radius.connection.stateModify=1 для CoAServiceActivator меняет состояние после получения ACK на CoA-запрос блокировки или шаблон radius.disable.pattern.attributes для CoAProtocolHandler меняет состояние по наличию или отсутствию указанного набора атрибутов, а radius.serviceName.disable для ISGProtocolHandler/SmartEdgeProtocolHandler меняет состояние в зависимости от наличия или отсутствия сервисной сессии с указанным именем. |
Для сессий в состоянии "отключена" можно назначить другие значения таймаутов после последнего RADIUS-пакета: connection.disable.suspend.timeout (по умолчанию равен значению connection.suspend.timeout) и connection.disable.close.timeout (по умолчанию равен значению connection.close.timeout), т.к. на отдельных маршрутизаторах для сессий в таком состоянии можно увеличить интервал посылки update-пакетов.
При работе с RADIUS, если по Start-пакету нельзя определить в каком состоянии началась сессия или ни в Start-пакете, ни в Update от NASа не приходит IP-адрес, в конфигурации устройства - NAS'а, или в конфигурации его типа устройства, или в одном из предков следует указать параметр connection.start.fromAccessfromAccept=1. В этом режиме при отправке Access-сервером Access-Accept в ответ на Access-Request в базу будет добавлена запись по сессии в статусе ожидание (waiting), которую считает Accounting-сервер при получении Start-пакета. По умолчанию этот режим отключен.
...