AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

SIP сигнализация. Поле branch

Asterisk IP PBX 7 сообщений 21.07.2011 15:11 - 05.09.2011 14:46
#1 21.07.2011 15:11

SIP сигнализация. Поле branch


Вопрос в следующем.
Заметил что в одном направлении у меня по таймауту отваливаются звонки на транзите.
Схема такая:

Пров - Основной SIPProxy - Asterisk - Абонент

Звонок идет от абонента * в направлении прова.
После изучения sip трейса нашел следующее:
Когда на стороне прова снимают трубку то идет сообщение 200 ОК на Основной SIPProxy, от него на * ...
В ответ каждый из узлов в свою очередь отдает ACK.
Так вот на стыке SIPProxy - Asterisk, АСК приходит * -> SIPProxy а дальше сообщение не передается.
Пров не дожидается АСК и после нескольких Retry отрывает связь.
Изучал сигнализацию и вот что показалось подозрительным

Quote:

U 2011/07/21 16:25:45.327063 SIPProxy:5060 -> Asterisk:5060
SIP/2.0 200 OK.
Via: SIP/2.0/UDP Asterisk_addr2:5060;branch=z9hG4bK20d70468;rport.
...


U 2011/07/21 16:25:45.328693 Asterisk:5060 -> SIPProxy:5060
ACK sip:NNNNNNNNNNNNN@SIPProxy:5060;user=phone SIP/2.0.
Via: SIP/2.0/UDP Asterisk_addr2:5060;branch=z9hG4bK5e3eef8f;rport.
Max-Forwards: 70.
...

Собственно смутил разный номер branch в ответе и подтверждении получения ответа.
Это нормально или нет? Я думаю что из-за этого SIPProxy игнорировал АСК, поскольку небыло разговора с таким бранчем.

Собственно вопрос - я заблуждаюсь или это баг Asterisk?

_________________
.
..:
#2 21.07.2011 19:16

Поправьте меня, если я не прав, но судя по RFC 3261:
Quote:
an ACK for a non-2xx response will also have the same branch ID as the INVITE whose response it acknowledges.

