После нескольких недель борьбы с Asterisk для WebRTC я решил выложить свою проблему на этом форуме. Моя проблема заключается в следующем:
Я не получаю аудио от WebRTC к WebRTC клиентам. Я работаю в среде LAN.
Ситуация — Звонок с JSSIP на JSSIP (тот же клиент) с автономным сервером Asterisk.
Проблема
При звонке с 6001(JSSIP) на 6002(JSSIP) звука нет вообще. Через некоторое время некоторые пакеты RTP отправляются, но не принимаются. Примерно через 40 секунд после того, как пакеты RTP появляются в файлах журнала, звонок завершается без какого-либо человеческого вмешательства.
Оба клиента находятся на одном компьютере, оба на Google Chrome, где один запущен в режиме инкогнито. Мы также протестировали с двумя разными ноутбуками, но это дает те же результаты.
Кто-нибудь знает, что вызывает эту проблему? Я также следил за этой темой:http://forums.digium.com/viewtopic.php?f=1&t=90167, но это не сработало для меня. Вы можете найти файлы журналов и дополнительную информацию ниже.
Я попытался решить эту проблему, так как было много сообщений об одной и той же проблеме.
- Запуск Asterisk через прокси-сервер (oversip)
- Использовал webrtc2sip с включенным и выключенным медиакодированием
- Использовал SipML5 с RTCwebbreaker, отключил видео
- Установить asterisk public (используя WAN-адрес и переадресацию портов на сервер)
- Запустите Asterisk на CentOS
- Использованный FireFox
Сервер Asterisk:
- ОС: Ubuntu 14.04
- Версия: Asterisk 13.2 и FreePBX 12
- IP-адрес: 192.168.178.203
- Порт вебсокета: 8088
- SIP-порт: 5060
Клиент:
- ОС: Windows 8.1
- Браузер: Chrome версии 40.0.2214.115 m
- IP-адрес: 192.168.178.18
Конфигурации:
rtp.conf
[general]
rtpstart=10000
rtpend=20000
icesupport=yes
stunaddr=74.125.132.127:19302
http.conf
[general]
enabled=yes
enablestatic=no
bindaddr=0.0.0.0
bindport=8088
sip.conf
[general]
port=5060
bindaddr=192.168.178.203
transport=ws,wss,udp
[6001]
host=dynamic
secret=6001
context=internal
type=friend
transport=ws,wss,udp
encryption=yes
avpf=yes
force_avp=yes
icesupport=yes
directmedia=outgoing
disallow=all
allow=opus,ulaw,vp8
dtlsenable=yes
dtlsverify=fingerprint
dtlscertfile=/etc/asterisk/keys/default.pem
dtlscafile=/etc/asterisk/keys/ca.crt
dtlssetup=actpass
nat=no
[6002]
host=dynamic
secret=6002
context=internal
type=friend
transport=ws,wss,udp
encryption=yes
avpf=yes
force_avp=yes
icesupport=yes
directmedia=outgoing
disallow=all
allow=opus,ulaw,vp8
dtlsenable=yes
dtlsverify=fingerprint
dtlscertfile=/etc/asterisk/keys/default.pem
dtlscafile=/etc/asterisk/keys/ca.crt
dtlssetup=actpass
nat=no
расширения.conf
[internal]
exten => 6001,1,Dial(SIP/6001)
exten => 6002,1,Dial(SIP/6002)
Ведение журнала
Полный журнал сервера здесь:http://pastebin.com/qHwzXbbd
Часть логирования сервера с включенной отладкой sip и rtp.
<------------>
Scheduling destruction of SIP dialog '0vreoff3cjblcgubthf1df' in 32000 ms (Method: REGISTER)
<--- SIP read from WS:192.168.178.18:55387 --->
INVITE sip:[email protected]:5060 SIP/2.0
Via: SIP/2.0/WS 1t4mt0723j5t.invalid;branch=z9hG4bK7239492
Max-Forwards: 69
To: <sip:[email protected]:5060>
From: "6001" <sip:[email protected]:5060>;tag=lq9ascrlba
Call-ID: sf6m6uln2amn2lhuuvia
CSeq: 7253 INVITE
X-Can-Renegotiate: undefined
Contact: <sip:[email protected];transport=ws;ob>
Content-Type: application/sdp
Session-Expires: 90
Allow: INVITE,ACK,CANCEL,BYE,UPDATE,MESSAGE,OPTIONS
Supported: timer,ice,outbound
User-Agent: JsSIP 0.6.18
Content-Length: 4710
v=0
o=- 5530171873894353207 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE audio video
a=msid-semantic: WMS bEWKeIMVkeE6PTP0lgDPhtJoGfmy7MeXYx0v
m=audio 62227 RTP/SAVPF 111 103 104 9 0 8 106 105 13 126
c=IN IP4 192.168.12.1
a=rtcp:62227 IN IP4 192.168.12.1
a=candidate:3708951358 1 udp 2122129151 192.168.12.1 62227 typ host generation 0
a=candidate:3708951358 2 udp 2122129151 192.168.12.1 62227 typ host generation 0
a=candidate:3242410012 1 udp 2122063615 25.124.74.215 62228 typ host generation 0
a=candidate:3242410012 2 udp 2122063615 25.124.74.215 62228 typ host generation 0
a=candidate:1867667642 1 udp 2121998079 192.168.254.1 62229 typ host generation 0
a=candidate:1867667642 2 udp 2121998079 192.168.254.1 62229 typ host generation 0
a=candidate:1340102981 1 udp 2121932543 192.168.178.18 62230 typ host generation 0
a=candidate:1340102981 2 udp 2121932543 192.168.178.18 62230 typ host generation 0
a=candidate:2475812814 1 tcp 1518149375 192.168.12.1 0 typ host tcptype active generation 0
a=candidate:2475812814 2 tcp 1518149375 192.168.12.1 0 typ host tcptype active generation 0
a=candidate:2411773164 1 tcp 1518083839 25.124.74.215 0 typ host tcptype active generation 0
a=candidate:2411773164 2 tcp 1518083839 25.124.74.215 0 typ host tcptype active generation 0
a=candidate:567387210 1 tcp 1518018303 192.168.254.1 0 typ host tcptype active generation 0
a=candidate:567387210 2 tcp 1518018303 192.168.254.1 0 typ host tcptype active generation 0
a=candidate:23307701 1 tcp 1517952767 192.168.178.18 0 typ host tcptype active generation 0
a=candidate:23307701 2 tcp 1517952767 192.168.178.18 0 typ host tcptype active generation 0
a=ice-ufrag:KUz2P70p6fRKTNhU
a=ice-pwd:uSSZZuV537KDmpbtSzusDKLK
a=ice-options:google-ice
a=fingerprint:sha-256 E8:85:6A:27:CF:E0:50:A7:4B:E5:4D:25:70:76:D4:F1:5D:8D:79:93:40:4B:2E:6B:40:1D:F0:35:B9:38:56:E3
a=setup:actpass
a=mid:audio
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=sendrecv
a=rtcp-mux
a=rtpmap:111 opus/48000/2
a=fmtp:111 minptime=10
a=rtpmap:103 ISAC/16000
a=rtpmap:104 ISAC/32000
a=rtpmap:9 G722/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:106 CN/32000
a=rtpmap:105 CN/16000
a=rtpmap:13 CN/8000
a=rtpmap:126 telephone-event/8000
a=maxptime:60
a=ssrc:831281522 cname:+qS2XmtyXWZX3uFI
a=ssrc:831281522 msid:bEWKeIMVkeE6PTP0lgDPhtJoGfmy7MeXYx0v dc973b27-9b15-4cdd-bbf8-80807c4d3b1d
a=ssrc:831281522 mslabel:bEWKeIMVkeE6PTP0lgDPhtJoGfmy7MeXYx0v
a=ssrc:831281522 label:dc973b27-9b15-4cdd-bbf8-80807c4d3b1d
m=video 62227 RTP/SAVPF 100 116 117 96
c=IN IP4 192.168.12.1
a=rtcp:62227 IN IP4 192.168.12.1
a=candidate:3708951358 1 udp 2122129151 192.168.12.1 62227 typ host generation 0
a=candidate:3708951358 2 udp 2122129151 192.168.12.1 62227 typ host generation 0
a=candidate:3242410012 1 udp 2122063615 25.124.74.215 62228 typ host generation 0
a=candidate:3242410012 2 udp 2122063615 25.124.74.215 62228 typ host generation 0
a=candidate:1867667642 1 udp 2121998079 192.168.254.1 62229 typ host generation 0
a=candidate:1867667642 2 udp 2121998079 192.168.254.1 62229 typ host generation 0
a=candidate:1340102981 1 udp 2121932543 192.168.178.18 62230 typ host generation 0
a=candidate:1340102981 2 udp 2121932543 192.168.178.18 62230 typ host generation 0
a=candidate:2475812814 1 tcp 1518149375 192.168.12.1 0 typ host tcptype active generation 0
a=candidate:2475812814 2 tcp 1518149375 192.168.12.1 0 typ host tcptype active generation 0
a=candidate:2411773164 1 tcp 1518083839 25.124.74.215 0 typ host tcptype active generation 0
a=candidate:2411773164 2 tcp 1518083839 25.124.74.215 0 typ host tcptype active generation 0
a=candidate:567387210 1 tcp 1518018303 192.168.254.1 0 typ host tcptype active generation 0
a=candidate:567387210 2 tcp 1518018303 192.168.254.1 0 typ host tcptype active generation 0
a=candidate:23307701 1 tcp 1517952767 192.168.178.18 0 typ host tcptype active generation 0
a=candidate:23307701 2 tcp 1517952767 192.168.178.18 0 typ host tcptype active generation 0
a=ice-ufrag:KUz2P70p6fRKTNhU
a=ice-pwd:uSSZZuV537KDmpbtSzusDKLK
a=ice-options:google-ice
a=fingerprint:sha-256 E8:85:6A:27:CF:E0:50:A7:4B:E5:4D:25:70:76:D4:F1:5D:8D:79:93:40:4B:2E:6B:40:1D:F0:35:B9:38:56:E3
a=setup:actpass
a=mid:video
a=extmap:2 urn:ietf:params:rtp-hdrext:toffset
a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=recvonly
a=rtcp-mux
a=rtpmap:100 VP8/90000
a=rtcp-fb:100 ccm fir
a=rtcp-fb:100 nack
a=rtcp-fb:100 nack pli
a=rtcp-fb:100 goog-remb
a=rtpmap:116 red/90000
a=rtpmap:117 ulpfec/90000
a=rtpmap:96 rtx/90000
a=fmtp:96 apt=100
<------------->
--- (15 headers 89 lines) ---
Using INVITE request as basis request - sf6m6uln2amn2lhuuvia
Found peer '6001' for '6001' from 192.168.178.18:55387
<--- Reliably Transmitting (no NAT) to 192.168.178.18:5060 --->
SIP/2.0 401 Unauthorized
Via: SIP/2.0/WS 1t4mt0723j5t.invalid;branch=z9hG4bK7239492;received=192.168.178.18
From: "6001" <sip:[email protected]:5060>;tag=lq9ascrlba
To: <sip:[email protected]:5060>;tag=as6ed0dbe4
Call-ID: sf6m6uln2amn2lhuuvia
CSeq: 7253 INVITE
Server: FPBX-12.0.37(13.431072M)
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH, MESSAGE
Supported: replaces, timer
WWW-Authenticate: Digest algorithm=MD5, realm="asterisk", nonce="263201da"
Content-Length: 0
<------------>
10:57:50.828 utsx0x7f967800 ...STUN client transaction created
10:57:50.828 utsx0x7f967800 ...STUN sending message (transmit count=1)
10:57:50.828 icess0x7f970c0 ..Check 7: [2] 192.168.178.203:18141-->192.168.178.18:62230: state changed from Frozen to In Progress
10:57:50.839 utsx0x7f967800 STUN sending message (transmit count=2)
10:57:50.839 utsx0x7f967800 STUN sending message (transmit count=2)
10:57:50.850 icess0x7f970c0 Starting checklist periodic check
10:57:50.851 icess0x7f970c0 Starting checklist periodic check
10:57:50.861 utsx0x7f967800 STUN sending message (transmit count=2)
10:57:50.862 utsx0x7f967800 STUN sending message (transmit count=2)
10:57:53.770 stuse0x7f96fc0 ..TX 80 bytes STUN message to 192.168.178.18:62261:
--- begin STUN message ---
STUN Binding success response
Hdr: length=60, magic=2112a442, tsx_id=6d4d564652372f537652314a
Attributes:
XOR-MAPPED-ADDRESS: length=8, IPv4 addr=192.168.178.18:62261
SOFTWARE: length=12, value="pjnath-2.3.0"
MESSAGE-INTEGRITY: length=20, data=0204b9b98f375d27e045e50bd034f1ce99288e06
FINGERPRINT: length=4, value=1908015627 (0x71ba020b)
--- end of STUN message ---
10:57:55.586 utsx0x7f96f800 .....STUN client transaction created
10:57:55.586 utsx0x7f96f800 .....STUN sending message (transmit count=1)
10:57:55.586 icess0x7f96fc0 ....Check 7: [2] 192.168.178.203:13265-->192.168.178.18:62253: state changed from Frozen to In Progress
10:57:55.586 icess0x7f96fc0 .Performing delayed triggerred check for component 1
10:57:55.586 icess0x7f96fc0 ..Triggered check for check 6 not performed because it's in progress. Retransmitting
10:57:55.586 utsx0x7f96f801 ...STUN sending message (transmit count=1)
10:57:55.586 icess0x7f96fc0 .Performing delayed triggerred check for component 2
10:57:55.586 icess0x7f96fc0 ..Triggered check for check 7 not performed because it's in progress. Retransmitting
10:58:41.301 icess0x7f96fc0 .Triggered check for check 7 not performed because it's completed
10:58:41.301 icess0x7f96fc0 ..Check 7 is successful and nominated
Sent RTP packet to 192.168.178.18:62249 (via ICE) (type 00, seq 020194, ts 004320, len 000160)
Sent RTP packet to 192.168.178.18:62249 (via ICE) (type 00, seq 020195, ts 004480, len 000160)
10:58:41.509 stuse0x7f970c0 !Response cache deleted
10:58:41.509 stun_session.c tdata 0x7f96fc02cac8 destroy request, force=0, tsx=(nil)
Sent RTP packet to 192.168.178.18:62249 (via ICE) (type 00, seq 020204, ts 005920, len 000160)
10:58:41.519 stuse0x7f970c0 Response cache deleted
Надеюсь, кто-нибудь сможет указать мне направление или кто-то столкнулся с той же проблемой и готов поделиться своими знаниями.
Для получения более подробной информации обращайтесь ко мне.
Заранее спасибо.
решение1
Конфигурация и настройка вызова выглядят ОК. Ответ 200 OK было бы очень важно увидеть. Также вам следует включить журналы webrtc в браузере и проверить их (или отправить здесь), чтобы мы могли увидеть, куда он на самом деле отправляет (закодированный DTLS) SRTP.
Вот подробное описаниеНастройка WebRTC в Asterisk 13.
Также, возможно, стоит попробовать запустить asterisk на публичном адресе (или дважды проверить все его частные IP-адреса/публичные IP-адреса/конфигурации NAT), поскольку по умолчанию он попытается обнаружить и использовать ваш публичный IP-адрес в сигнализации SIP.