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/ |