Другими словами, branch в ACK на ответ 200 ОК не должен совпадать с branch в самом 200 ОК (который изначально содержит branch INVITE'a)
#3 21.07.2011 22:43

Похоже да, но где искать собаку?
С аналогичными настройками (1 к 1 вся цепь, кроме прова) сигнализация нормально ретранслируется нигде не застряет.
Во что смотреть? какие поля проверять. Рылся в базе багов, там есть похожие но для старых версий 1.2, 1.4, и давно все пофикшено.

_________________
.
..:
#4 22.07.2011 04:06

Есть возможность снять дамп между Провайдером и SIPProxy ?
#5 22.07.2011 09:54

Конечно есть, что искать? от прова приходит на SIPProxy 200 ОК,
потом 200 ОК идет на *
* отвечает ACK на SIPProxy
и дальше это никуда не идет.
SIPProxy повторяет 1 раз 200 ОК, притом сразу (моментально)!
Провайдер повторяет несколько раз 200 ОК, но больше ничего не происходит.
Вот полный текст сообщений
Quote:

U 2011/07/21 16:25:45.289733 Provider:5060 -> SIPProxy:5060
SIP/2.0 200 OK.
Via: SIP/2.0/UDP SIPProxy:5060;branch=z9hG4bK-2c131100ff282810ff00001517ffff07;rport=5060.
Call-ID: 16101100d12828108000001517cecc07@SIPProxy.
From: ;tag=6a111100ff282810ff00001517ffff07.
To: ;tag=f2f63927-CC-22.
CSeq: 1 INVITE.
Allow: INVITE,ACK,OPTIONS,BYE,CANCEL,REGISTER,INFO,PRACK,SUBSCRIBE,NOTIFY,UPDATE,MESSAGE,REFER.
Contact: .
Content-Length: 163.
Content-Type: application/sdp.
.
v=0.
o=HuaweiSoftX3000 6467867 6467868 IN IP4 Provider.
s=Sip Call.
c=IN IP4 Provider.
t=0 0.
m=audio 14972 RTP/AVP 8.
a=rtpmap:8 PCMA/8000.
a=ptime:20.


U 2011/07/21 16:25:45.327063 SIPProxy:5060 -> Asterisk:5060
SIP/2.0 200 OK.
Via: SIP/2.0/UDP Asterisk_addr2:5060;branch=z9hG4bK20d70468;rport.
From: "AbnName" ;tag=as32b78017.
To: ;tag=00ff0600ff282810ff00001517ffff07.
Call-ID: 753d01636a24897d5efd5dce017614c2@Asterisk_addr2.
CSeq: 102 INVITE.
Contact: .
Server: SIPProxy
Content-Type: application/sdp.
Content-Length: 264.
.
v=0.
o=- 1311254745 1311254745 IN IP4 SIPProxy.
s=-.
c=IN IP4 SIPProxy.
t=0 0.
m=audio 24980 RTP/AVP 0 8 18 4 101.
a=rtpmap:0 PCMU/8000.
a=rtpmap:8 PCMA/8000.
a=rtpmap:18 G729/8000.
a=rtpmap:4 G723/8000.
a=rtpmap:101 telephone-event/8000.
a=fmtp:101 0-15.


U 2011/07/21 16:25:45.328693 Asterisk:5060 -> SIPPRoxy:5060
ACK sip:ToNumber@SipProxy:5060;user=phone SIP/2.0.
Via: SIP/2.0/UDP Asterisk_addr2:5060;branch=z9hG4bK5e3eef8f;rport.
Max-Forwards: 70.
From: "AbnName" ;tag=as32b78017.
To: ;tag=00ff0600ff282810ff00001517ffff07.
Contact: .
Call-ID: 753d01636a24897d5efd5dce017614c2@Asterisk_addr2.
CSeq: 102 ACK.
User-Agent: Asterisk PBX 1.6.2.12.
Content-Length: 0.
.


U 2011/07/21 16:25:45.327063 SIPProxy:5060 -> Asterisk:5060
SIP/2.0 200 OK.
Via: SIP/2.0/UDP Asterisk_addr2:5060;branch=z9hG4bK20d70468;rport.
From: "AbnName" ;tag=as32b78017.
To: ;tag=00ff0600ff282810ff00001517ffff07.
Call-ID: 753d01636a24897d5efd5dce017614c2@Asterisk_addr2.
CSeq: 102 INVITE.
Contact: .
Server: SIPProxy
Content-Type: application/sdp.
Content-Length: 264.
.
v=0.
o=- 1311254745 1311254745 IN IP4 SIPProxy.
s=-.
c=IN IP4 SIPProxy.
t=0 0.
m=audio 24980 RTP/AVP 0 8 18 4 101.
a=rtpmap:0 PCMU/8000.
a=rtpmap:8 PCMA/8000.
a=rtpmap:18 G729/8000.
a=rtpmap:4 G723/8000.
a=rtpmap:101 telephone-event/8000.
a=fmtp:101 0-15.


U 2011/07/21 16:25:45.289733 Provider:5060 -> SIPProxy:5060
SIP/2.0 200 OK.
Via: SIP/2.0/UDP SIPProxy:5060;branch=z9hG4bK-2c131100ff282810ff00001517ffff07;rport=5060.
Call-ID: 16101100d12828108000001517cecc07@SIPProxy.
From: ;tag=6a111100ff282810ff00001517ffff07.
To: ;tag=f2f63927-CC-22.
CSeq: 1 INVITE.
Allow: INVITE,ACK,OPTIONS,BYE,CANCEL,REGISTER,INFO,PRACK,SUBSCRIBE,NOTIFY,UPDATE,MESSAGE,REFER.
Contact: .
Content-Length: 163.
Content-Type: application/sdp.
.
v=0.
o=HuaweiSoftX3000 6467867 6467868 IN IP4 Provider.
s=Sip Call.
c=IN IP4 Provider.
t=0 0.
m=audio 14972 RTP/AVP 8.
a=rtpmap:8 PCMA/8000.
a=ptime:20.


U 2011/07/21 16:25:45.289733 Provider:5060 -> SIPProxy:5060
SIP/2.0 200 OK.
Via: SIP/2.0/UDP SIPProxy:5060;branch=z9hG4bK-2c131100ff282810ff00001517ffff07;rport=5060.
Call-ID: 16101100d12828108000001517cecc07@SIPProxy.
From: ;tag=6a111100ff282810ff00001517ffff07.
To: ;tag=f2f63927-CC-22.
CSeq: 1 INVITE.
Allow: INVITE,ACK,OPTIONS,BYE,CANCEL,REGISTER,INFO,PRACK,SUBSCRIBE,NOTIFY,UPDATE,MESSAGE,REFER.
Contact: .
Content-Length: 163.
Content-Type: application/sdp.
.
v=0.
o=HuaweiSoftX3000 6467867 6467868 IN IP4 Provider.
s=Sip Call.
c=IN IP4 Provider.
t=0 0.
m=audio 14972 RTP/AVP 8.
a=rtpmap:8 PCMA/8000.
a=ptime:20.

Если дело не в branch, то где?

Added after 1 hours 23 minutes:

Проблема обнаружена!
Это из-за ip_nat_sip модуля iptables на SIPProxy. Но если его отключить у меня не работает линк с другим провайдером.
Обсуждения этого зверя на форуме перечитал, что делать со всем этим - не понял Sad.

_________________
.
..:
#6 05.09.2011 13:48

Попробуйте поковырятся в настройках.
Может сделать проброс портов.
Вообще в этом случае помогает нестандартный порт на стороне провайдера.
Либо TCP/TLS.

Можем дать возможность проверить на нестандартном порту.
Посмотрите лог со стороны сервера.
Если нужно обращайтесь...

_________________
Занимаямся VoIP c 1999 года.
#7 05.09.2011 14:46

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

Если вы посмотрите в сигнализацию, то увидите, что * отдает нормальный пакет. Что ковырять?
На стороне SIPProxy включался модуль iptables для того чтобы использовать SIP nat. Когда он включен - SIPProxy ничего не делает с ответом от *.

Ваше сообщение выглядит как реклама. Или мой разум не восприимчив к советам и я прошу прощения.

_________________
.
..: