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

VOIP Radius 5.0 - Завершение сессий
http://forum.bitel.ru/viewtopic.php?f=6&t=4398
Страница 1 из 1

Автор:  manowaretz [ 06 авг 2010, 15:18 ]
Заголовок сообщения:  VOIP Radius 5.0 - Завершение сессий

День добрый.


Примерно в середине мая перешли с BG версии 4.6 на 5.0
Проблем не наблюдалось до прошедшей недели.


30 июля на договоре одного из клиентов наблюдаем дублированную сессию.


То-есть в базе лежат две записи в таблице log_session_7_201007 у которых
все поля, кроме первичного ключа одинаковы. Они даже ссылаются на одну и
туже запись радиус лога.


Анализ ситуации выявил следующие внешние условия : 30 июля после
совершения указанного вызова нас отправил БГ стоп пакет и
не получив респонса послал стоп пакет еще раз.

выдержка из радиус лога:


07-30/12:24:01 INFO [pool-2-thread-22] radius - ACCOUNT:
Type=ACCOUNTING_REQUEST
Attributes:
User-Name=17@industrypack.soho.primasip.ru
NAS-IP-Address=80.249.130.7
NAS-Port=0
Service-Type=14
Acct-Input-Octets=118712
Acct-Output-Octets=116189
Acct-Status-Type=2
Acct-Delay-Time=0
Acct-Session-Time=59
Acct-Input-Packets=3672
Acct-Session-Id=625d2e2f-3939-4447-abdb-ef342bf4b641-VoIP
Acct-Output-Packets=3636
NAS-Port-Type=0
Calling-Station-Id=88874959823003
Called-Station-Id=88879255062340
h323-gw-id=80.249.130.7
h323-voice-quality=0
h323-remote-address=80.249.130.14
h323-disconnect-cause=10
h323-connect-time=12:23:02.000 GMT Fri Jul 30 2010
h323-disconnect-time=12:24:01.000 GMT Fri Jul 30 2010
cisco-avpair=h323-call-id=625D2E2F 39394447 ABDBEF34 2BF4B641
cisco-avpair=h323-remote-id=80.249.130.14
cisco-avpair=h323-gw-address=80.249.130.7
cisco-avpair=xpgk-src-number-in=17
cisco-avpair=xpgk-dst-number-in=88879255062340
cisco-avpair=xpgk-src-number-out=88874959823003
cisco-avpair=xpgk-dst-number-out=88879255062340
cisco-avpair=xpgk-service-type=Call
cisco-avpair=xpgk-remote-id=MVTS-LB
cisco-avpair=xpgk-remote-type=gw
cisco-avpair=xpgk-remote-ip=80.249.130.14
cisco-avpair=xpgk-remote-domain-id=ROOT
cisco-avpair=xpgk-owner-id=17
cisco-avpair=xpgk-owner-type=user
cisco-avpair=xpgk-owner-domain-id=industrypack.soho.primasip.ru
h323-conf-id=05E2CC06 024E45EC 954AFE96 1481C7C7
h323-setup-time=12:22:43.000 GMT Fri Jul 30 2010

h323-incoming-connection-ID=2665007078-1936607512-2517087274-2674700746
h323-call-origin=originate
h323-call-type=VoIP



07-30/12:24:04 INFO [pool-2-thread-23] radius - ACCOUNT:
Type=ACCOUNTING_REQUEST
Attributes:
User-Name=17@industrypack.soho.primasip.ru
NAS-IP-Address=80.249.130.7
NAS-Port=0
Service-Type=14
Acct-Input-Octets=118712
Acct-Output-Octets=116189
Acct-Status-Type=2
Acct-Delay-Time=0
Acct-Session-Time=59
Acct-Input-Packets=3672
Acct-Session-Id=625d2e2f-3939-4447-abdb-ef342bf4b641-VoIP
Acct-Output-Packets=3636
NAS-Port-Type=0
Calling-Station-Id=88874959823003
Called-Station-Id=88879255062340
h323-gw-id=80.249.130.7
h323-voice-quality=0
h323-remote-address=80.249.130.14
h323-disconnect-cause=10
h323-connect-time=12:23:02.000 GMT Fri Jul 30 2010
h323-disconnect-time=12:24:01.000 GMT Fri Jul 30 2010
cisco-avpair=h323-call-id=625D2E2F 39394447 ABDBEF34 2BF4B641
cisco-avpair=h323-remote-id=80.249.130.14
cisco-avpair=h323-gw-address=80.249.130.7
cisco-avpair=xpgk-src-number-in=17
cisco-avpair=xpgk-dst-number-in=88879255062340
cisco-avpair=xpgk-src-number-out=88874959823003
cisco-avpair=xpgk-dst-number-out=88879255062340
cisco-avpair=xpgk-service-type=Call
cisco-avpair=xpgk-remote-id=MVTS-LB
cisco-avpair=xpgk-remote-type=gw
cisco-avpair=xpgk-remote-ip=80.249.130.14
cisco-avpair=xpgk-remote-domain-id=ROOT
cisco-avpair=xpgk-owner-id=17
cisco-avpair=xpgk-owner-type=user
cisco-avpair=xpgk-owner-domain-id=industrypack.soho.primasip.ru
h323-conf-id=05E2CC06 024E45EC 954AFE96 1481C7C7
h323-setup-time=12:22:43.000 GMT Fri Jul 30 2010

