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

Отключение через 10-20 секунд

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

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

Аватара пользователя
navff
Сообщения: 26
Зарегистрирован: 03 янв 2011, 11:34
Откуда: Череповец
Контактная информация:

Отключение через 10-20 секунд

Сообщение 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'
ded
Сообщения: 15619
Зарегистрирован: 26 авг 2010, 19:00

Re: Отключение через 10-20 секунд

Сообщение ded »

Вариантов не много. Это или НАТообразующее устройство дома шалит, или сам 101-й.

1) Попробуйте включить дебаг для такого звонка
sip set debug peer 101
чтобы увидеть точно кто присылает BYE

2) Попробуйте использовать какой-то другой телефон вместо 3CX Phone.
Аватара пользователя
navff
Сообщения: 26
Зарегистрирован: 03 янв 2011, 11:34
Откуда: Череповец
Контактная информация:

Re: Отключение через 10-20 секунд

Сообщение 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 - та же проблема.
ded
Сообщения: 15619
Зарегистрирован: 26 авг 2010, 19:00

Re: Отключение через 10-20 секунд

Сообщение ded »

Вы обубликовали бессмысленный дебаг. Не нужно было ловить и постить тут пакет INVITE, нужно было ловить и постить пакет BYE. То есть кто из двух абонентов отбивает звонок. Исполнение макросов Executing s@macro-hangupcall также не представляет интереса для поиска причин.
ded писал(а):Вариантов не много. Это или НАТообразующее устройство дома шалит
Вариант - смотреть RTCP debug
zepps
Сообщения: 134
Зарегистрирован: 30 авг 2010, 22:56

Re: Отключение через 10-20 секунд

Сообщение zepps »

Ответ:Retransmitting #1 (NAT) to 95.53.164.233:5060:

Проброс SIP-портов решит проблему.
Аватара пользователя
IgorG
Сообщения: 37
Зарегистрирован: 03 сен 2010, 13:08
Откуда: Омск
Контактная информация:

Re: Отключение через 10-20 секунд

Сообщение IgorG »

Может и не решит, автор уже написал что в Длинке 5060 порт проброшен, но по какой-то загадочной причине астериск не получает ACK после отправки 200 ОК. Скорее всего астериск и рвет диалог, который так и не установился.
zepps
Сообщения: 134
Зарегистрирован: 30 авг 2010, 22:56

Re: Отключение через 10-20 секунд

Сообщение zepps »

Наверняка, сип-клиент выходит с других портов (напр, 5061), а товарищ пробросил только астерисковские.
Аватара пользователя
Evgen
Сообщения: 128
Зарегистрирован: 01 сен 2010, 13:10
Откуда: Саратов
Контактная информация:

Re: Отключение через 10-20 секунд

Сообщение Evgen »

IgorG писал(а):но по какой-то загадочной причине астериск не получает ACK после отправки 200 ОК
Ежели снять sip дебаг со стороны клиента, то загадка, я думаю, разрешится сразу же после анализа лога.
zepps
Сообщения: 134
Зарегистрирован: 30 авг 2010, 22:56

Re: Отключение через 10-20 секунд

Сообщение zepps »

Да тут все тривиально до безобразия: Asterisk поддерживает NAT, отправляя свои ретрансмиты. На шестом неотвеченном ретрансмите он принудительно самостоятельно обрывает соединение дабы не получить обвисшую сессию.
Аватара пользователя
navff
Сообщения: 26
Зарегистрирован: 03 янв 2011, 11:34
Откуда: Череповец
Контактная информация:

Re: Отключение через 10-20 секунд

Сообщение navff »

1. Sip-клиент выходит с 5060, 5061 и 10000-20000. Все эти порты проброшены на стороне сервера.
2. Во вложении файл с tcpdump по порту 5060. Там есть искомый пакет BYE.
3. К сожалению, не знаю, что такое callflow и как его смотреть.

Весь прикол в том, что дисконнект происходит только при исходящих вызовах. Если я звоню себе с городского телефона, - он успешно обрабатывается Asterisk'ом и перенаправляется в SIP-телефон. Соединение на входящих вызовах держится.
Вложения
disconnect.rar
(2.29 КБ) 513 скачиваний
Последний раз редактировалось navff 04 янв 2011, 12:44, всего редактировалось 1 раз.
Ответить
© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH