Introducción a Asterisk

74
Introducción a VoIP y Asterisk Saúl Ibarra Corretgé

description

Introducción a Asterisk y estudio de un caso práctico: estudiantes que se van de ERASMUS.

Transcript of Introducción a Asterisk

Page 1: Introducción a Asterisk

Introducción a VoIP y Asterisk

Saúl Ibarra Corretgé

Page 2: Introducción a Asterisk

Antes de empezar

● Conocimientos previos recomendados:– Manejo básico de la consola de GNU/Linux.– Interés– Ganas de aprender

● ¿Qué sabes de Asterisk?– ¿Lo has utilizado?

Saúl Ibarra Corretgé - http://www.saghul.net

Page 3: Introducción a Asterisk

Introducción a VoIP

Saúl Ibarra Corretgé - http://www.saghul.net

Page 4: Introducción a Asterisk

VoIP en generalVoIP: Características Principales

● Se utiliza una única red. Si dos empresas están unidas a través de Internet, ¿ Porqué no aprovecharlo ?

● Se administra una única red.

● Estándares abiertos e internacionales. Inter-operabilidad, Bajada de precios en proveedores y fabricantes de hardware VoIP.

● Calidad: Es posible conseguir la misma calidad, de hecho hoy por hoy, el 40% de las llamadas de las grandes operadoras se encaminan por VoIP.

● Fiabilidad: En LAN, se puede lograr una gran fiabilidad. En Internet también, pero existen quizás demasiados factores. (QoS, NAT)

● Coste: Instalación sobre red existente, precios de llamadas.

Saúl Ibarra Corretgé - http://www.saghul.net

Page 5: Introducción a Asterisk

VoIP en general (2)

VoIP: Problemas

● NAT: El cáncer de la VoIP. Distintos tipos, no es fácilmente manejable.

● QoS: Necesidad de ofrecer calidad de servicio, al ser la voz crítica en tiempo real.

● Latencia: Tiempo que tarda la voz en llegar al destino.

● Jitter: Variación de la latencia.

● Ancho de banda: En España conexiones asimétricas. El ancho de banda es muy caro.

Saúl Ibarra Corretgé - http://www.saghul.net

Page 6: Introducción a Asterisk

Terminología Básica

Saúl Ibarra Corretgé - http://www.saghul.net

Page 7: Introducción a Asterisk

Telefonía● PSTN: Public Switched Telephony Network.

● FXS: Foreign eXchange Station.

– Lo que hay en nuestra pared.– Alimenta dispositivos.– Utiliza señalización FXO.

● FXO: Foreign eXchange Office.

– El conector de nuestro teléfono donde entra la línea.

– Recibe alimentación.– Utiliza señalización FXS.

Saúl Ibarra Corretgé - http://www.saghul.net

Page 8: Introducción a Asterisk

Redes y protocolos● LAN, WAN, ...

● Protocolos:

– Capa de Transporte:● TCP● UDP

– Capa de Aplicación:● SIP: Session Initiation Protocol● IAX2: Inter Asterisk eXchange

Saúl Ibarra Corretgé - http://www.saghul.net

Page 9: Introducción a Asterisk

El protocolo SIP

Saúl Ibarra Corretgé - http://www.saghul.net

Page 10: Introducción a Asterisk

El protocolo SIP● Protocolo de Inicio de Sesión (Session Initiation Protocol)

● Un protocolo de señalización.

● Legible por el ser humano, similar a HTTP.

● Es principalmente un protocolo de señalización de capa de aplicación para iniciación, modificación y terminación de sesiones de comunicación multimedia entre usuarios.

● Principales elementos implicados:

– User Agent (Usuario)

– Registrar y SIP Proxy

● El sector de la VoIP tiende globalmente hacia SIP.

Saúl Ibarra Corretgé - http://www.saghul.net

Page 11: Introducción a Asterisk

El protocolo SIP (2)● Capacidades de SIP:

– Localización del usuario.

– Disponibilidad del usuario: determinación de la voluntad del receptor de la llamada de participar en las comunicaciones.

– Capacidad del usuario: Determinación del medio y de sus parámetros.

– Gestión de la sesión: transferencia, terminación de sesiones, modificación de los parámetros de la sesión desde el propio 'User Agent'.

● En SIP, el usuario es el 'dueño' de su sesión.

● Contrasta con el concepto de “centralita”.

Saúl Ibarra Corretgé - http://www.saghul.net

Page 12: Introducción a Asterisk

El protocolo SIP (3)

Saúl Ibarra Corretgé - http://www.saghul.net

● El protocolo SIP es de forma nativa “peer to peer”: 2 User Agents pueden establecer una sesión entre sí:

● Dos Canales:

– Señalización(UDP 5060): Establecimiento, Negociación,Fin...)

– Streaming RTP (UDP 10000-20000 normalmente) y control RTCP.

Page 13: Introducción a Asterisk

El protocolo IAX2

Saúl Ibarra Corretgé - http://www.saghul.net

Page 14: Introducción a Asterisk

IAX2

Saúl Ibarra Corretgé - http://www.saghul.net

● Inter Asterisk eXchange v2.

● Protocolo exclusivo para enlaces entre Asterisk, aunque hay algunos hardphones IAX2 (Atcom).

● Los streams de audio y la señalización viajan por el mismo puerto: 4569 UDP.

● Protocolo binario, NO basado en texto.

● No tiene problemas con NAT!!

Internet Datos + Señalización

Page 15: Introducción a Asterisk

IAX2 (2)

Saúl Ibarra Corretgé - http://www.saghul.net

● IAX2 trunking:

– Es posible enviar varias conversaciones por el mismo flujo, lo cual supone un importante ahorro de ancho de banda (overhead de la capas IP y transporte UDP).

● Encriptación:

– AES 128 ??● Autenticación

– MD5

– Texto en claro (plaintext)

– RSA● Necesita una fuente de tiempo: Zaptel (ztdummy)

Page 16: Introducción a Asterisk

¿y Skype?

Saúl Ibarra Corretgé - http://www.saghul.net

Page 17: Introducción a Asterisk

Skype

Saúl Ibarra Corretgé - http://www.saghul.net

● Ventajas:

– Multiplataforma.

– Codec.

– Uso generalizado.

– P2P.

– SkypeOut.

● Desventajas:

– Espiando al usuario.

– Protocolo oscuro y cerrado.

– 0 de interoperabilidad.

– Imposibilidad de utilizar proveedores alternativos.

– “Robo” de ancho de banda.

– P2P ???

Page 18: Introducción a Asterisk

Alternativas a Skype

Saúl Ibarra Corretgé - http://www.saghul.net

