VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Realtime баг?

Проблемы Asterisk без вэб-оболочек и их решения

Модераторы: april22, Zavr2008

Ответить
Аватара пользователя
Aven
Сообщения: 798
Зарегистрирован: 28 янв 2011, 16:20

Realtime баг?

Сообщение Aven »

Для нового проекта возникла необходимость использовать dynamic realtime для SIP пиров.
Раньше я его серьезно никогда не использовал.

Настроил тестовую систему:
Assterisk 11.2-cert1
mysql+odbc
создал таблицу для пиров, добавил 2 записи.

Настройки реалтайма в Asterisk:
rtcachefriends=yes
rtsavesysname=yes


В общем случае все работает нормально. При подключении SIP-клиента идет запрос в базу и получением информации о пире. Она кэшируется и отображается в sip show peers:

Код: Выделить всё

> sip show peers
Name/username             Host                                    Dyn Forcerport ACL Port     Status      Description                      Realtime
101/101                   172.16.1.12                              D   a             5060     OK (12 ms)                                   Cached RT
102/102                   172.16.1.10                              D   a             5060     OK (13 ms)                                   Cached RT
2 sip peers [Monitored: 2 online, 0 offline Unmonitored: 0 online, 0 offline]
Было замечено, что при выполнении команды sip reload происходит очистка кэша. В некоторых ситцациях это ни к чему плохому не приводит и при звонке на отсутсвующий в кэше пир происходит его загрузка из базы, но иногда получается такое:

Код: Выделить всё

[Jul  8 08:15:43]   == Using SIP RTP CoS mark 5
[Jul  8 08:15:43]     -- Executing [102@contoso_int:1] Dial("SIP/101-00000031", "SIP/102") in new stack
[Jul  8 08:15:43] WARNING[23433][C-0000001d]: chan_sip.c:6154 create_addr: Purely numeric hostname (102), and not a peer--rejecting!
[Jul  8 08:15:43] WARNING[23433][C-0000001d]: app_dial.c:2437 dial_exec_full: Unable to create channel of type 'SIP' (cause 20 - Subscriber absent)
[Jul  8 08:15:43]   == Everyone is busy/congested at this time (1:0/0/1)
[Jul  8 08:15:43]     -- Auto fallthrough, channel 'SIP/101-00000031' status is 'CHANUNAVAIL'
Причем запрос к базе Asterisk делает, данные получает, но в кэш не помещает, ошибок не выдает.
Вот лог запросов:

Код: Выделить всё

130708  8:37:13    50 Query     SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED
                   50 Query     SELECT * FROM rt_sip_peers WHERE name = '101' AND host = 'dynamic'
                   50 Query     SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED
                   50 Query     SELECT * FROM rt_sip_peers WHERE host = '172.16.1.12' AND port = '5060' AND callbackextension = '102'
                   50 Query     SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED
                   50 Query     SELECT * FROM rt_sip_peers WHERE host = '172.16.1.12' AND port = '5060'
                   50 Query     SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED
                   50 Query     SELECT * FROM rt_sip_peers WHERE ipaddr = '172.16.1.12' AND port = '5060'
                   50 Query     SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED
                   50 Query     SELECT * FROM rt_sip_peers WHERE name = '102' AND host = 'dynamic'
                   50 Query     SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED
                   50 Query     SELECT * FROM rt_sip_peers WHERE name = '101' AND host = 'dynamic'
                   50 Query     SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED
                   50 Query     SELECT * FROM rt_sip_peers WHERE host = '172.16.1.12' AND port = '5060' AND callbackextension = '102'
                   50 Query     SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED
                   50 Query     SELECT * FROM rt_sip_peers WHERE host = '172.16.1.12' AND port = '5060'
                   50 Query     SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED
                   50 Query     SELECT * FROM rt_sip_peers WHERE ipaddr = '172.16.1.12' AND port = '5060'
                   50 Query     SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED
                   50 Query     SELECT * FROM rt_sip_peers WHERE name = '102' AND host = 'dynamic'
                   50 Query     SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED
                   50 Query     SELECT * FROM rt_sip_peers WHERE name = '102' AND host = 'dynamic'
А вот со 102 можно легко набрать 101...
А вот если принудительно стереть кэш для 102 командой sip prune, то он снова нормально подгружается из базы при необходимости.

Что делать, кто виноват?
Решения телефонии на базе Asterisk || http://it-need.ru
Vlad1983
Сообщения: 4251
Зарегистрирован: 09 авг 2011, 11:51

Re: Realtime баг?

Сообщение Vlad1983 »

50 Query SELECT * FROM rt_sip_peers WHERE host = '172.16.1.12' AND port = '5060' AND callbackextension = '102'
при этом
102/102 172.16.1.10 D a 5060 OK (13 ms) Cached RT
ЛС: @rostel
Аватара пользователя
Aven
Сообщения: 798
Зарегистрирован: 28 янв 2011, 16:20

Re: Realtime баг?

Сообщение Aven »

И что тут такого?
Видимо идет подгрузка информации о звонящем вначале.
Решения телефонии на базе Asterisk || http://it-need.ru
Аватара пользователя
Aven
Сообщения: 798
Зарегистрирован: 28 янв 2011, 16:20

Re: Realtime баг?

Сообщение Aven »

Какой-то ад твориться.
По прошествии Registration Expire в консоль упало сообщение:

Код: Выделить всё

[Jul  8 09:21:45] NOTICE[28512]: chan_sip.c:27749 handle_request_register: Registration from '"102"<sip:102@172.16.1.23>' failed for '172.16.1.10:5060' - Wrong password
И больше не регается :(
В базе данные о пире не обновляются, осталсь старая информация о подключенном пире.
Решения телефонии на базе Asterisk || http://it-need.ru
Vlad1983
Сообщения: 4251
Зарегистрирован: 09 авг 2011, 11:51

Re: Realtime баг?

Сообщение Vlad1983 »

уберите rtcachefriends
и в БД qualify в no

пусть базу читает постоянно
ЛС: @rostel
Аватара пользователя
Aven
Сообщения: 798
Зарегистрирован: 28 янв 2011, 16:20

Re: Realtime баг?

Сообщение Aven »

Не вариант. Qualify нужен для контроля клиентов за NAT.
А еще пишут, не работает MWI без кэширования....
Решения телефонии на базе Asterisk || http://it-need.ru
Vlad1983
Сообщения: 4251
Зарегистрирован: 09 авг 2011, 11:51

Re: Realtime баг?

Сообщение Vlad1983 »

тогда не использовать астериск
ЛС: @rostel
Аватара пользователя
Aven
Сообщения: 798
Зарегистрирован: 28 янв 2011, 16:20

Re: Realtime баг?

Сообщение Aven »

Не вариант.
Попробую другие версии Asterisk, ведь раньше небыло такой проблемы...
Решения телефонии на базе Asterisk || http://it-need.ru
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH