Probando el soporte IPv6 de Asterisk 1.8

Como ya habréis leído por ahí la próxima versión de Asterisk, la 1.8, traerá soporte para IPv6. Gracias a mi buen amigo Mikel «packet tracer» Jimenez dispongo de plena conectividad IPv6 en mi casa, así que hacer una llamada SIP por IPv6 era la siguiente prueba tras ping6. 😉

No quería ensuciar mucho el servidor de SIPdoc (donde realicé las pruebas) así que opté por instalar Asterisk 1.8 con el script live_ast que ya comenté en su día. Resumiendo:

svn co http://svn.asterisk.org/svn/asterisk/branches/1.8 asterisk18
cd asterisk18
cp contrib/scripts/live_ast .
./live_ast configure
./live_ast install
./live_ast samples
./live_ast run -vvvvvvvvvvvvvvc

Tras instalar asterisk modificamos el fichero sip.conf e indicamos que Asterisk escuche en IPv6:

udpbindaddr=::

Si tenemos una IP concreta a la que queremos bindear haríamos lo siguiente:

udpbindaddr=[2001:470:1f12:X:X::1]:5060

¡Ya tenemos el servidor configurado! Para hacer nuestra primera llamada SIP con IPv6 utilizaremos la herramienta pjsua del proyecto PJSIP.

Por defecto PJSIP no se compila con soporte IPv6, así que haremos lo siguiente para descargar y compilar PJSIP:

svn co http://svn.pjsip.org/repos/pjproject/trunk pjsip
cd pjsip
echo "#define PJ_HAS_IPV6 1" > pjlib/include/pj/config_site.h
./configure && make dep && make

La herramienta pjsua se habrá compilado en el directorio pjsip-apps/bin. Nos cambiamos a ese directorio y ya podemos arrancarla:

./pjsua-x86_64-unknown-linux-gnu --ipv6 --no-tcp

pjsua-ipv6

Probemos ha hacer una llamada: pulsamos ‘m’ e introducimos la URI SIP a la que queremos llamar: ‘sip:1000@[2001:470:1f12:286::2]’.

Si hemos dejado el dialplan por defecto deberíamos estar escuchando a Allison Smith y su demo-congrats. ¡A través de IPv6!

asterisk-ipv6

¡Parece que funciona!

INVITE sip:1000@[2001:470:1f12:286::2]:5060 SIP/2.0
Via: SIP/2.0/UDP [2001:470:c846:1:225:ff:feac:6aca]:5060;rport;branch=z9hG4bKPjBcy323TSZVZa86u8GMIV01Zv8wNs1DAE
Max-Forwards: 70
From: ;tag=-3p-SYm.MD6bVaH-8WHegCIArkOYu.9R
To: sip:1000@[2001:470:1f12:286::2];tag=as349aa7db
Contact: 
Call-ID: cWEqE795OfqpixU.l1IavBkTPpgVmX3F
CSeq: 21549 INVITE
Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, SUBSCRIBE, NOTIFY,
REFER, MESSAGE, OPTIONS
Supported: replaces, 100rel, timer, norefersub
Session-Expires: 1800;refresher=uas
Min-SE: 90
Content-Type: application/sdp
Content-Length:   310

v=0
o=- 3490026667 3490026668 IN IP6 2001:470:c846:1:225:ff:feac:6aca
s=pjmedia
c=IN IP6 2001:470:c846:1:225:ff:feac:6aca
t=0 0
a=X-nat:0
m=audio 4030 RTP/AVP 3 101
a=rtcp:4031 IN IP6 2001:470:c846:1:225:ff:feac:6aca
a=rtpmap:3 GSM/8000
a=sendrecv
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15

--end msg--
 21:51:09.178   pjsua_core.c  RX 659 bytes Response msg
100/INVITE/cseq=21549 (rdata0x1f61238) from UDP
2001:470:1f12:286::2:5060:
SIP/2.0 100 Trying
Via: SIP/2.0/UDP [2001:470:c846:1:225:ff:feac:6aca]:5060;branch=z9hG4bKPjBcy323TSZVZa86u8GMIV01Zv8wNs1DAE;received=2001:470:c846:1:225:ff:feac:6aca;rport=5060
From: ;tag=-3p-SYm.MD6bVaH-8WHegCIArkOYu.9R
To: sip:1000@[2001:470:1f12:286::2];tag=as349aa7db
Call-ID: cWEqE795OfqpixU.l1IavBkTPpgVmX3F
CSeq: 21549 INVITE
Server: Asterisk PBX SVN-branch-1.8-r281052
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY,
INFO, PUBLISH
Supported: replaces, timer
Require: timer
Session-Expires: 1800;refresher=uas
Contact: 
Content-Length: 0


--end msg--
 21:51:09.180   pjsua_core.c  RX 981 bytes Response msg
200/INVITE/cseq=21549 (rdata0x1f61238) from UDP
2001:470:1f12:286::2:5060:
SIP/2.0 200 OK
Via: SIP/2.0/UDP [2001:470:c846:1:225:ff:feac:6aca]:5060;branch=z9hG4bKPjBcy323TSZVZa86u8GMIV01Zv8wNs1DAE;received=2001:470:c846:1:225:ff:feac:6aca;rport=5060
From: ;tag=-3p-SYm.MD6bVaH-8WHegCIArkOYu.9R
To: sip:1000@[2001:470:1f12:286::2];tag=as349aa7db
Call-ID: cWEqE795OfqpixU.l1IavBkTPpgVmX3F
CSeq: 21549 INVITE
Server: Asterisk PBX SVN-branch-1.8-r281052
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY,
INFO, PUBLISH
Supported: replaces, timer
Require: timer
Session-Expires: 1800;refresher=uas
Contact: 
Content-Type: application/sdp
Content-Length: 293

v=0
o=root 1289948586 1289948587 IN IP6 2001:470:1f12:286::2
s=Asterisk PBX SVN-branch-1.8-r281052
c=IN IP6 2001:470:1f12:286::2
t=0 0
m=audio 11994 RTP/AVP 3 101
a=rtpmap:3 GSM/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=silenceSupp:off - - - -
a=ptime:20
a=sendrecv

Dejo pendiente para otro día el montaje de IPv6 que realicé con Mikel en el servidor de SIPdoc y mi casa.

Happy IPv6 calling!

4 thoughts on “Probando el soporte IPv6 de Asterisk 1.8

  1. Gracias por enterarnos de esta noticia en la que podemos constatar que la tecnología de la telefonía asterisk crece a pasos agigantados. Definitivamente hacer llamadas por este sistema no es como lo plantea la tecnología tradicional, sino que es una nueva manera de vivir las comunicaciones voz a voz. Estos códigos me parece que están muy bien distribuidos y explicados.

  2. Hola , estoy intentado hacer una audioconferencia utilizando pjsua . Lo he instalado y compilado sin problemas en mi ordenador , el problema es que no sé como hacer o transmitir un streaming de audio. ¿ Hace falta tener algún servidor Asterisk instalado ?

    Muchas gracias
    Gorka

  3. @Gorka, puedes hacer llamadas P2P entre 2 PJSUA, llamando de IP a IP. No es necesario tener un Asterisk para esto.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *