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

Пропащий rtp на бытовых роутерах

Asterisk IP PBX 13 сообщений -
#1

Раньше была ветка 1.4, все работало более или менее нормально. Потом был переезд, и я поставил 10 ветку. Часть клиентов на софтфонах стала жаловаться на мертвый исходящий канал (звонящего слышат, сам он ничего не слышит). Потом я позарился на gtalk и поставил 11 ветку. Жалоб стало еще больше. При этом адекватные клиенты за натом нормальных железок вообще не заметили перехода.

Глюк воспроизводится на ущербных роутерах.
Пример: Asus 520gu - полет нормальный. Trendnet tew-432brp - я вообще ничего не слышу ни в одном направлении. Хардварный панасоник kx-tgp500 работает на обоих роутерах. Пробовал blink, qutecom, x-lite.

Начал думать: ну мало ли, может мтт/отк/глобус имеют хитрые настройки, так что отключил к чертям всю эзотерику, убрал реинвайты. Результат тот же. Потом подумал, мало ли, провайдер на колокейшне веселится, поднял тачку на селектеле - та же фигня. Попробовал выводит outgoing через sipnet - результат предсказуемо отрицательный.

Но 1.4 ветке-то работало. А на 10+ не работает. Напрашивается вывод, что в астериске что-то поменяли. При этом rtp до снятия трубки идет в обоих направлениях, после снятия трубки - только в одном.
У некоторых клиентов софтфоны нормально работают на входящие.

В sip.conf ничего интересного:
Код:
[general]
context=default
udpbindaddr=0.0.0.0

tcpenable=no
tcpbindaddr=0.0.0.0

srvlookup=yes
rtcachefriends=yes

videosupport=yes
;relaxdtmf=yes
allowguest=no
alwaysauthreject=yes

rtptimeout=60
;rtpholdtimeout=60
;rtpkeepalive=60

;usereqphone=yes
;useragent=SipPhone

avpf=yes

nat=force_rport,comedia
qualify=yes
ignoreregexpire=yes
rtupdate=yes
ignoresdpversion=yes

;directmedia=nonat
directmedia=no

;allowoverlap=no
;compactheaders = no

disallow=all
;allow=ulaw
;allow=gsm
;allow=g729
allow=all ; мало ли софтфону не хватает кодеков каких, но видимо нет

