forum.bitel.ru
http://forum.bitel.ru/

Две активных сессии вместо одной [6.0]
http://forum.bitel.ru/viewtopic.php?f=44&t=10160
Страница 1 из 1

Автор:  vkulakov [ 09 фев 2015, 16:07 ]
Заголовок сообщения:  Две активных сессии вместо одной [6.0]

Сейчас в биллинге для сервиса установлено ограничение в одну сессию, но некоторые абоненты умудряются поднять сразу две сессии.

Access-Request для этих сессий приходит в одно и тоже время, поэтому, как я подозреваю, при приходе Access-Request от второй сессии первой ещё не существует, поэтому он создаёт сразу две сессии.

Проблема, собственно, в том, что биллинг не убивает вторую сессию и они так и живут длительно время. Судя по логам такие парные сессии могут жить до полутора часов.

Какой параметр покрутить, чтобы сократить время жизни таких сессий до нескольких секунд, например?

Автор:  Amir [ 09 фев 2015, 17:26 ]
Заголовок сообщения:  Re: Две активных сессии вместо одной [6.0]

У обоих сессий при этом состояние "подключено"?

Автор:  vkulakov [ 09 фев 2015, 17:44 ]
Заголовок сообщения:  Re: Две активных сессии вместо одной [6.0]

Да, активна и подключено. Логин, реалм, мак, идентификатор, время начала - всё совпадает. Отличаются устройство (как повезёт), IP-адрес и время последней активности.

Автор:  Amir [ 09 фев 2015, 17:50 ]
Заголовок сообщения:  Re: Две активных сессии вместо одной [6.0]

В выводе access.sh conlist есть обе сессии?
В логе InetAccess ошибок нет?
authorization.sessionCountCheck в конфигурации модуля не указано?

Автор:  vkulakov [ 09 фев 2015, 18:16 ]
Заголовок сообщения:  Re: Две активных сессии вместо одной [6.0]

В выводе "access.sh conlist" есть обе сессии.
В логе только классические "Connection not found with id".
В конфигурации authorization.sessionCountCheck нету, т. к. я не знаю, что это такое и в документации такого нет.

Автор:  Amir [ 09 фев 2015, 18:23 ]
Заголовок сообщения:  Re: Две активных сессии вместо одной [6.0]

А сколько активных сессий максимум, примерно?

Автор:  vkulakov [ 09 фев 2015, 18:33 ]
Заголовок сообщения:  Re: Две активных сессии вместо одной [6.0]

У абонентов сейчас максимум две одинаковые сессии. Но никто не мешает им настроить роутер так, чтобы было больше сессий.

Автор:  Amir [ 09 фев 2015, 18:37 ]
Заголовок сообщения:  Re: Две активных сессии вместо одной [6.0]

Я имел ввиду всего сессий в мониторе текущих.

Автор:  vkulakov [ 09 фев 2015, 19:30 ]
Заголовок сообщения:  Re: Две активных сессии вместо одной [6.0]

Много, больше ? тыс.

Автор:  Amir [ 09 фев 2015, 19:50 ]
Заголовок сообщения:  Re: Две активных сессии вместо одной [6.0]

Похоже причина в том, что поток проверки на превышение кол-ва отрабатывает очень редко.

Но на всякий случай посмотрите также, есть ли в логах InetAccess строчки:
SessionCountManager - Session count 2>1. Send connection state modify event.
Перед этой строчкой должен быть вывод сессий. Желательно проверить, что одна из них примерно в это же время была сброшена.

Автор:  vkulakov [ 09 фев 2015, 20:06 ]
Заголовок сообщения:  Re: Две активных сессии вместо одной [6.0]

В логах такие строчки присутствуют. Вот времена появления этих строчек в последнем логе:
Код:
02-09/15:10:27
02-09/15:21:07
02-09/15:23:47
02-09/15:25:23
02-09/15:40:51
02-09/15:53:39
02-09/16:49:07

Соответствующие сессии имеют продолжительность 50 мин, 1 час, 1 час 30 мин (посмотрел всего три).

После этих строк вторая сессия реально отключается. Но после отключения второй сессии приходит Acces-Request, у которого в логах
Код:
Alive session count 2>1
Close duplicate session method 2

и первая сессия тоже закрывается. После отключения первой сессии приходит Acces-Request и убивает вторую, но уже новую сессию. Так они друг-друга убивают, пока одновременно не создаются две сессии, которые почему-то живут больше часа.

