WebRTC en asterisco independiente: sin audio

WebRTC en asterisco independiente: sin audio

Después de luchar con Asterisk para WebRTC durante algunas semanas, decidí poner mi problema en este foro. Mi problema es el siguiente:

No recibo audio de WebRTC a los clientes WebRTC. Trabajo en un entorno LAN.

Situación: llamada de JSSIP a JSSIP (mismo cliente) con un servidor Asterisk independiente.

Problema

No hay ningún audio al realizar una llamada del 6001 (JSSIP) al 6002 (JSSIP). Después de un tiempo, algunos paquetes RTP se envían, pero no se reciben. Aproximadamente 40 segundos después de que los paquetes RTP aparecen en los archivos de registro, la llamada finaliza sin ninguna acción humana.

Ambos clientes están en la misma computadora, ambos en Google Chrome, donde uno se ejecuta en modo incógnito. También probamos con 2 portátiles diferentes, pero arrojamos los mismos resultados.

¿Alguien sabe qué causa este problema? También seguí este hilo:http://forums.digium.com/viewtopic.php?f=1&t=90167, pero esto no funcionó para mí. Puede encontrar los archivos de registro y más información a continuación.

Lo que intenté resolver este problema fue debido a varias publicaciones sobre el mismo problema.

  • Ejecute Asterisk detrás de un Proxy (oversip)
  • Webrtc2sip usado, con codificación de medios activada y desactivada.
  • SipML5 usado con RTCwebbreaker, video deshabilitado
  • Establecer un asterisco público (usando la dirección WAN y reenviando el puerto al servidor)
  • Ejecute Asterisk en CentOS
  • FireFox usado

Servidor asterisco:

  • Sistema operativo: Ubuntu 14.04
  • Versión: Asterisk 13.2 y FreePBX 12
  • Dirección IP: 192.168.178.203
  • Puerto websocket: 8088
  • Puerto SIP: 5060

Cliente:

  • Sistema operativo: Windows 8.1
  • Navegador: Chrome Versión 40.0.2214.115 m
  • Dirección IP: 192.168.178.18

Configuraciones:

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

sorbo.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

extensiones.conf

[internal]
exten => 6001,1,Dial(SIP/6001)
exten => 6002,1,Dial(SIP/6002)

Inicio sesión

Registro completo del servidor aquí:http://pastebin.com/qHwzXbbd

Una parte del registro del servidor con la depuración sip y rtp activada.

<------------>
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

Espero que alguien pueda indicarme alguna dirección, o que alguien haya encontrado el mismo problema y esté dispuesto a compartir sus conocimientos.

Para más información, no dudes en preguntarme.

Gracias de antemano.

Respuesta1

La configuración y el establecimiento de la llamada se ven bien. Sería muy importante ver la respuesta de 200 OK. También debe habilitar los registros webrtc en el navegador y verificarlo también (o enviarlo aquí) para que podamos ver dónde está enviando realmente el SRTP (codificado con DTLS).

Aquí hay una descripción detallada sobreConfiguración de WebRTC en Asterisk 13.

También podría valer la pena intentar ejecutar Asterisk en una dirección pública (o verificar toda su configuración de IP privada/IP pública/NAT), porque de forma predeterminada intentará detectar y usar su IP pública en la señalización SIP.

información relacionada