h323-incoming-connection-ID=2665007078-1936607512-2517087274-2674700746
h323-call-origin=originate
h323-call-type=VoIP

07-30/12:24:05 INFO [pool-2-thread-22] radius - RESPONSE:
Type=ACCOUNTING_RESPONSE
Process time stop: 3785
Attributes:

07-30/12:24:05 INFO [pool-2-thread-23] radius - RESPONSE:
Type=ACCOUNTING_RESPONSE
Process time stop: 799
Attributes:




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



дальнейшие раскопки показали что в версии 4.6 радиус модуля

в классе bitel.billing.server.processor.voiceip.VoiceIpProcessor в
методе accountingProcess

при обработке стоп пакета и обнаружении соответствующей сессии в кеше
она из кеша удаляется
else if (session.getH323ID().equals(_H323_conf_id))
{
this.log.debug("Stopping saved connection " + _H323_conf_id);

conList.removeCon(nasCon);


в версии 5.0 в том же класссе и методе при обработке стоп пакета
найденная сессия из кеша не удаляется сразу.

Из кеша она уйдет только по истечению таймаута
if ((conStart != null) &&
((now - conStart.getTimeInMillis()) / 1000L > maxTime * 2))
{
conList.removeCon(nasCon);
}



прошу поправить эту ситуацию.

Автор:  Cromeshnic [ 10 авг 2010, 12:44 ]
Заголовок сообщения:  Re: VOIP Radius 5.0 - Завершение сессий

Хех, только было хотел создать такую же тему.

1. У нас похожая ситуация: биллинг получил 3 стоп-пакета и создал по ним 3 идентичных сессии. Но, в отличие от топикстартера, каждой сессии привязалась своя запись в таблице логов радиуса.
Кроме того, странно, что в первом посте у двух пакетов одинаковый Acct-Delay-Time.
У нас у трех сессий он, соответственно, 0, 3 и 6. Т.е. это счетчик повторных передач в секундах с первой попытки, если от радиуса не приходит ответа о получении.

Версия радиуса: version 5.0 build 177 from 16.03.2010 15:35:41

2. Хотел сделать выборку таких дублей запросом:
Код:
select h323_id, count(*) cnt from log_session_12_201007 group by h323_id having cnt>1;

Но по полю h323_id нет индекса. Добавьте пожалуйста, т.к. это поле явно предназначено для поиска.

3.
manowaretz писал(а):
в версии 5.0 в том же класссе и методе при обработке стоп пакета
найденная сессия из кеша не удаляется сразу.

Из кеша она уйдет только по истечению таймаута
if ((conStart != null) &&
((now - conStart.getTimeInMillis()) / 1000L > maxTime * 2))
{
conList.removeCon(nasCon);
}



прошу поправить эту ситуацию.

Как мне тут подсказывают, сессия не удаляется сразу умышленно, на случай если некоторые accounting-пакеты запоздают и придут после stop-пакета. Так что всё в порядке. А вот проверку стоп-пакетов по "h323-conf-id" было бы неплохо сделать, чтобы избежать таких дублей.

Итого:
- не добавлять повторные сессии в log_session с тем же h323_id хотя бы в течение часа (т.к. h323_id не обязательно уникальный, афаик)
- индекс по h323_id в log_session

Автор:  Cromeshnic [ 10 авг 2010, 13:03 ]
Заголовок сообщения:  Re: VOIP Radius 5.0 - Завершение сессий

Cromeshnic писал(а):
Хотел сделать выборку таких дублей запросом:

Неправильный запрос.
Вот так хотя бы, чтоб наверняка (могут быть легальные сессии с одинаковым h323_id - когда звонок завершается внутри нашей же сети):
Код:
select h323_id, nas_id, count(*) cnt from log_session_12_201007 group by h323_id, nas_id having cnt>4;

Выдало 114 дублей для таблицы в 374665 записей. У одного из дубликатов 135 повтора.

Автор:  Администратор [ 26 май 2011, 13:26 ]
Заголовок сообщения:  Re: VOIP Radius 5.0 - Завершение сессий

Обновление выложено 06.05.2011.

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