[root]
type=friend
username=root
fromuser=root
secret=:(
host=dynamic
context=sip
nat=yes
directmedia=no
qualify=yes

disallow=all
allow=all

[sipnet]
secret=:(
defaultuser=:(
host=sipnet.ru
type=friend
context=from-sipnet
insecure=invite
fromuser=:(
fromdomain=sipnet.ru
disallow=all
allow=alaw

nat=no
dtmfmode=rfc2833


С этими настройками лог выглядит так:

Код:
Connected to Asterisk 11.2.1 currently running on nicetry (pid = 2529)


INVITE sip:@:5060 SIP/2.0
Via: SIP/2.0/UDP 37.146.70.255:58201;rport;branch=z9hG4bKPjJgxcueg5lAI8JSU5Z.VfpLlQsCsFAvTM
Max-Forwards: 70
From: "root" ;tag=pgJzzwFYgsxSOZPw7qEXLWGNvjmQXY5v
To:
Contact:
Call-ID: 2fK7BzTuu-FEJrKhEmZM0-XZZOllmEIM
CSeq: 11145 INVITE
Allow: SUBSCRIBE, NOTIFY, PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, MESSAGE, REFER
Supported: 100rel, replaces, norefersub, gruu
User-Agent: Blink 0.2.11 (Linux)
Content-Type: application/sdp
Content-Length: 374

v=0
o=- 3569779447 3569779447 IN IP4 37.146.70.255
s=Blink 0.2.11 (Linux)
c=IN IP4 37.146.70.255
t=0 0
m=audio 50034 RTP/AVP 9 104 103 102 0 8 101
a=rtcp:50035
a=rtpmap:9 G722/8000
a=rtpmap:104 speex/32000
a=rtpmap:103 speex/16000
a=rtpmap:102 speex/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=sendrecv

--- (13 headers 16 lines) ---
Sending to 37.146.70.255:58201 (no NAT)
Using INVITE request as basis request - 2fK7BzTuu-FEJrKhEmZM0-XZZOllmEIM
Found peer 'root' for 'root' from 37.146.70.255:58201


SIP/2.0 401 Unauthorized
Via: SIP/2.0/UDP 37.146.70.255:58201;branch=z9hG4bKPjJgxcueg5lAI8JSU5Z.VfpLlQsCsFAvTM;received=37.146.70.255;rport=58201
From: "root" ;tag=pgJzzwFYgsxSOZPw7qEXLWGNvjmQXY5v
To: ;tag=as270a3cc4
Call-ID: 2fK7BzTuu-FEJrKhEmZM0-XZZOllmEIM
CSeq: 11145 INVITE
Server: Asterisk PBX 11.2.1
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH
Supported: replaces, timer
WWW-Authenticate: Digest algorithm=MD5, realm="asterisk", nonce="2813515d"
Content-Length: 0



Scheduling destruction of SIP dialog '2fK7BzTuu-FEJrKhEmZM0-XZZOllmEIM' in 6400 ms (Method: INVITE)


ACK sip:@:5060 SIP/2.0
Via: SIP/2.0/UDP 37.146.70.255:58201;rport;branch=z9hG4bKPjJgxcueg5lAI8JSU5Z.VfpLlQsCsFAvTM
Max-Forwards: 70
From: "root" ;tag=pgJzzwFYgsxSOZPw7qEXLWGNvjmQXY5v
To: ;tag=as270a3cc4
Call-ID: 2fK7BzTuu-FEJrKhEmZM0-XZZOllmEIM
CSeq: 11145 ACK
User-Agent: Blink 0.2.11 (Linux)
Content-Length: 0


--- (9 headers 0 lines) ---


INVITE sip:@:5060 SIP/2.0
Via: SIP/2.0/UDP 37.146.70.255:58201;rport;branch=z9hG4bKPjBjhtMF0is402KU1oZNlTYMYb0DkwGtJp
Max-Forwards: 70
From: "root" ;tag=pgJzzwFYgsxSOZPw7qEXLWGNvjmQXY5v
To:
Contact:
Call-ID: 2fK7BzTuu-FEJrKhEmZM0-XZZOllmEIM
CSeq: 11146 INVITE
Allow: SUBSCRIBE, NOTIFY, PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, MESSAGE, REFER
Supported: 100rel, replaces, norefersub, gruu
User-Agent: Blink 0.2.11 (Linux)
Authorization: Digest username="root", realm="asterisk", nonce="2813515d", uri="sip:@", response="9ee8c33a17c4c0537bf31456c660a15b", algorithm=MD5
Content-Type: application/sdp
Content-Length: 374

v=0
o=- 3569779447 3569779447 IN IP4 37.146.70.255
s=Blink 0.2.11 (Linux)
c=IN IP4 37.146.70.255
t=0 0
m=audio 50034 RTP/AVP 9 104 103 102 0 8 101
a=rtcp:50035
a=rtpmap:9 G722/8000
a=rtpmap:104 speex/32000
a=rtpmap:103 speex/16000
a=rtpmap:102 speex/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=sendrecv

--- (14 headers 16 lines) ---
Sending to 37.146.70.255:58201 (NAT)
Using INVITE request as basis request - 2fK7BzTuu-FEJrKhEmZM0-XZZOllmEIM
Found peer 'root' for 'root' from 37.146.70.255:58201
== Using SIP VIDEO CoS mark 6
== Using SIP RTP CoS mark 5
Found RTP audio format 9
Found RTP audio format 104
Found RTP audio format 103
Found RTP audio format 102
Found RTP audio format 0
Found RTP audio format 8
Found RTP audio format 101
Found audio description format G722 for ID 9
Found audio description format speex for ID 104
Found audio description format speex for ID 103
Found audio description format speex for ID 102
Found audio description format PCMU for ID 0
Found audio description format PCMA for ID 8
Found audio description format telephone-event for ID 101
Capabilities: us - (g723|gsm|ulaw|alaw|g726|adpcm|slin|lpc10|g729|speex|speex16|ilbc|g726aal2|g722|slin16|jpeg|png|h261|h263|h263p|h264|mpeg4|red|t140|siren7|siren14|testlaw|g719|speex32|slin12|slin24|slin32|slin44|slin48|slin96|slin192|silk8|silk12|silk16|silk24), peer - audio=(ulaw|alaw|speex|speex16|g722|speex32)/video=(nothing)/text=(nothing), combined - (ulaw|alaw|speex|speex16|g722|speex32)
Non-codec capabilities (dtmf): us - 0x1 (telephone-event|), peer - 0x1 (telephone-event|), combined - 0x1 (telephone-event|)
Peer audio RTP is at port 37.146.70.255:50034
Peer doesn't provide video
Looking for in sip (domain )
list_route: hop:


SIP/2.0 100 Trying
Via: SIP/2.0/UDP 37.146.70.255:58201;branch=z9hG4bKPjBjhtMF0is402KU1oZNlTYMYb0DkwGtJp;received=37.146.70.255;rport=58201
From: "root" ;tag=pgJzzwFYgsxSOZPw7qEXLWGNvjmQXY5v
To:
Call-ID: 2fK7BzTuu-FEJrKhEmZM0-XZZOllmEIM
CSeq: 11146 INVITE
Server: Asterisk PBX 11.2.1
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH
Supported: replaces, timer
Contact:
Content-Length: 0



-- Executing [@sip:1] Dial("SIP/root-00000006", "SIP/sipnet/") in new stack
== Using SIP RTP CoS mark 5
-- Called SIP/sipnet/
-- SIP/sipnet-00000007 is ringing


SIP/2.0 180 Ringing
Via: SIP/2.0/UDP 37.146.70.255:58201;branch=z9hG4bKPjBjhtMF0is402KU1oZNlTYMYb0DkwGtJp;received=37.146.70.255;rport=58201
From: "root" ;tag=pgJzzwFYgsxSOZPw7qEXLWGNvjmQXY5v
To: ;tag=as162d3976
Call-ID: 2fK7BzTuu-FEJrKhEmZM0-XZZOllmEIM
CSeq: 11146 INVITE
Server: Asterisk PBX 11.2.1
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH
Supported: replaces, timer
Contact:
Content-Length: 0



nicetry*CLI>
nicetry*CLI>
nicetry*CLI>
nicetry*CLI>
nicetry*CLI>
nicetry*CLI>
nicetry*CLI>

# ========= ANSWER HERE ===========

nicetry*CLI>
nicetry*CLI>
nicetry*CLI>
nicetry*CLI>
nicetry*CLI>
nicetry*CLI>
nicetry*CLI>
nicetry*CLI>
nicetry*CLI>
nicetry*CLI>
-- SIP/sipnet-00000007 answered SIP/root-00000006
Audio is at 18288
Adding codec 100003 (ulaw) to SDP
Adding codec 100004 (alaw) to SDP
Adding codec 100009 (speex) to SDP
Adding codec 100012 (g722) to SDP
Adding codec 100016 (speex16) to SDP
Adding codec 100028 (speex32) to SDP
Adding non-codec 0x1 (telephone-event) to SDP


SIP/2.0 200 OK
Via: SIP/2.0/UDP 37.146.70.255:58201;branch=z9hG4bKPjBjhtMF0is402KU1oZNlTYMYb0DkwGtJp;received=37.146.70.255;rport=58201
From: "root" ;tag=pgJzzwFYgsxSOZPw7qEXLWGNvjmQXY5v
To: ;tag=as162d3976
Call-ID: 2fK7BzTuu-FEJrKhEmZM0-XZZOllmEIM
CSeq: 11146 INVITE
Server: Asterisk PBX 11.2.1
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH
Supported: replaces, timer
Contact:
Content-Type: application/sdp
Content-Length: 368

v=0
o=root 57937782 57937782 IN IP4
s=Asterisk PBX 11.2.1
c=IN IP4
t=0 0
m=audio 18288 RTP/AVP 0 8 102 9 103 104 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:102 speex/8000
a=rtpmap:9 G722/8000
a=rtpmap:103 speex/16000
a=rtpmap:104 speex/32000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=ptime:20
a=sendrecv


-- Locally bridging SIP/root-00000006 and SIP/sipnet-00000007


ACK sip:@:5060 SIP/2.0
Via: SIP/2.0/UDP 37.146.70.255:58201;rport;branch=z9hG4bKPjg492URwdnaDJqFm96Tew2vV10ABPOncp
Max-Forwards: 70
From: "root" ;tag=pgJzzwFYgsxSOZPw7qEXLWGNvjmQXY5v
To: ;tag=as162d3976
Call-ID: 2fK7BzTuu-FEJrKhEmZM0-XZZOllmEIM
CSeq: 11146 ACK
User-Agent: Blink 0.2.11 (Linux)
Content-Length: 0


--- (9 headers 0 lines) ---
== Spawn extension (sip, , 1) exited non-zero on 'SIP/root-00000006'
Scheduling destruction of SIP dialog '2fK7BzTuu-FEJrKhEmZM0-XZZOllmEIM' in 6400 ms (Method: ACK)
set_destination: Parsing for address/port to send to
set_destination: set destination to 37.146.70.255:58201
Reliably Transmitting (NAT) to 37.146.70.255:58201:
BYE sip:59674803@37.146.70.255:58201 SIP/2.0
Via: SIP/2.0/UDP :5060;branch=z9hG4bK0a79f5dd;rport
Max-Forwards: 70
From: ;tag=as162d3976
To: "root" ;tag=pgJzzwFYgsxSOZPw7qEXLWGNvjmQXY5v
Call-ID: 2fK7BzTuu-FEJrKhEmZM0-XZZOllmEIM
CSeq: 102 BYE
User-Agent: Asterisk PBX 11.2.1
Proxy-Authorization: Digest username="root", realm="asterisk", algorithm=MD5, uri="sip:", nonce="2813515d", response="ab23d540e010397d020dd31b5b210c79"
X-Asterisk-HangupCause: Normal Clearing
X-Asterisk-HangupCauseCode: 16
Content-Length: 0


---


SIP/2.0 200 OK
Via: SIP/2.0/UDP :5060;rport=5060;received=;branch=z9hG4bK0a79f5dd
Call-ID: 2fK7BzTuu-FEJrKhEmZM0-XZZOllmEIM
From: ;tag=as162d3976
To: "root" ;tag=pgJzzwFYgsxSOZPw7qEXLWGNvjmQXY5v
CSeq: 102 BYE
Server: Blink 0.2.11 (Linux)
Content-Length: 0


--- (8 headers 0 lines) ---
SIP Response message for INCOMING dialog BYE arrived
Really destroying SIP dialog '2fK7BzTuu-FEJrKhEmZM0-XZZOllmEIM' Method: ACK
nicetry*CLI>
Disconnected from Asterisk server
Asterisk cleanly ending (0).
Executing last minute cleanups
Asterisk ending (0).

Я не вижу там причины проблемы. Что я делаю не так?
#2

Rtptimeout 120
Rtpholdtimeout 300
Rtpkeepalive 5

core show translation покажите
#3

nicetry*CLI> core show translation
Код:

Translation times between formats (in microseconds) for one second of data
Source Format (Rows) Destination Format (Columns)

gsm ulaw alaw g726 adpcm slin lpc10 ilbc g726aal2 g722 slin16 testlaw slin12 slin24 slin32 slin44 slin48 slin96 slin192
gsm - 15000 15000 15000 15000 9000 15000 15000 15000 17250 17000 15000 17000 17000 17000 17000 17000 17000 17000
ulaw 15000 - 9150 15000 15000 9000 15000 15000 15000 17250 17000 15000 17000 17000 17000 17000 17000 17000 17000
alaw 15000 9150 - 15000 15000 9000 15000 15000 15000 17250 17000 15000 17000 17000 17000 17000 17000 17000 17000
g726 15000 15000 15000 - 15000 9000 15000 15000 15000 17250 17000 15000 17000 17000 17000 17000 17000 17000 17000
adpcm 15000 15000 15000 15000 - 9000 15000 15000 15000 17250 17000 15000 17000 17000 17000 17000 17000 17000 17000
slin 6000 6000 6000 6000 6000 - 6000 6000 6000 8250 8000 6000 8000 8000 8000 8000 8000 8000 8000
lpc10 15000 15000 15000 15000 15000 9000 - 15000 15000 17250 17000 15000 17000 17000 17000 17000 17000 17000 17000
ilbc 15000 15000 15000 15000 15000 9000 15000 - 15000 17250 17000 15000 17000 17000 17000 17000 17000 17000 17000
g726aal2 15000 15000 15000 15000 15000 9000 15000 15000 - 17250 17000 15000 17000 17000 17000 17000 17000 17000 17000
g722 15600 15600 15600 15600 15600 9600 15600 15600 15600 - 9000 15600 17500 17000 17000 17000 17000 17000 17000
slin16 14500 14500 14500 14500 14500 8500 14500 14500 14500 6000 - 14500 8500 8000 8000 8000 8000 8000 8000
testlaw 15000 15000 15000 15000 15000 9000 15000 15000 15000 17250 17000 - 17000 17000 17000 17000 17000 17000 17000
slin12 14500 14500 14500 14500 14500 8500 14500 14500 14500 14000 8000 14500 - 8000 8000 8000 8000 8000 8000
slin24 14500 14500 14500 14500 14500 8500 14500 14500 14500 14500 8500 14500 8500 - 8000 8000 8000 8000 8000
slin32 14500 14500 14500 14500 14500 8500 14500 14500 14500 14500 8500 14500 8500 8500 - 8000 8000 8000 8000
slin44 14500 14500 14500 14500 14500 8500 14500 14500 14500 14500 8500 14500 8500 8500 8500 - 8000 8000 8000
slin48 14500 14500 14500 14500 14500 8500 14500 14500 14500 14500 8500 14500 8500 8500 8500 8500 - 8000 8000
slin96 14500 14500 14500 14500 14500 8500 14500 14500 14500 14500 8500 14500 8500 8500 8500 8500 8500 - 8000
slin192 14500 14500 14500 14500 14500 8500 14500 14500 14500 14500 8500 14500 8500 8500 8500 8500 8500 8500 -


Остальное попробую чуть позже, под рукой нет такого роутера.
#4

софтфоны любят g729 и g723 доставьте их
#5

awsswa, поставил rtp - ноль реакции. Кодеки тоже доставил (они есть на боевой машине), но потом вспомнил, что, к примеру, blink не умеет 729/723. Поэтому с кодеками та же фигня.
#6

Слишком мало данных - надо смотреть все. Начиная от настройки сети сервера asterisk и клиентов. Где то затык в маршрутизации.
Если енть возможность перешить роутер под dd-wrt - меняйте прошивку.
#7

awsswa @ Чт Фев 14, 2013 19:04 писал(а):
Слишком мало данных - надо смотреть все. Начиная от настройки сети сервера asterisk и клиентов. Где то затык в маршрутизации.
Если енть возможность перешить роутер под dd-wrt - меняйте прошивку.


Дело не в прошивке, а в том, что аналогичные проблемы есть у десятка-другого клиентов, которые точно не будут ничего перепрошивать и/или менять роутер.

Попутно попробовал encrypted=yes, tlsenable=yes, sRTP, transport=udp,tcp,ws,wss. Пашет, падла, только сначала идут двойные гудки, а потом после снятия трубки одни гудки исчезают, а вторые остаются. Слышимость в обоих направлениях. Выходит дело, кто-то пакеты режет.

UPDATE: отключил sRTP, оставил tls - двойные гудки исчезли.
#8

Поскольку найти ничего особо интересного у меня так и не получилось, пущу в ход другую тактику. Я даю виртуальную wheezy x86_64 + asterisk 11, 5к к за решение проблемы, опубликованное на этом форуме, т.е. этот чертов тренднет должен у меня заработать с дефолтынми настройками blink/qutecom. Реквизиты от сипнета для теста outgoing скину. Туннели, шифрование - не решение, поскольку это сложно объяснять физикам.

Если нет доверия моим виртуалкам - куплю пасс. Оплата wm/yandex.
p.s. ненавижу физиков
#9

стучитесь в skype - вечером буду свободен.
#10

Уверен, что проблема была в "nat=force_rport,comedia", на самом деле это не работает в 11-ом астериске, это легко посмотреть через "sip show peer {name}" , параметр "Force rport : " будет иметь значение "Auto (No)", если это так, то проблема решается пока что только патчем, это косяк 11 версии астериска. Кстати 10-ый астериск тоже достаточно криво по NAT'у работает.

на данный момент самое работоспособное решение это астериск 11 + патч (https://issues.asterisk.org/jira/browse/ASTERISK-21225)
#11

Так как выше чуть затрагивались роутеры, решил написать сюда.

2-e схемы:

Дома:
Android (CSipSimple) -> AP Asus (WL-500w) -> Inet -> Регистрация на (minisipserver.com) - Голос в одну сторону (от меня)
Android (CSipSimple) -> AP Asus (WL-500w) -> Inet -> Регистрация на (sipnet.ru) - Голос в обе стороны

Работа:
Отличие в AP (TP Link) в обоих вариантах супер.

Лечение при включении "дома" - stun.

P.S. Firewall на Asus отключен.

Подскажите что не так настроено!!!

Заранее благодарен.
#12

Тут бы еще выяснить, что за зверь minisipserver, и как он работает с NAT.
На работе TP-Link - это только AP или еще и роутер?

_________________
Asterisk 1.4.30 @ Ubuntu 9.04 + Cisco MC3810 + NEC NEAX 2000IPS + Polycom IP Phones
#13

Цитата:
На работе TP-Link - это только AP или еще и роутер?

Как AP!