Страница 1 из 5
Отключение через 10-20 секунд
Добавлено: 03 янв 2011, 11:55
navff
Добрый! Прошу помощи в след. вопросе:
Есть офис. В нем за NAT'ом стоит Asterisk. Asterisk умеет делать исходящие звонки через PCTEL. SIP-телефоны внутри локальной сети офиса успешно звонят друг другу и делают исходящие вызовы во внешний мир.
Есть дом. Там за NAT'ом стоит SIP-телефон, который успешно принимает звонки и делает исходящие внутренние звонки. При звонке во внешний мир - разрыв связи через 10-20 секунд. Звук во время разговора есть.
Имеется:
- Elastix 2.0.3
- 3CX Phone
- Два тупых D-LINK-маршрутизатора с проброшенными UDP 10000-20000 и 5060. Никаких настроек VoIP в маршрутизаторах нет.
Код: Выделить всё
3CX Phone debug:
Network configuration changed
Video calls not allowed
Making call to 079062990044 took 1311 msec, network too slow
Video calls not allowed
Video calls not allowed
Video calls not allowed
Asterisk -vvvvr:
Код: Выделить всё
-- Executing [s@macro-dialout-trunk:19] Dial("SIP/101-0000002e", "SIP/pctel/079062990044,300,") in new stack
== Using SIP RTP TOS bits 184
== Using SIP RTP CoS mark 5
-- Called pctel/079062990044
-- SIP/pctel-0000002f is making progress passing it to SIP/101-0000002e
-- SIP/pctel-0000002f answered SIP/101-0000002e
-- Packet2Packet bridging SIP/101-0000002e and SIP/pctel-0000002f
-- Executing [h@macro-dialout-trunk:1] Macro("SIP/101-0000002e", "hangupcall,") in new stack
-- Executing [s@macro-hangupcall:1] GotoIf("SIP/101-0000002e", "1?noautomon") in new stack
-- Goto (macro-hangupcall,s,3)
-- Executing [s@macro-hangupcall:3] NoOp("SIP/101-0000002e", "TOUCH_MONITOR_OUTPUT=") in new stack
-- Executing [s@macro-hangupcall:4] GotoIf("SIP/101-0000002e", "1?skiprg") in new stack
-- Goto (macro-hangupcall,s,7)
-- Executing [s@macro-hangupcall:7] GotoIf("SIP/101-0000002e", "1?skipblkvm") in new stack
-- Goto (macro-hangupcall,s,10)
-- Executing [s@macro-hangupcall:10] GotoIf("SIP/101-0000002e", "1?theend") in new stack
-- Goto (macro-hangupcall,s,12)
-- Executing [s@macro-hangupcall:12] Hangup("SIP/101-0000002e", "") in new stack
== Spawn extension (macro-hangupcall, s, 12) exited non-zero on 'SIP/101-0000002e' in macro 'hangupcall'
== Spawn extension (macro-dialout-trunk, s, 19) exited non-zero on 'SIP/101-000002e' in macro 'dialout-trunk'
== Spawn extension (from-internal, 079062990044, 5) exited non-zero on 'SIP/101-0000002e'
Re: Отключение через 10-20 секунд
Добавлено: 03 янв 2011, 12:33
ded
Вариантов не много. Это или НАТообразующее устройство дома шалит, или сам 101-й.
1) Попробуйте включить дебаг для такого звонка
sip set debug peer 101
чтобы увидеть точно кто присылает BYE
2) Попробуйте использовать какой-то другой телефон вместо 3CX Phone.
Re: Отключение через 10-20 секунд
Добавлено: 03 янв 2011, 16:43
navff
Вот, что выдается при дебаге по 101:
Код: Выделить всё
<--- Reliably Transmitting (NAT) to 95.53.164.233:5060 --->
SIP/2.0 200 OK
Via: SIP/2.0/UDP 95.53.164.233:5060;branch=z9hG4bK-d8754z-9c6a0a234b05d521-1---d8754z-;received=95.53.164.233;rport=5060
From: "101"<sip:101@office.33kita.ru:5060>;tag=68573c19
To: <sip:078202573818@office.33kita.ru:5060>;tag=as25aade06
Call-ID: NDI2OGMzZTFkNTY2Zjk2NWM5OWNjNzgyMzVjMGNiZWM.
CSeq: 2 INVITE
Server: Asterisk PBX 1.6.2.13
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO
Supported: replaces, timer
Contact: <sip:078202573818@195.239.166.70>
Content-Type: application/sdp
Content-Length: 288
v=0
o=root 1366200424 1366200425 IN IP4 195.239.166.70
s=Asterisk PBX 1.6.2.13
c=IN IP4 195.239.166.70
t=0 0
m=audio 12498 RTP/AVP 0 8 3 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:3 GSM/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=ptime:20
a=sendrecv
<------------>
-- Packet2Packet bridging SIP/101-00000038 and SIP/pctel-00000039
<--- SIP read from UDP:95.53.164.233:5060 --->
<------------->
Retransmitting #1 (NAT) to 95.53.164.233:5060:
SIP/2.0 200 OK
Via: SIP/2.0/UDP 95.53.164.233:5060;branch=z9hG4bK-d8754z-9c6a0a234b05d521-1---d8754z-;received=95.53.164.233;rport=5060
From: "101"<sip:101@office.33kita.ru:5060>;tag=68573c19
To: <sip:078202573818@office.33kita.ru:5060>;tag=as25aade06
Call-ID: NDI2OGMzZTFkNTY2Zjk2NWM5OWNjNzgyMzVjMGNiZWM.
CSeq: 2 INVITE
Server: Asterisk PBX 1.6.2.13
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO
Supported: replaces, timer
Contact: <sip:078202573818@195.239.166.70>
Content-Type: application/sdp
Content-Length: 288
v=0
o=root 1366200424 1366200425 IN IP4 195.239.166.70
s=Asterisk PBX 1.6.2.13
c=IN IP4 195.239.166.70
t=0 0
m=audio 12498 RTP/AVP 0 8 3 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:3 GSM/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=ptime:20
a=sendrecv
---
Retransmitting #2 (NAT) to 95.53.164.233:5060:
SIP/2.0 200 OK
Via: SIP/2.0/UDP 95.53.164.233:5060;branch=z9hG4bK-d8754z-9c6a0a234b05d521-1---d8754z-;received=95.53.164.233;rport=5060
From: "101"<sip:101@office.33kita.ru:5060>;tag=68573c19
To: <sip:078202573818@office.33kita.ru:5060>;tag=as25aade06
Call-ID: NDI2OGMzZTFkNTY2Zjk2NWM5OWNjNzgyMzVjMGNiZWM.
CSeq: 2 INVITE
Server: Asterisk PBX 1.6.2.13
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO
Supported: replaces, timer
Contact: <sip:078202573818@195.239.166.70>
Content-Type: application/sdp
Content-Length: 288
v=0
o=root 1366200424 1366200425 IN IP4 195.239.166.70
s=Asterisk PBX 1.6.2.13
c=IN IP4 195.239.166.70
t=0 0
m=audio 12498 RTP/AVP 0 8 3 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:3 GSM/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=ptime:20
a=sendrecv
---
Retransmitting #3 (NAT) to 95.53.164.233:5060:
SIP/2.0 200 OK
Via: SIP/2.0/UDP 95.53.164.233:5060;branch=z9hG4bK-d8754z-9c6a0a234b05d521-1---d8754z-;received=95.53.164.233;rport=5060
From: "101"<sip:101@office.33kita.ru:5060>;tag=68573c19
To: <sip:078202573818@office.33kita.ru:5060>;tag=as25aade06
Call-ID: NDI2OGMzZTFkNTY2Zjk2NWM5OWNjNzgyMzVjMGNiZWM.
CSeq: 2 INVITE
Server: Asterisk PBX 1.6.2.13
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO
Supported: replaces, timer
Contact: <sip:078202573818@195.239.166.70>
Content-Type: application/sdp
Content-Length: 288
v=0
o=root 1366200424 1366200425 IN IP4 195.239.166.70
s=Asterisk PBX 1.6.2.13
c=IN IP4 195.239.166.70
t=0 0
m=audio 12498 RTP/AVP 0 8 3 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:3 GSM/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=ptime:20
a=sendrecv
---
Really destroying SIP dialog 'MmZkOWY3NTBlYTkwYWQzNTdhYjA2Yjc1ZjUwODc0NTA.' Method: REGISTER
Retransmitting #4 (NAT) to 95.53.164.233:5060:
SIP/2.0 200 OK
Via: SIP/2.0/UDP 95.53.164.233:5060;branch=z9hG4bK-d8754z-9c6a0a234b05d521-1---d8754z-;received=95.53.164.233;rport=5060
From: "101"<sip:101@office.33kita.ru:5060>;tag=68573c19
To: <sip:078202573818@office.33kita.ru:5060>;tag=as25aade06
Call-ID: NDI2OGMzZTFkNTY2Zjk2NWM5OWNjNzgyMzVjMGNiZWM.
CSeq: 2 INVITE
Server: Asterisk PBX 1.6.2.13
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO
Supported: replaces, timer
Contact: <sip:078202573818@195.239.166.70>
Content-Type: application/sdp
Content-Length: 288
v=0
o=root 1366200424 1366200425 IN IP4 195.239.166.70
s=Asterisk PBX 1.6.2.13
c=IN IP4 195.239.166.70
t=0 0
m=audio 12498 RTP/AVP 0 8 3 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:3 GSM/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=ptime:20
a=sendrecv
---
Retransmitting #5 (NAT) to 95.53.164.233:5060:
SIP/2.0 200 OK
Via: SIP/2.0/UDP 95.53.164.233:5060;branch=z9hG4bK-d8754z-9c6a0a234b05d521-1---d8754z-;received=95.53.164.233;rport=5060
From: "101"<sip:101@office.33kita.ru:5060>;tag=68573c19
To: <sip:078202573818@office.33kita.ru:5060>;tag=as25aade06
Call-ID: NDI2OGMzZTFkNTY2Zjk2NWM5OWNjNzgyMzVjMGNiZWM.
CSeq: 2 INVITE
Server: Asterisk PBX 1.6.2.13
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO
Supported: replaces, timer
Contact: <sip:078202573818@195.239.166.70>
Content-Type: application/sdp
Content-Length: 288
v=0
o=root 1366200424 1366200425 IN IP4 195.239.166.70
s=Asterisk PBX 1.6.2.13
c=IN IP4 195.239.166.70
t=0 0
m=audio 12498 RTP/AVP 0 8 3 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:3 GSM/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=ptime:20
a=sendrecv
---
Retransmitting #6 (NAT) to 95.53.164.233:5060:
SIP/2.0 200 OK
Via: SIP/2.0/UDP 95.53.164.233:5060;branch=z9hG4bK-d8754z-9c6a0a234b05d521-1---d8754z-;received=95.53.164.233;rport=5060
From: "101"<sip:101@office.33kita.ru:5060>;tag=68573c19
To: <sip:078202573818@office.33kita.ru:5060>;tag=as25aade06
Call-ID: NDI2OGMzZTFkNTY2Zjk2NWM5OWNjNzgyMzVjMGNiZWM.
CSeq: 2 INVITE
Server: Asterisk PBX 1.6.2.13
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO
Supported: replaces, timer
Contact: <sip:078202573818@195.239.166.70>
Content-Type: application/sdp
Content-Length: 288
v=0
o=root 1366200424 1366200425 IN IP4 195.239.166.70
s=Asterisk PBX 1.6.2.13
c=IN IP4 195.239.166.70
t=0 0
m=audio 12498 RTP/AVP 0 8 3 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:3 GSM/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=ptime:20
a=sendrecv
А вот это - после отключения:
Код: Выделить всё
---
-- Executing [h@macro-dialout-trunk:1] Macro("SIP/101-00000038", "hangupcall,") in new stack
-- Executing [s@macro-hangupcall:1] GotoIf("SIP/101-00000038", "1?noautomon") in new stack
-- Goto (macro-hangupcall,s,3)
-- Executing [s@macro-hangupcall:3] NoOp("SIP/101-00000038", "TOUCH_MONITOR_OUTPUT=") in new stack
-- Executing [s@macro-hangupcall:4] GotoIf("SIP/101-00000038", "1?skiprg") in new stack
-- Goto (macro-hangupcall,s,7)
-- Executing [s@macro-hangupcall:7] GotoIf("SIP/101-00000038", "1?skipblkvm") in new stack
-- Goto (macro-hangupcall,s,10)
-- Executing [s@macro-hangupcall:10] GotoIf("SIP/101-00000038", "1?theend") in new stack
-- Goto (macro-hangupcall,s,12)
-- Executing [s@macro-hangupcall:12] Hangup("SIP/101-00000038", "") in new stack
== Spawn extension (macro-hangupcall, s, 12) exited non-zero on 'SIP/101-00000038' in macro 'hangupcall'
== Spawn extension (macro-dialout-trunk, s, 19) exited non-zero on 'SIP/101-00000038' in macro 'dialout-trunk'
== Spawn extension (from-internal, 078202573818, 5) exited non-zero on 'SIP/101-00000038'
Really destroying SIP dialog 'NDI2OGMzZTFkNTY2Zjk2NWM5OWNjNzgyMzVjMGNiZWM.' Method: INVITE
3CX Phone в офисе работает с теми же настройками, так что, кажется, дело не в нем. Поставил X-Lite - та же проблема.
Re: Отключение через 10-20 секунд
Добавлено: 03 янв 2011, 17:18
ded
Вы обубликовали бессмысленный дебаг. Не нужно было ловить и постить тут пакет INVITE, нужно было ловить и постить пакет BYE. То есть кто из двух абонентов отбивает звонок. Исполнение макросов Executing s@macro-hangupcall также не представляет интереса для поиска причин.
ded писал(а):Вариантов не много. Это или НАТообразующее устройство дома шалит
Вариант - смотреть RTCP debug
Re: Отключение через 10-20 секунд
Добавлено: 03 янв 2011, 17:19
zepps
Ответ:Retransmitting #1 (NAT) to 95.53.164.233:5060:
Проброс SIP-портов решит проблему.
Re: Отключение через 10-20 секунд
Добавлено: 03 янв 2011, 20:01
IgorG
Может и не решит, автор уже написал что в Длинке 5060 порт проброшен, но по какой-то загадочной причине астериск не получает ACK после отправки 200 ОК. Скорее всего астериск и рвет диалог, который так и не установился.
Re: Отключение через 10-20 секунд
Добавлено: 03 янв 2011, 20:03
zepps
Наверняка, сип-клиент выходит с других портов (напр, 5061), а товарищ пробросил только астерисковские.
Re: Отключение через 10-20 секунд
Добавлено: 03 янв 2011, 22:59
Evgen
IgorG писал(а):но по какой-то загадочной причине астериск не получает ACK после отправки 200 ОК
Ежели снять sip дебаг со стороны клиента, то загадка, я думаю, разрешится сразу же после анализа лога.
Re: Отключение через 10-20 секунд
Добавлено: 03 янв 2011, 23:04
zepps
Да тут все тривиально до безобразия: Asterisk поддерживает NAT, отправляя свои ретрансмиты. На шестом неотвеченном ретрансмите он принудительно самостоятельно обрывает соединение дабы не получить обвисшую сессию.
Re: Отключение через 10-20 секунд
Добавлено: 04 янв 2011, 12:31
navff
1. Sip-клиент выходит с 5060, 5061 и 10000-20000. Все эти порты проброшены на стороне сервера.
2. Во вложении файл с tcpdump по порту 5060. Там есть искомый пакет BYE.
3. К сожалению, не знаю, что такое callflow и как его смотреть.
Весь прикол в том, что дисконнект происходит только при исходящих вызовах. Если я звоню себе с городского телефона, - он успешно обрабатывается Asterisk'ом и перенаправляется в SIP-телефон. Соединение на входящих вызовах держится.