Автор:  vkulakov [ 09 фев 2015, 20:09 ]
Заголовок сообщения:  Re: Две активных сессии вместо одной [6.0]

Кстати, в логах нашёл двойные сессии, которые жили 20 часов.

Автор:  Amir [ 09 фев 2015, 21:20 ]
Заголовок сообщения:  Re: Две активных сессии вместо одной [6.0]

Что указано в radius.connection.checkDuplicate?
calling-station-id (с номера) у этих сессий разный?

Автор:  vkulakov [ 10 фев 2015, 12:05 ]
Заголовок сообщения:  Re: Две активных сессии вместо одной [6.0]

Код:
radius.connection.checkDuplicate=2

calling-station-id, естественно, одинаковый. К сессиям, где он разный, и вопросов нет.

Автор:  Amir [ 10 фев 2015, 15:39 ]
Заголовок сообщения:  Re: Две активных сессии вместо одной [6.0]

Попробуйте переключить на новую проверку кол-ва сессий.

Для этого в конфигурации модуля нужно указать
Код:
authorization.sessionCountCheck=2
А также переместить параметр accounting.deviceTypeIds из inet-access.xml в конфигурацию модуля. Т.е. строчку в inet-access.xml <param name="accounting.deviceTypeIds" value=""/> закомментировать, а значение прописать в конфигурации модуля (это мы рекомендуем делать и в других случаях).

В конфигурации корневого устройства, где прописаны accounting.worker.1.... добавить еще один:
Код:
accounting.worker.4.thread.count=1
accounting.worker.4.sessionCount.tracking.1.delay=20
accounting.worker.4.sessionCount.tracking.1.batchSize=2000


И перезапустить InetAccess и InetAccounting.
Судя по истории все необходимые изменения уже есть в вашем билде.


Что делает authorization.sessionCountCheck=2? Он меняет логику проверки на кол-во сессий. Во-первых, проверка начинает работать независимо для разных типов соединений - это для схем DHCP + IP Subscription, когда у абонента сразу две сессии, одна DHCP и вторая с ASR - раньше нужно было указывать ограничение в две сессии, с этим же режимом нужно указывать ограничение в одну сессию - проверка идет отдельно по кол-ву DHCP-сессий и отдельно по кол-ву RADIUS-сессий (а в будущем - отдельно по кол-ву DHCPv6-сессий).
Во-вторых, проверка текущих активных сессий начинает работать не в InetAccess, а в InetAccounting.
В-третьих, можно указать worker и его параметры - как часто запускается проверка, сколько сервисов Inet проверяет за раз.


Это все в будущем мы хотим сделать параметрами по умолчанию или рекомендуемыми параметрами. Но логика работы внутри все же другая, поэтому после изменения стоит последить за работой биллинга.


По поводу же переподключений абонента - попробуйте указать radius.connection.checkDuplicate=5 или radius.connection.checkDuplicate=8

Автор:  vkulakov [ 10 фев 2015, 19:01 ]
Заголовок сообщения:  Re: Две активных сессии вместо одной [6.0]

И я должен всё это сделать на живом биллинге??? Шутите?

Автор:  Amir [ 10 фев 2015, 19:24 ]
Заголовок сообщения:  Re: Две активных сессии вместо одной [6.0]

Не понял, что - всё. Всего лишь написал как нужно поменять конфиги, чтобы проверяло кол-во сессий чаще. И описал подробнее что именно меняется.
Второй вариант - обновляться на последний билд, там добавили параметры для старого режима проверки кол-ва сессий
connection.sessionCountCheck.batchSize=
connection.sessionCountCheck.delay=
Третий вариант - оставить так как есть.

Автор:  vkulakov [ 10 фев 2015, 19:32 ]
Заголовок сообщения:  Re: Две активных сессии вместо одной [6.0]

Третий - лучший вариант. Скоро должны обновляться, поэтому второй тоже ничего. Первый - слишком страшно...

Автор:  vkulakov [ 08 апр 2015, 16:58 ]
Заголовок сообщения:  Re: Две активных сессии вместо одной [6.0]

Обновил биллинг до последней сборки: сессия нормально отключается, пока всё работает замечательно. Параметры
Код:
connection.sessionCountCheck.batchSize=
connection.sessionCountCheck.delay=

не задавал - настройки по-умолчанию устраивают.

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/