Список форумов Asterisk Forum Asterisk Forum
The Asterisk Open Source PBX - Russian Community
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ПравилаПравила   ГруппыГруппы   ИзбранноеИзбранное    LinksСсылки   РегистрацияРегистрация 
 RSSRSS   ПрофильПрофиль   Войти и проверить личные сообщения   ВходВход 

Asterisk при отправке REFER

 
Список форумов Asterisk Forum -> Asterisk-Dev    вывод темы на печать
Предыдущая тема :: Следующая тема  
Автор Сообщение
IgorG
Модератор


Зарегистрирован:
21.11.2005
Сообщения: 1054
Откуда: Россия, Омск

Статус: Оффлайн 

СообщениеДобавлено: Ср Окт 29, 2008 11:15    Заголовок сообщения: Asterisk при отправке REFER

Есть ли вообще на форуме те, кто разбираются в работе протокола SIP?

Ситуация следующая: Asterisk выполняет переадресацию SIP вызова при уже установленной сессии. Переадресация ведёт себя достаточно интересно, вот график пакетов на астериске:

Код:

Asterisk        Server
------ REFER ------>
------ BYE -------->
<----- 401 (REFER) -----
<----- 401 (BYE) ------
------ BYE (AUTH) ------>
------ REFER (retr) ----> (6 раз)
<----- 401 (REFER) ------ (6 раз)


Я догадываюсь где здесь ошибка со стороны астериска, но не могу понять как диалог должен выглядеть в конечном итоге, чтобы эту ситуацию исправить:
1. Нельзя отправлять BYE сразу после REFER, не дождавшись завершения переадресации
2. После того как окончание сессии посредством BYE произошло, нужно прекратить попытки передачи REFER запроса

Кто может, прокомментируйте. Даже если не найдём окончательного ответа, то это поможет при обращении в sip-implementors и asterisk-dev за помощью. Спасибо.


PS. А есть ли какая-то утилита, чтобы графики SIP потоков рисовать в графическом виде и в текстовом?

_________________
OpenSUSE 11.2 / Asterisk-trunk / Celeron 1100 (512mb) / chan_lcr / Linksys / Aastra 9112i
http://igorg.ru
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора Skype Name Jabber ID
Cache
Модератор


Зарегистрирован:
12.01.2007
Сообщения: 688
Откуда: Россия. Шатура

Статус: Оффлайн 

СообщениеДобавлено: Ср Окт 29, 2008 16:19    Заголовок сообщения:

поидее должно быть так

Код:
A                      B
       Refer(1)
----------------->
      202(2)
<----------------
    NOTIFY(3)
<----------------
   200 OK (4)
------------------>
                        ------->
                               любой абонент
                       <------------
    NOTIFY(5)
<-----------------
    200 OK (6)
------------------>


Код:

REFER sip:alexander@10.10.10.242 SIP/2.0
Via: SIP/2.0/UDP 10.10.10.242;branch=z9hG4
To: <sip:alexander@10.10.10.242
Refer-To: любой URI
Contact: sip:alexander@10.10.10.242
Content-Length: 0

NOTIFY sip:anton@10.10.10.242 SIP/2.0
Via: SIP/2.0/UDP 10.10.10.242;branch=z9hG4bK9323394234
To: <sip:anton@10.10.10.242>;
From: <sip:alexander@10.10.10.242>;tag=4992881234
Call-ID: 898234234@10.10.10.242
CSeq: 1993403 NOTIFY
Max-Forwards: 70
Event: refer
Subscription-State: terminated;reason=noresource
Contact: sip:alexander@10.10.10.242
Content-Type: message/


это если по стандрату

_________________
нанотехнолигии в области Asterisk
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора GTalk ID Skype Name Jabber ID
IgorG
Модератор


Зарегистрирован:
21.11.2005
Сообщения: 1054
Откуда: Россия, Омск

Статус: Оффлайн 

СообщениеДобавлено: Ср Окт 29, 2008 17:16    Заголовок сообщения:

По стандарту оно понятно, но проблема в том что астериск может отправить BYE раньше получения какого-либо ответа на REFER. В стандарте я не нашёл ничего противоречащего такому поведению. Хочу разобраться и исправить.

Если идей нет, то буду писать в sip-implementors, результаты отпишу здесь.

PS. Насчёт построения графиков уже подсказали: BreakPoint SIP Workbench

_________________
OpenSUSE 11.2 / Asterisk-trunk / Celeron 1100 (512mb) / chan_lcr / Linksys / Aastra 9112i
http://igorg.ru
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора Skype Name Jabber ID
IgorG
Модератор


Зарегистрирован:
21.11.2005
Сообщения: 1054
Откуда: Россия, Омск

Статус: Оффлайн 

СообщениеДобавлено: Вс Ноя 02, 2008 05:39    Заголовок сообщения:

В общем в чём проблема вполне понятно:
1. В RFC5057 описано поведение в подобных случаях. В данном случае отправка BYE после REFER не завершает диалог, а только обозначает нежелание переводящей звонок стороны (Asterisk) продолжить диалог в случае неудачной переадресации.
2. Asterisk ошибочно считает что передача пакета с REFER неудалась. Это вызвано с одной стороны ошибкой в коде заставляющей игнорировать ответы на REFER, а с другой тем, что не отслеживается состояние SIP диалога.

Первое будет исправить достаточно просто, второе - не уверен. Так же второе обстоятельство мешает добавить поддержку PRACK и UPDATE запросов в Asterisk. Sad

_________________
OpenSUSE 11.2 / Asterisk-trunk / Celeron 1100 (512mb) / chan_lcr / Linksys / Aastra 9112i
http://igorg.ru
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора Skype Name Jabber ID
Список форумов Asterisk Forum -> Asterisk-Dev Ответить на тему
Страница 1 из 1

Добавить в Избранное

 
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
You cannot attach files in this forum
You cannot download files in this forum