● Gizmo Project (http://www.gizmoproject.com/)

– Multiplataforma.

– Interconexión con Astersk.

– Protocolo SIP.

● Open Wengo (http://www.openwengo.org/)

– #include gizmo.h

– Posibilidad de usarlo solo como softphone.

Page 19: Introducción a Asterisk

Alternativas a Skype (2)

Saúl Ibarra Corretgé - http://www.saghul.net

● Servidor Asterisk!!

– Extensiones SIP o IAX2.– Varios proveedores IP.– Conexión con la PSTN.

Page 20: Introducción a Asterisk

Introducción a Asterisk

Saúl Ibarra Corretgé - http://www.saghul.net

Page 21: Introducción a Asterisk

¿Qué es Asterisk?● Software

– Cumple todas las funcionalidades de una centralita tradicional y más.

– Open Source.

– “Asterisk is an OpenSource Multiprotocol Modular PBX”

● Distintos tipos de uso

– Para uso doméstico.

– Uso empresarial (ABE)

– Operadores de telefonía IP.

– etc...Saúl Ibarra Corretgé - http://www.saghul.net

Page 22: Introducción a Asterisk

Funcionalidades de Asterisk● Características típicas de centralita:

– Transferencias

– Música en espera

– ...

● Multiprotocolo y OpenSource!!

● Extensiones, DIDs para usuarios.

● Buzones de voz, desvíos de llamada, follow-me, ...

● Colas y agentes.

● Menús IVR.

● Protocolos: SIP, IAX2, H.323, MGCP, ...

● PSTN: T1/E1, ISDN BRI, FXO/FXS.

● Soporte de vídeo (Asterisk 1.6: “the video release”).

Saúl Ibarra Corretgé - http://www.saghul.net

Page 23: Introducción a Asterisk

Arquitectura de Asterisk

Saúl Ibarra Corretgé - http://www.saghul.net

Page 24: Introducción a Asterisk

Arquitectura de Asterisk● Asterisk es muy modular.

● Nos permite ajustarlo a nuestras necesidades (escalabilidad).

– Asterisk en dispositivos empotrados.

Saúl Ibarra Corretgé - http://www.saghul.net

Page 25: Introducción a Asterisk

Arquitectura de Asterisk (2)

Saúl Ibarra Corretgé - http://www.saghul.net

Canales

Canal SIP Canal IAX2 Canal ZAP

PBX CoreCDR Aplicaciones y funciones

Recursos Formatos Codecs

CSV

MySQL

Dial

Voicemail

AGI

config

.gsm

.wav

G.729

G.711

Page 26: Introducción a Asterisk

Codecs de audio● Sirven para digitalizar la voz humana.

● Cuando dos dispositivos van a establecer una comunicación, acuerdan el codec a utilizar.

● Factores importantes a la hora de seleccionar un codec:

– Calidad de audio.– Coste computacional.– Gasto de ancho de banda.

● Comparación de ancho de banda utilizado por los codecs. Fuente: Cisco

Saúl Ibarra Corretgé - http://www.saghul.net

Page 27: Introducción a Asterisk

Codecs de audio (2)

Saúl Ibarra Corretgé - http://www.saghul.net

Codec & Bit Rate (Kbps)

Bandwidth Ethernet (Kbps)

G.711 (64 Kbps) 87.2 Kbps

G.729 (8 Kbps) 31.2 Kbps

G.723.1 (6.3 Kbps) 21.9 Kbps

G.723.1 (5.3 Kbps) 20.8 Kbps

G.726 (32 Kbps) 55.2 Kbps

G.726 (24 Kbps) 47.2 Kbps

G.728 (16 Kbps) 31.5 Kbps

Page 28: Introducción a Asterisk

Codecs de audio (3)● Los proveedores VoIP suelen trabajar en g729,

que consume muy poco ancho de banda y no sería viable utilizar g711 por ejemplo.

● PERO g729 no es libre :(

● Cada licencia de g729 para un canal = 10$

● Hay una implementación que puede utilizarse con fines no lucrativos/educacionaleshttp://asterisk.hosting.lv/

● Para comprobar los costes del transcoding:*CLI>core show translation

Saúl Ibarra Corretgé - http://www.saghul.net

Page 29: Introducción a Asterisk

Llamadas en Asterisk

Saúl Ibarra Corretgé - http://www.saghul.net

Dispositivo que origina la llamada: SIP, ZAP, IAX2, ...

Receptor de la llamada.Asterisk recoge la

llamada y la pocesa su lógica de enrutado (dialplan). Después se encamina al destino.

En una llamada hay 2 canales: el que origina la llamada y el que la recibe.

Page 30: Introducción a Asterisk

AstChannels: La mágia● Si asterisk es multiprotocolo, ¿como se realiza

una llamada entre 2 dispositivos de distinta tecnología?

● Hay 4 canales!! 2 dependientes de la tecnología utilizada y 2 AstChannels.

● Asterisk crea los AstChannels para poder llevar a cabo el bridging.

– Transferencias.– Parking.

Saúl Ibarra Corretgé - http://www.saghul.net

Page 31: Introducción a Asterisk

Bridging

Saúl Ibarra Corretgé - http://www.saghul.net

Canal dependiente de la tecnología. SIP, ZAP, IAX2,...

Canales independientes de la tecnología. Asterisk los genera y lleva a cabo el mecanismo de “bridging”.

Canal dependiente de la tecnología. SIP, ZAP, IAX2,...

Page 32: Introducción a Asterisk

Canales VoIP en Asterisk● Antes de profundizar en el protocolo SIP o IAX2,

definiremos unos conceptos comunes que maneja Asterisk.

● Peers, users y friends:

– Asterisk HACE una llamada A UN “peer”.

– Asterisk RECIBE una llamada DE un “user”.

– Un “friend” es ambas cosas.

– Concepto de “user” en desuso. Se utilizan “peers” y “friends”.

Saúl Ibarra Corretgé - http://www.saghul.net

Page 33: Introducción a Asterisk

Canales VoIP en Asterisk (2)● Proceso de registro:

– Un dispositivo informa a Asterisk sobre su ubicación (dirección IP y puerto)

– Solo es necesario registrarse con Asterisk si Asterisk no sabe donde esta el dispositivo (host=dynamic).

– El registro expira, y se vuelve a informar de la ubicación.

● Autenticación:

– Necesaria para realizar una llamada. (¿o no?)

– Pueden realizarse llamadas sin registrarse pero no sin autenticarse.

– El registro implica autenticación, para que Asterisk mande las llamadas a la IP que se le ha dicho.

Saúl Ibarra Corretgé - http://www.saghul.net

Page 34: Introducción a Asterisk

Canales VoIP en Asterisk (3)● Puertos y protocolos:

– En IAX2 todo viaja por el mismo puerto: 4569 UDP.

– En SIP, la señalización por el puerto 5060 UDP y los streams de audio y video con el protocolo RTP por puertos aleatorios (rtp.conf) UDP.

Saúl Ibarra Corretgé - http://www.saghul.net

Page 35: Introducción a Asterisk

Building “The ERASMUS Survival Kit”

Saúl Ibarra Corretgé - http://www.saghul.net

Page 36: Introducción a Asterisk

Esquema

Saúl Ibarra Corretgé - http://www.saghul.net

Page 37: Introducción a Asterisk

Instalando Asterisk

Saúl Ibarra Corretgé - http://www.saghul.net

Page 38: Introducción a Asterisk

Antes de instalar...● Factores a tener en cuenta antes de instalar

Asterisk:

– Número de llamadas simultáneas.– Interrupciones.– Transcoding.

● Necesitamos que el servidor este completamente dedicado a Asterisk

– Nada de X.– Ningún servicio que no sea estrictamente

necesario.

Saúl Ibarra Corretgé - http://www.saghul.net

Page 39: Introducción a Asterisk

Librerías necesarias● Para poder compilar Asterisk tendremos que

instalar lo siguiente como mínimo:

#apt­get install bison libncurses5­dev libnewt­dev zlib1g­dev libssl­dev initrd­tools procps linux­headers­$(uname ­r) build­essential

● Algunos módulos requieren librerías especiales:

– El módulo chan_gtalk necesita la librería iksemel.

Saúl Ibarra Corretgé - http://www.saghul.net

Page 40: Introducción a Asterisk

Compilando Asterisk● Primero descargamos los ficheros necesarios:#mkdir asterisk

#cd asterisk

#wget http://downloads.digium.com/pub/asterisk/asterisk­1.4­current.tar.gz

#wget http://downloads.digium.com/pub/asterisk/asterisk­addons­1.4­current.tar.gz

#wget http://downloads.digium.com/pub/zaptel/zaptel­1.4­current.tar.gz

● Compilamos por orden:– Zaptel

– Asterisk

– Asterisk-Addons (opcional)Saúl Ibarra Corretgé - http://www.saghul.net

Page 41: Introducción a Asterisk

Compilando Asterisk (2)

Saúl Ibarra Corretgé - http://www.saghul.net

#tar ­zxvf zaptel­1.4­current.tar.gz

#cd zaptel­1.4­current

#./configure

#make menuselect

#make

#make install

#modprobe ztdummy #tar ­zxvf asterisk­1.4­current.tar.gz

#cd asterisk­1.4­current

#./configure

#make menuselect

#make

#make install

Page 42: Introducción a Asterisk

Compilando Asterisk (3)

Saúl Ibarra Corretgé - http://www.saghul.net

#tar ­zxvf asterisk­addons­1.4­current.tar.gz

#cd asterisk­addons­1.4­current

#./configure

#make menuselect

#make

#make install

● Paso opcional, instala otras aplicaciones:

– Formato MP3.

– CDR en MySQL.

– ...

Page 43: Introducción a Asterisk

Estructura de directorios● /etc/asterisk: Contiene los ficheros de configuración. Si

al compilar ejecutamos “make samples”, tendremos ejemplos en este directorio.

● /usr/lib/asterisk/modules: Contiene los módulos de Asterisk que hemos compilado.

● /var/lib/asterisk: Contiene diferentes “librerías” de Asterisk.

● /var/lib/asterisk/agi-bin: Directorio para contener los AGI.

● /var/spool/asterisk: Directorio para archivos que genera Asterisk (voicemail, etc.)

● /var/log/asterisk: Aquí se guardan los log de Asterisk.

Saúl Ibarra Corretgé - http://www.saghul.net

Page 44: Introducción a Asterisk

Ejecutando Asterisk

● Hay que ser root.● Modificadores de arranque:

– -c: Modo consola. Asterisk se inicia en primer plano.

– -v: Verbose. Cuantas más uves se añadan más mensajes descriptivos veremos en la consola.

– -d: Debug. Cuantas más des, más mensajes de debug.

– -r: Remote console. Si hemos ejecutado Asterisk en segundo plano, nos permite conectarnos al CLI.

Saúl Ibarra Corretgé - http://www.saghul.net

Page 45: Introducción a Asterisk

Ejecutando Asterisk (2)

● Para lanzar Asterisk en segundo plano:#asterisk

● Para lanzar Asterisk en primer plano:#asterisk -vvvvvvvvvvc

● Para conectarnos a la consola si Asterisk esta en segundo plano:#asterisk -vvvvvvvvvvr

Saúl Ibarra Corretgé - http://www.saghul.net

Page 46: Introducción a Asterisk

Ficheros de configuración

Saúl Ibarra Corretgé - http://www.saghul.net

Page 47: Introducción a Asterisk

Configuración del Linksys SPA3102

Saúl Ibarra Corretgé - http://www.saghul.net

Page 48: Introducción a Asterisk

SPA 3102

● Conectarlo a la red (boca WAN) para que coja IP por DHCP.

● Consultar la IP usando el IVR: **** > 110#

● Activar el servidor web en la boca WAN:**** > 7932# >1# > 1

● Acceder con el navegador.

Saúl Ibarra Corretgé - http://www.saghul.net

Page 49: Introducción a Asterisk
Page 50: Introducción a Asterisk

SPA 3102

● Deshabilitar el router:

– Entrar como Admin > Advanced.– Pestaña Router > LAN Setup– Networking Service: Bridge Mode

Saúl Ibarra Corretgé - http://www.saghul.net

Page 51: Introducción a Asterisk
Page 52: Introducción a Asterisk

SPA 3102● Configurar la FXO:

– Pestaña Voice > PSTN Line.

– En la sección “Proxy and Registration”, en el campo “Proxy” ponemos la dirección IP de nuestro Asterisk.

– En la sección “Subscriber Information”, en el campo “User ID” ponemos el nombre de la cuenta SIP que hemos creado en Asterisk y en el campo “Password” la contraseña.

– En la sección de “Dialplans” ponemos lo siguiente en el DialPlan 2: (S0<:s>)

Saúl Ibarra Corretgé - http://www.saghul.net

Page 53: Introducción a Asterisk

SPA 3102● Configurar la FXO:

– En la sección “PSTN-To-VoIP-Gateway Setup ” ponemos:

● PSTN-To-VoIP Gateway Enable: Yes● PSTN Caller Auth Method: None● PSTN Ring Thru Line 1: no● PSTN CID For VoIP CID: yes● PSTN Caller Default DP: 2

– En la sección “FXO timer values”, ponemos “PSTN Answer Delay: 2″, o el número que queramos, esto es el tiempo que se esperará antes de descolgar.

Saúl Ibarra Corretgé - http://www.saghul.net

Page 54: Introducción a Asterisk
Page 55: Introducción a Asterisk
Page 56: Introducción a Asterisk
Page 57: Introducción a Asterisk

SPA 3102● Configurar la FXS:

– Pestaña Voice > Line 1.

– En la sección “Proxy and Registration”, en el campo “Proxy” ponemos la dirección IP de nuestro Asterisk.

– En la sección “Subscriber Information”, en el campo “User ID” ponemos el nombre de la cuenta SIP que hemos creado en Asterisk y en el campo “Password” la contraseña.

Saúl Ibarra Corretgé - http://www.saghul.net

Page 58: Introducción a Asterisk
Page 59: Introducción a Asterisk

Demo

Saúl Ibarra Corretgé - http://www.saghul.net

Page 60: Introducción a Asterisk

Anexo A: Softphones

Saúl Ibarra Corretgé - http://www.saghul.net

Page 61: Introducción a Asterisk

X-Lite

Saúl Ibarra Corretgé - http://www.saghul.net

● Protocolo SIP

● Soporte STUN

● g711a/u, gsm, ilbc, speex

● Windows, GNU/Linux, MacOSX

Page 62: Introducción a Asterisk

Zoiper (antes Idefisk)

Saúl Ibarra Corretgé - http://www.saghul.net

● Protocolo SIP e IAX2

● Soporte STUN

● g711a/u, gsm, ilbc, speex, g729 (version BIZ)

● Windows, GNU/Linux, MacOSX

Page 63: Introducción a Asterisk

Cubix

Saúl Ibarra Corretgé - http://www.saghul.net

● Protocolo SIP e IAX2

● Soporte STUN

● g711a/u, gsm, ilbc, speex, g729

● Windows

Page 64: Introducción a Asterisk

DIAX

Saúl Ibarra Corretgé - http://www.saghul.net

● Protocolo IAX2

● g711a/u, gsm, ilbc, speex

● Windows

Page 65: Introducción a Asterisk

KIAX

Saúl Ibarra Corretgé - http://www.saghul.net

● Protocolo IAX2

● g711u, gsm, speex

● Windows, Linux, *BSD

Page 66: Introducción a Asterisk

Twinkle

Saúl Ibarra Corretgé - http://www.saghul.net

● Protocolo SIP

● g711a/u, gsm, speex, g726

● GNU/Linux (Qt)

Page 67: Introducción a Asterisk

Ekiga

Saúl Ibarra Corretgé - http://www.saghul.net

● Protocolo SIP e IAX2.

● g711a/u, gsm, speex, g726.

● GNU/Linux.

Page 68: Introducción a Asterisk

Anexo B: Links de interés

Saúl Ibarra Corretgé - http://www.saghul.net

Page 69: Introducción a Asterisk

Links

Saúl Ibarra Corretgé - http://www.saghul.net

http://www.asterisk.org/ (web odicial de Asterisk)

http://www.saghul.net/blog/documentos/ (material de la charla y curso de 20h)

http://www.voip­info.org/ (todo sobre VoIP)

http://planet.voz­ip.com/ (planet sobre VoIP)

http://www.asteriskguru.com/ (tutoriales, etc...)

http://www.asterisk.org/doxygen/ (documentación de developers)

http://www.asterisk­es.org/ (wiki de usuarios hispanihablantes)

http://groups.google.com/group/asterisk­es/ (lista de correo Asterisk­ES)

http://www.voz­ip.com (tienda de VoIP)

Page 70: Introducción a Asterisk

Anexo C: Castellanizar Asterisk

Saúl Ibarra Corretgé - http://www.saghul.net

Page 71: Introducción a Asterisk

Castellanizar Asterisk● Incluir la línea “language=es” en los ficheros de

configuración. (sip.conf, iax.conf, extensions.conf, voicemail.conf, ...)

● Editar el fichero indications.conf, poniendo “country=es”.

● Ficheros de sonido en castellano:

– http://www.voipnovatos.es/voces/

– Descargamos en formato gsm, alaw, g729, ...

– Editar arbol de directorios (todo cuelga de “es”)

– Copiar a /var/lib/asterisk/sounds/es/

Saúl Ibarra Corretgé - http://www.saghul.net

Page 72: Introducción a Asterisk

Licencia

Saúl Ibarra Corretgé - http://www.saghul.net

Page 73: Introducción a Asterisk

Licencia

Saúl Ibarra Corretgé - http://www.saghul.net

http://creativecommons.org/licenses/by­nc/2.5/es/

Page 74: Introducción a Asterisk

¡¡GRACIAS A TODOS!!

Saúl Ibarra Corretgé - http://www.saghul.net