ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA IGNACIO LUENGO NARANJO

Tamaño: px
Comenzar la demostración a partir de la página:

Download "ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA IGNACIO LUENGO NARANJO"

Transcripción

1 ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA IGNACIO LUENGO NARANJO TELEFONÍA DE CÓDIGO ABIERTO ASTERISK: CASO PRÁCTICO DE LA IMPLANTACIÓN DE UN SISTEMA DE TELEFONÍA VOIP EN UNA EMPRESA Realizado por IGNACIO LUENGO NARANJO Dirigido por ALEJANDRO CARRASCO MÚÑOZ Departamento TECNOLOGÍA ELECTRÓNICA Sevilla, mayo 2009

2 ÍNDICE ÍNDICE Introducción Prefacio Objetivos I. Entorno tecnológico de la VoIP 1. Protocolos VoIP Introducción Protocolo de inicio de sesión: SIP Protocolos asociados a SIP Real Time Protocol (RTP) Real-Time Control Protocol (RTCP) Session Description Protocol (SDP) Elementos de una red SIP Agente de usuario Servidores SIP Tipos de mensajes SIP Formato y tipo de las peticiones SIP Formato y tipo de las respuestas SIP Formato y campos de las cabeceras SIP Direccionamiento en SIP Mecanismos de seguridad en SIP Intercambio de mensajes en el establecimento de una sesión SIP Problemas de SIP al atravesar dispositivos NAT Problemas con la señalización SIP Problemas con el flujo RTP Protocolo H Introducción Protocolos asociados a H Protocolo H Protocolo H Protocolos RTP y RTCP Elementos de una red H Gatekeeper Terminal Gateway o pasarela MCU (Multipoint Control Unit) Direccionamiento en H La señalización en H Fases de una llamada H Fase 1: Establecimiento de la conexión Fase 2: Comunicación inicial e intercambio de capacidades Fase 3: Establecieminto de la comunicación Fase 4: Servicios de llamada Fase 5: Terminación de la llamada Protocolo IAX Introducción Fases de una llamada utilizando el protocolo IAX Fase 1: Establecimiento de la llamada Fase 2: Flujo de datos o flujo de audio Telefonía de código abierto Asterisk i

3 ÍNDICE Fase 3: Liberación de la llamada o desconexión Codificadores-Decodificadores: Códecs Introducción Proceso de conversión analógico-digital Fase 1: Muestreo Fase 2: Cuantificación Técnica de cuantificación Uniforme Técnica de cuantificación No uniforme Técnica de cuantificación Logarítmica Técnica de cuantificación Vectorial Fase 3: Codificación Tipos de codificadores de voz Codificadores de la forma de onda Codificadores en el dominio del tiempo Codificadores en el dominio de la frecuencia Vocoders Codificadores híbridos Tabla Resumen de los principales códecs de audio Influencias en el Ancho de Banda consumido por una comunicación Influencia del códec en el ancho de banda Influencia de las capas 2 y 3 en el ancho de banda Calidad de servicio (QoS, Quality of Service) Introducción Factores que afectan a la calidad de servicio Códec utilizado en la comunicación Retardo o Latencia Retardo por causa del algoritmo Retardo por causa de la paquetización Retardo por causa de la serialización Retardo por causa de la propagación Retardo por causa de los componentes Problemas causados por el Retardo: Eco y Solapamiento Jitter Pérdida de paquetes Protocolos para mejorar la calidad de servicio p Diffserv q VLAN Intserv (Integrated Service) y RSVP MPLS II. Plataforma Asterisk 4. Asterisk Qué es un PBX? Qué es Asterisk? Arquitectura de Asterisk Concepto de Canales en Asterisk Telefonía de código abierto Asterisk ii

4 ÍNDICE 4.5 Asterisk en diferentes escenarios Llamadas internas en nuestra oficina Conectar nuestra oficina con Internet Conectar nuestra oficina con la RTB Tipos de terminales VoIP usados con Asterisk Formas de conectar Asterisk con la Red Telefónica Básica Conexión mediante una línea de teléfono básica Conexión mediante una línea RDSI Recorrido por el mercado actual de la telefonía de código abierto Nivel 1: Plataformas de telefonía Nivel 2: Soluciones gratuitas configurables Nivel 3: Soluciones de pago llave en mano III. Caso Práctico: Implantación de un sistema de telefonía VoIP en una empresa utilizando Asterisk. 5. Descripción del Caso Práctico Introducción Descripción del sistema de telefonía actual Requisitos de la empresa al nuevo sistema de telefonía Requisito 1: Extensiones y buzones de voz Requisito 2: Mensajería unificada Requisito 3: Reutilización de las líneas analógicas Requisito 4: Incorporación de dos líneas móviles Requisito 5: Menú de bienvenida con opciones Requisito 6: Gestión de llamadas del Departamento Técnico Requisito 7: Gestión de llamadas para los Departamentos Comercial y de Desarrollo Requisito 8: Servicios comunes de telefonía Soluciones a los requisitos planteados Solución al Requisito 1: Extensiones y buzones de voz Solución al Requisito 2: Mensajería unificada Solución al Requisito 3: Reutilización de las líneas analógicas Solución al Requisito 4: Incorporación de dos líneas móviles Solución al Requisito 5: Menú de bienvenida con opciones Solución al Requisito 6: Gestión de llamadas del Departamento Técnico Solución al Requisito 7: Gestión de llamadas para los Departamentos Comercial y de Desarrollo Solución al Requisito 8: Servicios comunes de telefonía Arquitectura del nuevo sistema de telefonía Instalación de Asterisk Introducción Consideraciones previas a la instalación de Asterisk Instalación de los componentes hardware, del S.0. y de Asterisk Instalación de las tarjetas analógicas TDM400P Instalación de las interfaces con la red móvil Instalación del sistema operativo Instalación de Asterisk Configuración de Asterisk Telefonía de código abierto Asterisk iii

5 ÍNDICE 7.1 Introducción Cambio de los ficheros de audio del inglés al español Empezar a configurar el Plan de Marcación Contextos Extensiones Prioridades Aplicaciones Ejemplo: Utilidad para grabar sonido Configuración del canal Dahdi Verificación de la instalación de las tarjetas TDM400P Configuración de los archivos system.conf y chan_dahdi.conf Utilizar el canal Dahdi para realizar llamadas Configuración del canal SIP Parámetros generales del canal SIP Definición de clientes SIP Configuración del Buzón de voz El archivo voic .conf El buzón de voz en el plan de marcación Configuración del servidor de correo exim Personalizar el mensaje de correo electrónico Variables y funciones Variables Funciones Uso de Expresiones y Macros Expresiones Macros Configuración de servicios avanzados Respuesta de voz interactiva Extensiones estándares Aplicación Background() Distribución automática de llamadas Salas de conferencia Estacionamiento, captura y transferencia de llamadas Estacionamiento de llamadas Captura de llamadas Transferencia de llamadas Configuración de los terminales telefónicos Introducción Configuración del softphone X-Lite Configuración de los teléfonos IP Asignación de una dirección IP mediante DHCP Asignación de una dirección IP estática Configurar los datos de la cuenta SIP mediante la interfaz web Configuración de los teléfonos analógicos Asignar una dirección IP dinámica mediante DHCP Asignar una dirección IP estática Configurar la cuenta SIP mediante la interfaz web Conclusiones Referencias Telefonía de código abierto Asterisk iv

6 ÍNDICE ÍNDICE DE FIGURAS Figura 1. Crecimiento en billones de minutos del tráfico de la telefonía tradicional y VoIP de 1998 a Figura 2. Porcentaje de hogares que usan VoIP en países europeos Figura 3. Pila de protocolos de SIP Figura 4. Tipos de servidores SIP Figura 5. Escenario del ejemplo de registro de un usuario en un servidor Figura 6. Flujo de mensajes al registrarse por primera vez un usuario en un servidor Figura 7. Primera petición de registro Figura 8. Desafío del servidor Figura 9. Segunda petición de registro Figura 10. Respuesta de confirmación Figura 11. Escenario del ejemplo de establecimiento de una sesión SIP Figura 12. Intercambio de mensajes en una sesión SIP Figura 13. Trapecio SIP Figura 14. Invite de Juan a Proxy Figura 15. Reenvio de petición de Proxy 1 a Proxy Figura 16. Reenvio de petición de Proxy 2 a Ana Figura 17. Respuesta bloqueada por el dispositivo NAT Figura 18. Petición y respuesta pasan por el mismo puerto Figura 19. Petición del Proxy bloqueada por el dispositivo NAT Figura 20. Conexión RTP fallida entre los clientes A y B Figura 21. Pila de protocolos de H Figura 22. Proceso de registro en H Figura 23. Gatekeeper H.323 en modo Direct routed Figura 24. Gatekeeper H.323 en modo Gatekeeper routed Figura 25. Escenario de ejemplo de una llamada entre dos terminales Figura 26. Secuencia de mensajes en la fase Establecimiento de la conexión con el Gatekeeper en modo Direct routed Figura 27. Secuencia de mensajes en la fase Establecimiento de la conexión con el Gatekeeper en modo Gatekeeper routed Figura 28. Secuencia de mensajes en la fase Comunicación inicial e intercambio de capacidades Figura 29. Secuencia de mensajes en la fase Establecimiento de la comunicación Figura 30. Secuencia de mensajes en la fase Terminación de la llamada Figura 31. Intercambio de mensajes en una llamada IAX Figura 32. Proceso de muestreo Figura 33. División de la amplitud de la señal en ocho intervalos Figura 34. Longitud total en bits de un paquete IP sobre Ethernet utilizando el códec G Telefonía de código abierto Asterisk v

7 ÍNDICE Figura 35. Índice de satisfacción de los usuarios con respecto a la latencia Figura 36. Subsistemas de Asterisk Figura 37. Canales en Asterisk Figura 38. Asterisk en una red interna Figura 39. Asterisk conectado a Internet Figura 40. Asterisk conectado a la RTB Figura 41. Interfaz del softphone Zoiper Figura 42. Interfaz del softphone X-Lite Figura 43. Modelo Snom Figura 44. Modelo SoundPoint IP 501 de Polycom Figura 45. Modelo S101I IAXy de Digium Figura 46. Modelo Linksys PAP2T Figura 47. Modelo AX800 de Digium con ocho puertos analógicos Figura 48. Interfaces FXS y FXO Figura 49. Modelo Linksys SPA Figura 50. Modelo duobri de Junghanns Figura 51. Modelo BNS80 de Beronet Figura 52. Modelo B410P de Digium Figura 53. Modelo TE120P de Digium Figura 54. Disposición actual del sistema telefónico de la empresa Figura 55. Opciones del menú deseadas por la empresa Figura 56. Arquitectura del nuevo sistema telefónico de la empresa Figura 57. Tarjeta Digium TDM400P Figura 58. Montaje de la tarjeta TDM400P en el bus PCI Figura 59. Terminal fijo celular Ericsson F250m Figura 60. Terminal fijo celular Audiotel Celline III Figura 61. Lugar donde insertar la tarjeta SIM en el terminal fijo celular Ericsson F250m Figura 62. Lugar donde insertar la tarjeta SIM en el terminal fijo celular Audiotel Celline III Figura 63. Pantalla inicial del proceso de instalación de Debian Figura 64. Resultado de ejecutar lsmod en el sistema Figura 65. Resultado de ejecutar la herramienta dahdi_scan Figura 66. Resultado de ejecutar cat /proc/interrupts en el sistema Figura 67. Resultado de ejecutar la herramienta dahdi_test Figura 68. Atributos rxgain y txgain Figura 69. Resultado de ejecutar la herramienta dahdi_cfg vvv Figura 70. Correo electrónico enviado por Asterisk Figura 71. Funcionamiento de una distribución automática de llamadas Figura 72. Representación de una sala de conferencia con tres usuarios Figura 73. El Usuario 2 aparca la llamada pulsando # Telefonía de código abierto Asterisk vi

8 ÍNDICE Figura 74. El usuario 2 recupera la llamada aparcada marcando el número que la centralita le ha indicado, es este caso Figura 75. Usuario 1 intenta llamar a un teléfono donde no hay nadie Figura 76. Usuario 2 marca *8 capturando la llamada y establece comunicación con Usuario Figura 77. Usuario 2 realiza una transferencia ciega hacia el Usuario 3 con etensión Figura 78. La extensión 2100 comienza a sonar, si el Usuario 3 descolgase se establecería comunicación con Usuario Figura 79. Usuario 2 realiza una transferencia atendida hacia el Usuario 3 con etensión Figura 80. Usuario 2 entra en comunicación con Usuario 3 mientras Usuario 1 está en espera Figura 81. Al colgar el usuario 2, se establece comunicación entre los usuarios 1 y Figura 82. Al colgar el usuario 3, el usuario 2 retoma la comunicación con el usuario Figura 83. Interfaz de X-Lite y pantalla SIP Accounts Figura 84. Pantalla para la configuración de los datos de un usuario SIP en X-Lite Figura 85. Modelo SPA922 de Linksys Figura 86. Modelo BudgetTone de Grandstream Figura 87. Interfaz web del modelo Linksys SPA Figura 88. Interfaz web del modelo Grandstream Budgedtone Figura 89. Conexión de un teléfono analógico con el adaptador Linksys PAP Figura 90. Interfaz web del modelo Linksys PAP ÍNDICE DE TABLAS Tabla 1. Datos de los participantes en el ejemplo de registro de un usuario en un servidor Tabla 2. Datos de los participantes en el ejemplo de establecimiento de una sesión SIP Tabla 3. Características de los códecs más utilizados Tabla 4. Consumo de ancho de banda de los códecs más usados Tabla 5. Consumo de ancho da banda total de los códecs más habituales Tabla 6. Retardo de los principales códecs Tabla 7. Retardo de los principales códecs para un tiempo de paquetización de 20ms Tabla 8. Retardo dependiendo de la velocidad del enlace Telefonía de código abierto Asterisk vii

9 Introducción Introducción Prefacio La telefonía IP o también llamada voz sobre IP (VoIP, Voice over IP), ha revolucionado el mundo de las telecomunicaciones en los últimos años. Un mercado, el de la telefonía, que se encontraba copado por grandes compañías de origen estatal y que usaba tecnologías que habían evolucionado muy poco a lo largo de estos últimos cien años, ha visto la irrupción de esta nueva tecnología de comunicacion. Sin embargo, existe todavía un gran recelo respecto al uso de esta tecnología y mucha gente piensa que esta revolución es más un eslogan comercial que una realidad. Si atendemos a la siguiente figura 1, podemos ver cual ha sido la evolución de la VoIP y de la telefonía clásica en billones de minutos a lo largo de los diez últimos años: Figura 1. Crecimiento en billones de minutos del tráfico de la telefonía tradicional y VoIP de 1998 a Como podemos observar, aunque el volumen de minutos de la telefonía clásica supera claramente al de VoIP actualmente, la tendencia hace apuntar que esta última sobrepasará en unos años a la telefonía tradicional. 1 Datos obtenidos del informe de Telegeography, lo cuales pueden ser consultados en el siguente enlace: Telefonía de código abierto Asterisk 8

10 Introducción Tomando los datos que aparecen en la Figura 1, en el año 2007 el crecimiento que presentó la telefonía clásica fue del 10% mientras que el de la voz sobre IP fue del 28%. En Europa, el creciemiento tambien ha ido aumentando significativamente ya que si al final del año 2004 el equivalente al 1% de los hogares europeos estaba suscrito a un servicio de VoIP, al final del año 2007 esta cifra se situaba en el 17%. Estas cifras nos revelan sin duda que la telefonía IP no es una promesa sino una realidad constatable. Si bien, como podemos apreciar en la Figura 2 2, en Europa la penetración de la VoIP depende mucho de un país a otro. Figura 2. Porcentaje de hogares que usan VoIP en países europeos. Así, mientras en Francia el número de hogares que utilizan VoIP es del 43%, en de paises como España no llega al 2%. Esta irrupción de la telefonía IP en el mundo de las comunicaciones ha propiciado la llegada de nuevos operadores (como Skype, Voipbuster, etc) que en un escenario controlado por grandes compañias de telecomunicaciones empiezan a ganar terreno. Sin embargo, los operadores tradicionales siguen siendo los principales proveedores de VoIP debido entre otras cosas a su posición dominante en el mercado. 2 Datos obtenidos del informe de Telegeography lo cuales pueden ser consultados en el siguente enlace: Telefonía de código abierto Asterisk 9

11 Introducción Además de la llegada de nuevos operadores, la voz sobre IP ha propiciado también la creación de plataformas de telefonía de código abierto bajo licencia GPL (General Public Licence), las cuales proporcionan la base para la creación de soluciones de telefonía a medida y a bajo coste. Cualidades en las que radica la fuerza de estas plataformas. Dentro de estas plataformas, la que ha irrumpido con más fuerza es sin duda Asterisk, la cual es a su vez el nombre de la centralita telefónica desarrollada con esta plataforma. Fue creada en 1999 por Mark Spencer como alternativa a las soluciones de telefonía tradicional que dominaban el mercado de esos años. Actualmente Aserisk cuenta con la comunidad de desarrolladores más numerosa y activa de todas las plataformas existentes, con más de 400 contribuidores activos en el último año y unos participando en foros. Nada más que en el año 2008, se han contabilizado un total de de descargas de Asterisk, un 50% más que en el año 2008 y en el 2009 todo augura a que la cifra seguirá creciendo 3. 3 Datos obtenidos del informe de Frost & Sullivan para Digium, el cual puede ser consultado en el enlace: https://www.digium.com/en/supportcenter/documentation/viewdocs/telephony. Telefonía de código abierto Asterisk 10

12 Introducción Objetivos Este documento pretende ser una guia de iniciación a la plataforma de telefonía de código abierto Asterisk. Para ello se han identificado los siguientes objetivos: 1) Descripción del entorno tecnológico de la telefonía IP: En un entorno tecnológico tan heterogéneo como el de las comunicaciones, y particularmente el de la telefonía IP por ser encuentro de dos mundos hasta ahora independientes: el mundo IP y el de los estándares del mundo de las telecomunicaciones, es necesario identificar las tecnológias que en ella participan y la función que desempeñan. Este objetivo principal, comprende los siguientes puntos: Análisis de los aspectos más relevantes de los protocolos que actualmente dominan las comunicaciones de voz sobre IP poniendo especial énfasis en el protocolo SIP. Descripción del proceso de transformación de una señal analógica en digital así como de los principales codificadores-decodificadores (códecs) que se utilizan en las comunicaiones actuales. Definición del concepto de calidad de servicio y descripción de los problemas por los que se ve afectada negativamente, así como los protocolos diseñados para solucionar algunos de estos problemas. 2) Descripción de la plataforma de telefonía de código abierto Asterisk: Dentro de las plataformas de telefonía de código abierto, describiremos en qué consiste Asterisk y en qué situaciones puede emplearse. A su vez, se comentarán los elementos necesarios de los que debemos disponer dependiendo de las tecnologías con las que deseemos interactuar. 3) Instalación y configuración de Asterisk a través de un caso práctico: A través de un caso práctico, describiremos el proceso completo y detallado de instalación y configuración de Asterisk para dar servicio al nuevo sistema de telefonía de una empresa. Dentro de este objetivo principal, podemos identificar los siguientes puntos: Analizar el sistema actual de telefonía de una empresa y proponer uno nuevo basado en la telefónia IP, aportando las funcionalidades que requieren los requisitos impuestos por la compañía. Telefonía de código abierto Asterisk 11

13 Introducción Describir el proceso de instalación partiendo desde cero de la plataforma Asterisk y de los componentes hardware necesarios para su funcionamiento. Explicar el proceso de configuración de Asterisk paso a paso, introduciendo a medida que se vayan necesitando los conceptos claves para su configuración, haciendo especial hincapié en la sintaxis de su lenguaje de script. Describir el proceso de configuración de los terminales de comunicación de los usuarios para el nuevo sistema de telefonía de la empresa. Telefonía de código abierto Asterisk 12

14 I. Entorno Tecnológico de la VoIP En esta primera parte del documento describiremos el entorno tecnológico donde se encuentra inmersa la telefonía IP. Para ello, comentaremos las particularidades de los protocolos que más se usan actualmente para realizar comunicaciones VoIP, poniendo un mayor énfasis en explicar los detalles referentes al protocolo SIP. Así mismo, describiremos el proceso de transformación que debe sufrir una señal analógica al convertirse en una digital, proceso que debe seguir la voz para ser transmitida por un medio digital. Esto nos conducirá a hablar de los diferentes tipos de codificadores que existen y de su influencia en el ancho de banda utilizado cuando se establece una comunicación. Por último, abordaremos el concepto de calidad de servicio en las comunicaciones IP, comentando primero los problemas por los que se ve afectada negativamente y los protocolos diseñados para combatir algunos de de estos problemas.

15 Entorno tecnológico de la VoIP 1. Protocolos VoIP 1. Protocolos VoIP 1.1 Introducción Es realmente necesario utilizar unos protocolos específicos para el transporte de voz, o basta con los ya existentes para transportar datos? Hasta hoy en día ha habido una clara división entre dos tipos de redes: Redes de voz. Están basadas en conmutación de circuitos. En ellas los equipos de conmutación deben establecer un camino físico entre los medios de comunicación previo a la conexión entre los usuarios. Este camino permanece activo durante la comunicación entre los usuarios, liberándose al terminar la comunicación. El ejemplo más claro de este tipo de redes es la Red Telefónica Conmutada. Redes de datos. Basadas en conmutación de paquetes, los datos que se van a transmitir se dividen en paquetes y se envían por separado a través de la red. Los nodos de la red determinan libremente la ruta de cada paquete de manera individual, según su tabla de enrutamiento. Los paquetes que se envían de esta manera pueden tomar diferentes rutas y se vuelven a montar una vez que llegan al nodo receptor. Un ejemplo de estas redes es Internet. El problema con la tecnología de conmutación de circuitos es que requiere una significativa cantidad de ancho de banda y el circuito no es empleado eficientemente ya que emplea un canal durante toda la duración de la llamada no teniendo en cuenta por ejemplo los abundantes silencios que se producen durante una conversación. Las redes de datos, por el contrario, sólo transmiten información cuando es necesario, aprovechando al máximo el ancho de banda y en la cual el retardo, la alteración del orden de llegada o la pérdida de paquetes no son un inconveniente, ya que el sistema final dispone de una serie de procedimientos de recuperación de la información original. Pero para la voz y el vídeo estos factores son altamente influyentes. Se considera que la señal transmitida debe llegar al destino con un retardo no superior a 150 ms para que no haya degradación en la comunicación. Por lo tanto, para contestar a nuestra pregunta inicial diremos que a la hora de transmitir voz, sí es necesario disponer de unos protocolos especiales que nos garanticen un servicio confiable. Voz sobre IP (VoIP) define los sistemas de enrutamiento y los protocolos necesarios para la transmisión de conversaciones de voz a través de Internet, Telefonía de código abierto Asterisk 14

16 Entorno tecnológico de la VoIP 1. Protocolos VoIP la cual es una red de conmutación de paquetes basado en el protocolo TCP/IP para el envío de información. Actualmente existen, principalmente, dos arquitecturas de VoIP para la transmisión de voz por Internet: H.323 y SIP. A continuación describiremos estos dos protocolos en profundidad junto con el protocolo IAX, el cual se encuentra muy ligado a Asterisk y posee unas características interesantes. 1.2 Protocolo de inicio de sesión: SIP El protocolo SIP 4 (Session Initiation Protocol) fue desarrollado por el grupo MMUSIC (Multimedia Session Control) del IETF (Internet Engineering Task Force), definiendo una arquitectura de señalización y control para la VoIP. SIP es un protocolo de señalización a nivel de aplicación para establecimiento y gestión de sesiones con múltiples participantes. Se basa en mensajes de petición y respuesta y reutiliza muchos conceptos de estándares anteriores como HTTP (HyperText Transfer Protocol) y SMTP (Simple Mail Transfer Protocol). SIP fue diseñado de acuerdo al modelo de Internet. Es un protocolo de señalización de extremo a extremo en el que toda la lógica es almacenada en los dispositivos finales (salvo el rutado de los mensajes SIP). El estado de la conexión es también almacenado en los dispositivos finales. El precio a pagar por esta capacidad de distribución y su gran escalabilidad es una sobrecarga en la cabecera de los mensajes producto de tener que mandar toda la información entre los dispositivos finales Protocolos asociados a SIP El propósito de SIP es la comunicación entre dispositivos multimedia. Para llevar a cabo este cometido, SIP se sirve de otros protocolos para realizar tareas como la señalización o el tranporte. En la Figura 3 a continuación, podemos ver la pila de protocolos de SIP. 4 El protocolo SIP está definido en la recomendación RFC 3261 publicada en junio de Telefonía de código abierto Asterisk 15

17 Entorno tecnológico de la VoIP 1. Protocolos VoIP Figura 3. Pila de protocolos de SIP Real Time Protocol (RTP) El protocolo RTP 5 provee servicios para la transmisión y entrega de información en tiempo real como el audio o el vídeo. Es un protocolo situado en la capa de sesión del modelo OSI y aunque fue diseñado para ser independiente de las capas de transporte y red, en redes IP se usa mayoritariamente con UDP. Aunque diseñado inicialmente como un protocolo multicast, es usado tanto en aplicaciones de este tipo como en aplicaciones unicast. RTP no proporciona ningún mecanismo que garantice la calidad de servicio ni la entrega en tiempo de los paquetes, confiando estas funciones a capas más bajas del modelo OSI. RTP va de la mano de RTCP Real-Time Control Protocol (RTCP) Es el protocolo de control de RTP 6. Su función principal es informar de la calidad de servicio proporcionada por RTP. Así, RTCP recoge estadísticas de la conexión y también información como por ejemplo bytes enviados, paquetes enviados, paquetes perdidos o jitter entre otros. Esta información puede usarla una aplicación para por ejemplo incrementar la calidad de servicio (QoS), ya sea limitando el flujo de información o usando un códec de compresión más baja, etc Session Description Protocol (SDP) Cuando se inician videoconferencias, llamadas sobre IP, vídeo en streaming o cualquier otro tipo de sesiones, existe la necesidad por parte de los participantes de acordar detalles concernientes a éstas como por ejemplo las direcciones, los puertos el protocolo de transporte a utilizar, etc. 5 Definido en la recomendación RFC Definido al igual que RTP en la recomendación RFC Telefonía de código abierto Asterisk 16

18 Entorno tecnológico de la VoIP 1. Protocolos VoIP El protocolo SDP 7 información. proporciona el formato para la representación de dicha Puesto que SDP es sólo un protocolo de descripción no define ningún protocolo de transporte, los mensajes SDP pueden ser transportados mediante distintos protocolos tales como SAP (Session Announcement Protocol), SIP, RTSP (Real Time Streaming Protocol), correo electrónico con aplicaciones MIME (Multipurpose Internet Mail Extensions) o protocolos como HTTP. SDP, al igual que SIP, utiliza una codificación textual. Así, un mensaje SDP se compone de una serie de líneas denominadas campos 8. Estos tienen la forma de pares atributo-valor siendo su sintaxis: tipo = valor Donde tipo hace referencia al nombre del campo y son representados por una sola letra distinguiendo entre minúscula y mayúscula. valor es, como su propio nombre indica, el valor de ese campo y su formato depende de qué tipo se trate. Los campos están en un orden predeterminado para simplificar el análisis Elementos de una red SIP SIP soporta funcionalidades para el establecimiento y finalización de las sesiones multimedia: localización, disponibilidad, utilización de recursos, y características de negociación. Para implementar estas funcionalidades existen dos elementos fundamentales en una arquitectura SIP: los agentes de usuario (UA) y los servidores Agente de usuario Un agente de usuario (UA, User Agent) consta de dos partes distintas: el agente de usuario cliente (UAC, User Agent Client) y el agente de usuario servidor (UAS, User Agent Server). Un UAC es una entidad lógica que genera peticiones SIP y recibe respuestas a esas peticiones. Un UAS es una entidad lógica que genera respuestas a las peticiones SIP. Ambos se encuentran en todos los agentes de usuario, permitendo así la comunicación entre diferentes agentes de usuario mediante comunicaciones de tipo cliente-servidor. 7 El protocolo SDP se encuentra definido en la recomendación RFC Los nombres de los campos y sus posibles valores se pueden consultar en el RFC 4566 sección 5. Telefonía de código abierto Asterisk 17

19 Entorno tecnológico de la VoIP 1. Protocolos VoIP Servidores SIP Los servidores SIP pueden ser de tres tipos: 1) Servidor Proxy. Retransmite peticiones y decide a qué otro servidor debe remitirlas, alterando los campos de la solicitud en caso necesario. Es una entidad intermedia que actúa como cliente y servidor con el propósito de establecer llamadas entre los usuarios. Este servidor tiene una funcionalidad semejante a la de un Proxy HTTP el cual tiene la tarea de encaminar las peticiones que recibe de otras entidades más próximas al destinatario. Las funciones que realiza cuando les llega una petición son las siguientes: Validar la petición. Procesar la información de rutado. Determinar el destino de la petición. Reenviar la petición a cada destino. Procesar las respuestas a esa petición. Existen dos tipos de Servidores Proxy: Proxy stateful : guarda información de cada petición que recibe así como de las respuestas que envía como consecuencia de haber procesado esas peticiones. Esta información podrá afectar al procesamiento de futuros mensajes asociados a una petición. Proxy stateless : un proxy de este tipo sólo reenvía los mensajes que le llegan. No guarda el estado de las transacciones, así una vez que ha retransmitido un mensaje borra toda información sobre él. 2) Servidor de registro. Es un servidor que acepta peticiones de registro de los usuarios y guarda la información de estas peticiones. Por tanto, suministra un servicio de localización y traducción de direcciones en el dominio que controla. Veamos el ejemplo de la Figura 4 para tener más claro el funcionamiento de estos servidores. Telefonía de código abierto Asterisk 18

20 Entorno tecnológico de la VoIP 1. Protocolos VoIP Juan UAC 2) Almacenamiento 3) Invitación Servidor de Registro 4) Consulta 5) Respuesta Servidor Proxy 1) Registro UAC 6) Invitación Ana Figura 4. Tipos de servidores SIP. El ejemplo empieza con el registro de Ana en el Servidor de Registro que seguidamente es almacenado. A continuación, Juan manda una invitación para iniciar una sesión con Ana. Cuando llega al Servidor Proxy, éste consulta al Servidor de Registro para ver dónde está localizada Ana. El Servidor de Registro contesta con su localización y finalmente el Servidor Proxy reenvía la petición de invitación a Ana. Servidor de Redirección. Genera respuestas de redirección a las peticiones que recibe. Cuando recibe una petición no la reenvía a otro servidor sino que genera una respuesta con la dirección de destino de la petición. Cuando el cliente la recibe, rehace la petición con esta información y la envía. Se suele utilizar cuando se quiere disminuir la carga de procesamiento de rutado de los servidores proxy. Es muy importante tener en cuenta que la división de estos servidores es conceptual, cualquiera de ellos puede estar físicamente en una única máquina. Esta división se suele hacer por motivos de escalabilidad y rendimiento Tipos de mensajes SIP Como ya hemos comentado SIP es un protocolo basado en texto que usa una semántica semejante a la del protocolo HTTP. Los UAC realizan las peticiones y los UAS devuelven respuestas a las peticiones de los clientes. SIP define la comunicación a través de dos tipos de mensajes: las solicitudes o peticiones (requests) y las respuestas (responses). Ambos emplean un formato de mensaje genérico 9, el cual consiste en una línea inicial seguida de uno o 9 El formato está establecido en la recomendación RFC Telefonía de código abierto Asterisk 19

21 Entorno tecnológico de la VoIP 1. Protocolos VoIP más campos de cabecera (headers), una línea vacía que indica el final de las cabeceras, y por último, el cuerpo del mensaje que es opcional. Mensaje_Genérico = línea_inicial *campo de cabecera Línea_vacía [cuerpo_del_mensaje] Línea_inicial = Línea_de_petición / Línea_de_estado Formato y tipo de las peticiones SIP Las peticiones SIP comparten todas un mismo formato. Este comienza por una línea inicial del mensaje, llamada Request-Line, que contiene el nombre del método, el identificador del destinatario de la petición (Request-URI) y la versión del protocolo SIP. Línea_de_Petición = Método Identificación_del_destinatario Versión_SIP Existen seis métodos básicos 10 clientes: SIP que describen las peticiones de los INVITE: Permite invitar un usuario o servicio para participar en una sesión o para modificar parámetros en una sesión ya existente. ACK: Confirma el establecimiento de una sesión. OPTION: Solicita información sobre las capacidades de un servidor. BYE: Indica la terminación de una sesión. CANCEL: Cancela una petición pendiente. REGISTER: Registrar al User Agent Formato y tipo de las respuestas SIP Después de la recepción e interpretación del mensaje de solicitud SIP, el receptor del mismo responde con un mensaje. Este mensaje es similar al anterior difiriendo sólo la línea inicial, llamada Status-Line. Ésta contiene la versión de SIP, el código de la respuesta (Status Code) y una pequeña descripción de éste (Reason Phrase). Línea_de_estado = Versión_SIP Código_de_estado Descripción 10 Existen otros métodos adicionales publicados en otras recomendaciones como los métodos INFO, SUBSCRIBER, etc. Telefonía de código abierto Asterisk 20

22 Entorno tecnológico de la VoIP 1. Protocolos VoIP El código de la respuesta está compuesto por tres dígitos que permiten clasificar los diferentes tipos existentes. El primer dígito define la clase de la respuesta. Los diferentes códigos de respuesta 11 son los siguientes: 1xx - Respuestas provisionales: petición recibida, continuando con el procesamiento de la petición. 2xx - Respuestas de éxito: la petición fue recibida, entendida y aceptada. 3xx - Respuestas de redirección: más acciones son necesarias para completar la petición. 4xx - Respuestas de fallo de método: la petición es sintácticamente incorrecta o el servidor no puede llevarla a cabo. 5xx - Respuestas de fallos de servidor: el servidor falló al llevar a cabo una petición aparentemente válida. 6xx - Respuestas de fallos globales: la petición no puede llevarse a cabo en ningún servidor Formato y campos de las cabeceras SIP Las cabeceras SIP son similares a las de HTTP tanto semánticamente como sintácticamente. Los campos por los que está compuesta tienen el siguiente formato: Nombre_del_campo: Valor_del_campo *(;nombre_del_parámetro: valor_del_parámetro) Las cabeceras se utilizan para transportar información necesaria a las entidades SIP. A continuación, se detallan algunos campos 12 : Via: Indica el camino que ha seguido la petición así como el camino que debería seguir la respuesta. Contiene el protocolo de transporte usado para el envío de la petición, la localización a dónde debe ser enviada la respuesta (nombre o dirección del host) y el puerto dónde éste desea ser contactado. El parámetro branch sirve como identificador de una transacción y es usado por los servidores proxy para detectar bucles. El parámetro received indica la dirección de donde se ha recibido la petición. 11 La totalidad de las respuestas así como su significado se puede consultar en la recomendación RFC 3261 sección Todos los posibles campos de la cabecera y su significado pueden verse en el RFC 3261 sección 20. Telefonía de código abierto Asterisk 21

23 Entorno tecnológico de la VoIP 1. Protocolos VoIP Max-Forward: indica el número máximo de proxies o gateways que puede atravesar una petición. Así, cada vez que un proxy o un gateway reenvíe una petición a otro proxy o gateway, el número decrecerá en una unidad hasta llegar a cero, momento en el que ya no se podrá reenviar más. Route: los proxies insertan este campo en las peticiones para forzar que futuras peticiones dentro del mismo diálogo sean rutadas a través del proxy que se indica. Record-Route: esta cabecera es usada para forzar que una petición sea encaminada a través del conjunto de proxies que se indica en ella. From: indica la dirección del que ha originado la petición. Incluye el parámetro tag que es una cadena aleatoria generada por el terminal con propósitos de identificación. To: Indica la dirección del destinatario de la petición. Al igual que From, también contiene el parámetro tag. Call-Id: es un identificador único para cada llamada. Es generada por la combinación de una cadena aleatoria y el nombre o dirección del host. La combinación de los parámetros tag de From y To y Call-Id definen completamente una transacción de extremo a extremo. Cseq: Consta de un número aleatorio que identifica de forma secuencial cada petición y el nombre de ésta. Contact: Contiene una o varias direcciones que pueden ser usadas para contactar con el usuario. A diferencia del campo Via que sirve para decir dónde enviar la respuesta, Contact dice dónde enviar futuras peticiones. Authorization: este campo contiene las credenciales de autentificación del agente de usuario. Proxy-Authorization: este campo permite a un cliente autentificarse a si mismo frente a un Proxy que requiere autentificación. Contiene las credencuales de autentificación del usuario. WWW-Authenticate: contiene un desafío para la autentificación. (Ver la sección Mecanismos de seguridad de este documento para más información). Content-Type: indica de qué tipo es el contenido del cuerpo del mensaje. Content-Length: indica el tamaño del cuerpo del mensaje en bytes. Telefonía de código abierto Asterisk 22

24 Entorno tecnológico de la VoIP 1. Protocolos VoIP Direccionamiento en SIP Una de las funciones de los servidores SIP es la localización de los usuarios y resolución de nombres. Normalmente, el agente de usuario no conoce la dirección IP del destinatario de la llamada, sino su URI. Las entidades SIP identifican a un usuario con las SIP URI 13 (Uniform Resource Identifiers) las cuales tienen un formato similar al del correo electrónico. Consta de un usuario y un dominio delimitado por como se muestra en los siguientes casos: donde dominio es un nombre de dominio completo. donde equipo es el nombre de la máquina. donde dirección_ip es la dirección IP del dispositivo. donde el gateway permite acceder al número de teléfono a través de la red telefónica pública. Una uri SIP no siempre ha de corresponderse con un sólo teléfono. Si un usuario está disponible en más de un teléfono, al recibir una llamada se puede hacer que todos suenen a la vez o en una secuencia determinada según hayamos configurado el servidor. Casi todos los SIP registars soportan que un mismo usuario se registre en diferentes teléfonos. SIP provee también una URI SIPS (SIP Secure), la cual es una URI segura. Una llamada hecha a una SIPS URI nos garantiza que los mensajes que se intercambiarán lo harán usando un método de transporte seguro y encriptado llamado TLS (Transport Layer Security). Con esta forma de direccionar tenemos la ventaja de que la dirección del usuario no va unida a ningún dispositivo en concreto como en H.323, pudiendo ser localizados con el mismo identificador en cualquier teléfono donde nos registremos. La solución de identificación de SIP, también puede estar basada en procedimientos DNS 14 utilizados por los clientes para traducir una SIP URI en una dirección IP, puerta y protocolo de transporte utilizado, o por los servidores para retornar una respuesta al cliente en caso de que la petición falle. 13 Se encuentran definidas en la recomendación RFC Estos procedimientos se encuentran descritos en la recomendación RFC Telefonía de código abierto Asterisk 23

25 Entorno tecnológico de la VoIP 1. Protocolos VoIP Mecanismos de seguridad en SIP SIP dispone de mecanismos que utilizándolos correctamente permiten garantizar la seguridad en las comunicaciones de una forma bastante alta. Estos mecanismos se dividen en dos aspectos principales: autentificación y encriptación. La autentificación se utiliza en la comunicación user-to-proxy o proxy-to-user y está basado en HTTP Digest intentando minimizar el riesgo de que un atacante se pueda hacer pasar por otro. Para comprender bien este proceso vamos a ver con detalle el contenido de los mensajes que se originarían en un proceso de registro de un usuario en un servidor. El escenario que planteamos para el ejemplo 15 es el de la Figura 5. Figura 5. Escenario del ejemplo de registro de un usuario en un servidor. Los datos de los dos elementos que intervienen son los de la Tabla 1 a continuación. Elemento Nombre URI Dirección IP Agente de usuario Juan Servidor Proxy - ss1.dte.us.es Tabla 1. Datos de los participantes en el ejemplo de registro de un usuario en un servidor. Cuando el agente de usuario se registra por primera vez en un servidor se genera el flujo de mensajes que aparece en la Figura El ejemplo original así como otros ejemplos se pueden ver en la recomendación RFC 3665 secciones 2 y 3. Telefonía de código abierto Asterisk 24

26 Entorno tecnológico de la VoIP 1. Protocolos VoIP Juan Proxy 1 REGISTER 401 UNAUTHORIZED REGISTER 200 OK Figura 6. Flujo de mensajes al registrarse por primera vez un usuario en un servidor. El primer mensaje es una petición de registro por parte del usuario Juan. El mensaje generado sería el siguiente: REGISTER sips:ss1.dte.us.es SIP/2.0 Via: SIP/2.0/TLS client.dte.us.es:5061;branch=z9hg4bknashds7 Max-Forwards: 70 From: Juan To: Juan Call-ID: CSeq: 1 REGISTER Contact: Content-Length: 0 Figura 7. Primera petición de registro. Vemos como se utilza una URI SIPS para que el trasporte sea seguro, utilizando TLS para su encriptación, y que tanto el campo From y To contienen ambos le dirección de Juan. Los demás campos no nos interesan por ahora y ya serán analizados en el siguiente ejemplo. El servidor contesta enviando una respuesta 401 Unauthorized que no es más que un desafío que lanza el servidor para que Juan se identifique. El mensaje sería tal que así: SIP/ Unauthorized Via: SIP/2.0/TLS client.dte.us.es:5061;branch=z9hg4bknashds7 ;received= From: Juan To: Juan Call-ID: CSeq: 1 REGISTER WWW-Authenticate: Digest realm="dte.us.es", qop="auth", nonce="ea9c8e88df84f1cec4341ae6cbe5a359", opaque="", stale=false, algorithm=md5 Content-Length: 0 Figura 8. Desafío del servidor. Telefonía de código abierto Asterisk 25

27 Entorno tecnológico de la VoIP 1. Protocolos VoIP En él vemos la aparición del campo WWW-Aunthenticate que contiene varios parámetros. Entre ellos destacamos: Digest Realm que contiene el dominio del servidor contra el cual hay que identificarse, nonce que es un valor aleatorio generado por el servidor y que tendrá que ser devuelto por el usuario y algorithm que indica el algoritmo de encriptación que se ha de utiizar. A continuación, Juan envía una nueva petición de registro tal como esta: REGISTER sips:ss1.dte.us.es SIP/2.0 Via: SIP/2.0/TLS client.dte.us.es:5061;branch= z9hg4bknashd92 Max-Forwards: 70 From: Juan ja743ks76zlflh To: Juan Call-ID: CSeq: 2 REGISTER Contact: Authorization: Digest username="juan", realm="dte.us.es" nonce="ea9c8e88df84f1cec4341ae6cbe5a359", opaque="", uri="sips:ss1.dte.us.es", response="dfe56131d d ecc" Content-Length: 0 Figura 9. Segunda petición de registro. Podemos apreciar como hay un nuevo campo Authorization con respecto a la primera petición de registro que contiene las credenciales del cliente. Entre sus parámetros destacamos el nombre de usuario (Digest username), el dominio contra el cual se autentifica (realm), el mismo número aleatorio (nonce) del mensaje anterior, la dirección (uri) y un atributo response. Este contiene de forma encriptada todo lo anterior más la contraseña de Juan. De esta forma se consigue enviar la autentificación al servidor sin hacer visible el password. El servidor tiene entonces que comparar el valor de response con el resultado de encriptar el los datos por su cuenta con la contraseña que tiene registrada para Juan. Si el resultado ha sido satisfactorio el servidor envía una respuesta de confirmación tal que así: Telefonía de código abierto Asterisk 26

28 Entorno tecnológico de la VoIP 1. Protocolos VoIP SIP/ OK Via: SIP/2.0/TLS client.dte.us.es:5061;branch= z9hg4bknashd92 ;received= From: Juan ja743ks76zlflh To: Juan Call-ID: CSeq: 2 REGISTER Contact: Content-Length: 0 Figura 10. Respuesta de confirmación. En lo que respecta a la encriptación el objetivo es garantizar la confidencialidad de la comunicación, para lo cual se utilizan algoritmos como AES (Advanced Encryption Standard) o DES (Data Encryption Standard). Por otro lado, la encriptación de la información puede hacerse de dos formas, hop-by-hop o end-to-end. En la primera, hop-by-hop, se encriptan los datos entre los participantes en la comunicación utilizando tecnologías externas a SIP como TLS o IPSec (IP Secure). Con la encriptación end-to-end se encripta mediante S/MIME toda la información que no es necesario que sea vista por los sistemas intermedios. Es importante tener en cuenta que incluso una buena implementación de estos mecanismos no puede garantizarnos al 100% la seguridad de las comunicaciones Intercambio de mensajes en el establecimento de una sesión SIP A continuación se va a detallar el establecimiento de sesión entre dos usuarios, proponiendo como escenario de ejemplo el que representa la siguiente figura 16 : Figura 11. Escenario del ejemplo de establecimiento de una sesión SIP. Juan intentará establecer una sesión con Ana. Para ello Juan contactará con el Proxy 1 que es el que tiene determinado para sus llamadas salientes y éste 16 El ejemplo original completo está descrito en la recomendación RFC 3665 sección 3.2. Telefonía de código abierto Asterisk 27

29 Entorno tecnológico de la VoIP 1. Protocolos VoIP pasará la petición al Proxy 2 quién finalmente la entregará a Ana. La llamada quedará establecida entre los dos usuarios hasta que Ana termine la sesión. En la tabla a continuación podemos ver los datos de los elementos que interviene en el ejemplo. Elemento Nombre URI Dirección IP Agente de usuario Juan Agente de usuario Ana Servidor Proxy 1 - ss1.dte.us.es Servidor Proxy 2 - ss2.atc.us.es Tabla 2. Datos de los participantes en el ejemplo de establecimiento de una sesión SIP. A continuación en la Figura 12 se detallan todos los mensajes que se producirán es esta sesión suponiendo que tanto Juan como Ana están ya registrados en sus respectivos proxies. Telefonía de código abierto Asterisk 28

30 Entorno tecnológico de la VoIP 1. Protocolos VoIP Figura 12. Intercambio de mensajes en una sesión SIP. De este intercambio podemos deducir que la señalización pasará por los servidores pero que la comunicación RTP es de extremo a extremo. Podemos ver la situación en la Figura 13. Esto es conocido como el trapecio SIP. Figura 13. Trapecio SIP. El intercambio de mensajes comienza con una petición de inicio de sesión por parte del usuario Juan. A ésta el servidor le responde con un 407 Authentication Required ya que no ha incluido en su cabecera ningún campo de autentificación. Esto como ya hemos visto en el proceso de registro, es un Telefonía de código abierto Asterisk 29

31 Entorno tecnológico de la VoIP 1. Protocolos VoIP desafío que el servidor envía al usuario para que se autentifique. El usuario avisa de su recepción con un ACK y a continuación reenvía la petición invite pero esta vez con sus credenciales en el campo Proxy Authorization. Cuando el Proxy 1 recibe la petición envía una respuesta Triying con la que se índica que la petición ha sido recibida pero que es necesario hacer otras acciones. Como con cualquier respuesta provisional, hace que el cliente deje de retransmitir peticiones. Al mismo tiempo, Proxy 1 reenvía al Proxy 2 la petición invite el cual hace lo mismo que antes el Proxy 1 : envía un Triying y reenvía la petición a Ana. Antes de seguir, vamos a examinar con detalle el reenvío de las peticiones invite para entender la función de algunos campos de la cabecera. El primer invite de Juan a Proxy 1 sería tal que así: INVITE SIP/2.0 Via: SIP/2.0/TCP client.dte.us.es:5060;branch=z9hg4bk74bf9 Max-Forwards: 70 Route: <sip:ss1.dte.us.es;lr> From: Juan To: Ana Call-ID: CSeq: 2 INVITE Contact: Proxy-Authorization: Digest username="alice", realm="atlanta.example.com", nonce="wf84f1ceczx41ae6cbe5aea9c8e88d359", opaque="", response="42ce3cef44b22f50c6a6071bc8" Content-Type: application/sdp Content-Length: 151 Figura 14. Invite de Juan a Proxy 1. En él podemos apreciar como en la primera línea (Línea de petición) se encuentra la petición de la que se trata (INVITE), el destinatario (Ana) y la versión de SIP. A continuación, aparecen diversos campos de cabecera. En el primero, Via observamos el protocolo de transporte usado (TCP), la localización a donde debe ser enviada la respuesta y el número de puerto (client.dte.us.es:5060). Por último, aparece el atributo identificador branch. Atendiendo al valor de Max-Forwards este mensaje sólo podrá ser reenviado 70 veces. En Route tenemos la dirección del Proxy 1. En From y To aparecen las direcciones de origen (Juan) y destino (Ana) respectivamente. Telefonía de código abierto Asterisk 30

32 Entorno tecnológico de la VoIP 1. Protocolos VoIP En Call-ID está el identificador de la llamada que será el mismo para todos los mensajes del ejemplo de la figura n (la completa). En CSeq aparecen el identificador y el nombre de la petición. En Contatc está la dirección de Juan, y en Proxy-Authorization las credenciales del cliente con los atributos ya comentados en el ejemplo de la sección: Mecanismos de seguridad en SIP. Por último, si nos fijamos en el campo Content-Type, el cuerpo del mensaje es un mensaje SDP de una longitud de 151 bytes como deducimos de Content-Length. A continuación el Proxy 1 reenvía la petición al Proxy 2: INVITE SIP/2.0 Via: SIP/2.0/TCP ss1.dte.us.es:5060;branch=z9hg4bk2d Via: SIP/2.0/TCP client.dte.us.es:5060;branch=z9hg4bk74bf9 ;received= Max-Forwards: 69 Record-Route: <sip:ss1.dte.us.es;lr> From: Juan To: Ana Call-ID: CSeq: 2 INVITE Contact: Content-Type: application/sdp Content-Length: 151 Figura 15. Reenvio de petición de Proxy 1 a Proxy 2. En su viaje hacía Ana, el mensaje ha pasado por el Proxy 1 quién ha introducido su dirección y puerto en un segundo campo Via donde queda reflejado el camino que lleva el paquete. Si nos fijamos, también ha introducido el atributo received con la dirección IP de Juan ( ) que es de donde recibió el mensaje. Ha aparecido un campo nuevo: Record-Route para indicar que la respuesta debe ser rutada por él. Por último podemos apreciar como el campo Max-Forwards ha decrecido en una unidad al haberse reenviado una vez el mensaje. Telefonía de código abierto Asterisk 31

33 Entorno tecnológico de la VoIP 1. Protocolos VoIP Seguidamente, el Proxy 2 reenvía el mensaje a Ana: INVITE SIP/2.0 Via: SIP/2.0/TCP ss2.atc.us.es:5060;branch=z9hg4bk721e4.1 Via: SIP/2.0/TCP ss1.dte.us.es:5060;branch=z9hg4bk2d ;received= Via: SIP/2.0/TCP client.dte.us.es:5060;branch=z9hg4bk74bf9 ;received= Max-Forwards: 68 Record-Route: <sip:ss2.atc.us.es;lr>, <sip:ss1.dte.us.es;lr> From: Juan To: Ana Call-ID: CSeq: 2 INVITE Contact: Content-Type: application/sdp Content-Length: 151 Figura 16. Reenvio de petición de Proxy 2 a Ana. El Proxy 2 repite lo que hizo antes el Proxy 1: incluye su dirección en el camino que lleva el paquete insertando un tercer campo Via y anota la dirección de donde le llegó (received= ). Además introduce también su dirección en el campo Record-Route con la intención antes descrita. Retomemos ahora la descripción del establecimiento de sesión cuando Ana recibe el invite. En ese momento el terminal de Ana empieza a sonar. Un mensaje Ringing es enviado a Juan que al recibirlo escucha el tono de llamada. Cuando Ana descuelga, un mensaje de OK es enviado a Juan, quien responde con un ACK. En ese momento la llamada está establecida y empieza a actuar el protocolo de transporte RTP con los parámetros (puertos, direcciones, códecs, etc.) establecidos en la negociación mediante el protocolo SDP. Por último, cuando Ana cuelga se envía una petición bye de terminación de sesión a Juan. Éste al recibirla envía una respuesta de OK para indicar que se recibió el mensaje final correctamente Problemas de SIP al atravesar dispositivos NAT Uno de los mayores problemas a los que tiene que hacer frente SIP, es cuando una comunicación pasa a través de un dispositivo NAT (Network Address Translation). Como ya hemos comentado SIP está pensado para trasportar la señalización de una llamada pero confía el trasporte de audio a RTP. Así, mientras la señalización usa unos puertos fijos y estandarizados (el 5060 normalmente), Telefonía de código abierto Asterisk 32

34 Entorno tecnológico de la VoIP 1. Protocolos VoIP RTP usa puertos que son elegidos aleatoriamente (entre el y el usualmente) lo que lleva a muchos firewalls/nat a no ser capaces de asociar el enlace establecido en la señalización con el flujo de audio dentro de una llamada. Veamos un poco más profundidad los problemas de los que adolece SIP cuanto atraviesa un dispositivo NAT. Para ello primero nos centraremos en los problemas asociados a la señalización SIP y a continuación comentaremos los que se producen en el establecimiento del flujo de audio Problemas con la señalización SIP Cuando SIP utiliza UDP para enviar una respuesta a una petición, el puerto al que envía la respuesta es el indicado en el campo de cabecera VIA de la petición. Pero si el cliente que ha enviado la petición está en una red privada detrás de un dispositivo NAT, se presenta el problema que podemos ver en la siguiente figura: Figura 17. Respuesta bloqueada por el dispositivo NAT. El proxy ha enviado la respuesta al puerto 5060 del cliente ya que éste es el que aparece en el campo VIA de la cabecera de la petición. Sin embargo este puerto fue cambiado por NAT al puerto que es el que está abierto para la conexión. El 5060 puede estar cerrado en el NAT por lo que el paquete sería descartado. Para solucionar este problema se necesita un método que reescriba la dirección del puerto destino de la respuesta. Escribiendo la dirección del puerto abierto en la petición como puerto destino en la respuesta, conseguimos que todo pase por el mismo puerto 17 como nos muestra la figura a continuación: 17 Este método se conoce como Respuesta Simétrica y está descrito en el RFC Telefonía de código abierto Asterisk 33

35 Entorno tecnológico de la VoIP 1. Protocolos VoIP Figura 18. Petición y respuesta pasan por el mismo puerto. Otro problema de señalización aparece cuando utilizamos TCP. Con este protocolo, SIP sí que utiliza el puerto abierto en el NAT por la petición para enviar la respuesta pero el problema viene cuando es el proxy el que envía una petición. La situación es la que representa la Figura 19. Figura 19. Petición del Proxy bloqueada por el dispositivo NAT. El proxy utiliza para enviarla la dirección IP de contacto que es una dirección privada y por lo tanto no válida. Esto se podría haber evitado como antes utilizando la conexión ya abierta en el NAT en el registro. Pero esto nos lleva a enfrentarnos con otro problema. Y es que normalmente los dispositivos NAT cierran las conexiones al cabo de un tiempo (de segundos a horas) y como en SIP pueden pasar grandes periodos sin actividad, la conexión que creíamos estar abierta puede que ya esté cerrada. La solución a este problema la encontramos en el borrador draft-ietf-sipoutbound-15 el cual propone técnicas que usan un identificador para cada conexión. Esta información se almacena junto con información de la traducción que ha hecho NAT y cuando llega una petición la utiliza para enviarla por la conexión abierta. Al mismp propone mecanismos para mantener abiertas las conexiones que pasan por el NAT abiertas. Telefonía de código abierto Asterisk 34

36 Entorno tecnológico de la VoIP 1. Protocolos VoIP Problemas con el flujo RTP La negociación para establecer una conexión RTP se lleva a cabo usando el protocolo SDP. En éste cada cliente especifica la dirección IP y el puerto donde quiere recibir el flujo RTP. El problema viene cuando los clientes se encuentran dentrás de un dispositivo NAT. En la Figura 20 se presenta el caso. Figura 20. Conexión RTP fallida entre los clientes A y B. Al estrar en redes privadas, los clientes especifican las direcciones privadas como destinatarias del flujo RTP siendo estas direcciones no válidas y no se podrá establecer dicha conexión. Incluso podría darse el caso de que un cliente al haber recibido una dirección privada a la que mandar al flujo RTP, y habiendo un host en su red con la misma dirección, empezase a mandar paquetes RTP a dicho host (recordemos que RTP va sobre UDP). Llegar a una solución general en esta situación no es fácil, y se complica aún más debido al gran número de topologías de NAT que existen 18. En cuanto al protocolo RTCP también nos encontramos con un problema ya que la práctica normal para asignar un puerto para este protocolo es asignarle el siguiente al definido para RTP. Esto puede hacer que al atravesar algunos NATs este tráfico se bloquee. Para poder controlar esto se debería poder especificar en el protocolo SDP la dirección y el puerto que queremos usar específicamente para RTCP 19. Por último, existen tres protocolos interrelacionados que contienen una solución completa para los flujos de audio y NAT. Estos son: STUN (Simple Transversal of UDP over NATs), TURN (Traversal Using Relay NAT) e ICE (Interactive Connectivity Establishment). Pasemos a describer brevemente cada uno de ellos: 18 Una de las soluciones propuestas se encuentra en el documento RFC La recomendación RFC 3605 define un atributo en SDP para definir esto. Telefonía de código abierto Asterisk 35

37 Entorno tecnológico de la VoIP 1. Protocolos VoIP STUN 20. Es un protocolo que permite saber que dirección y puerto está utilizando un host fuera de NAT. Así, esta información puede ser utilizada por SDP para construir el flujo RTP. Sin embargo este protocolo no funciona con algunas topologías de NAT como el NAT bidireccional (Symmetric NAT). STUN también es usado para mantener una conexión abierta en el NAT. TURN 21. Es utilizado en algunos escenarios donde STUN no funciona. Solo es recomendable si no hay otra solución posible ya que consume muchos recursos en una conexión y puede introducir retrasos indeseables en el tráfico de paquetes. ICE 22. Es el método apropiado si la técnica Symmetric RTP no se puede emplear. Utiliza STUN y TURN y otras tecnologías para proveer una solución unificada al problema con NAT. 1.2 Protocolo H Introducción El protocolo H.323 fue diseñado por la Unión Internacional de Telecomunicaciones (ITU, Internacional Communication Union) y fue publicado por primera vez en La sexta es la versión actual publicada en el año Se creó originalmente para proveer un mecanismo de transporte IP para la videoconferencia en redes de área local (LAN), pero evolucionó rápidamente para convertirse en un método de transporte de aplicaciones multimedia en redes de conmutación de paquetes tanto LAN como WAN. El estándar fue diseñado específicamente con los siguientes objetivos: Basarse en los estándares existentes, incluyendo H.320, RTP y Q.931. Incorporar algunas de las ventajas que las redes de conmutación de paquetes ofrecen para transportar datos. Solucionar la problemática que plantea el envío de datos en tiempo real sobre redes de conmutación de paquetes. Los diseñadores de H.323 sabían que los requisitos de la comunicación difieren de un lugar a otro, entre usuarios y entre compañías y obviamente con el tiempo los requisitos de la comunicación también cambian. Dados estos factores, los diseñadores de H.323 lo definieron de tal manera que las empresas constructoras de los equipos pueden agregar sus propias especificaciones al protocolo y pueden definir otras estructuras de estándares que permitan a los dispositivos adquirir nuevas características o capacidades. 20 El procolo STUN se encuentra definido en la RFC El protocolo TURN puede consultarse en el borrador IETF: draft-ietf-behave-turn El protocolo ICE puede ser consutado en el borrador IETF: draft-ietf-mmusic-ice-19. Telefonía de código abierto Asterisk 36

38 Entorno tecnológico de la VoIP 1. Protocolos VoIP Protocolos asociados a H.323 H.323 incluye entre otros, partes de los siguientes protocolos: H.225.0, H.245 y RTP/RTCP Protocolo H Define los mensajes de señalización de llamada (establecimiento, control y finalización) y de señalización RAS (Registration, Admission and Status). RAS lleva a cabo los procedimientos de registro, admisión, cambios de ancho de banda, estado y desconexión, entre terminales y un Gatekeeper H.323. La señalización H está basada en los procedimientos de establecimiento de llamada de ISDN (Integrated Services Didigal Networks, estándar Q.931) Protocolo H.245 Transmite y proporciona la información necesaria para una comunicación multimedia, tal como opciones de codificación, control de flujo, gestión de jitter, etc. Digamos, que este protocolo asegura que hay una aplicación y un códec compatible entre los terminales implicados en una comunicación Protocolos RTP y RTCP Al igual que SIP, H.323 también utiliza RTP como protocolo de transporte. Sus características principales ya han sido descritas en la sección: Protocolos asociados a SIP de este documento. En la figura a continuación, podemos ver la pila de protocolos de H.323 utilizando el protocolo IP. Telefonía de código abierto Asterisk 37

39 Entorno tecnológico de la VoIP 1. Protocolos VoIP Figura 21. Pila de protocolos de H Elementos de una red H.323 En una red H.323 podemos identificar los siguientes elementos: Gatekeeper, Terminal, Gateway y MCU. Pasemos a ver en que consiste cada uno Gatekeeper Es el dispositivo de la red que provee a los equipos terminales servicios tales como registro y autentificación de usuarios, control de ancho de banda, resolución de direcciones, etc. Este último quizás sea el más importante ya que hace posible que dos terminales se pueden comunicar sin saber ninguno la dirección IP del otro. Para ello cada dispositivo dentro de una zona (ámbito donde opera un gatekeeper, el cual puede ser una LAN o un continente entero) debe llevar a cabo un proceso de registro. Como podemos apreciar en la Figura 22, éste consiste en el envío de una petición de registro por parte del terminal donde se informa de las características que lo identifican (número de teléfono, dirección IP, etc.). El gatekeeper, después de haber registrado todos estos datos en memoria, envía al terminal un mensaje de confirmación de registro indicándole que tiene vía libre para recibir y efectuar llamadas. Telefonía de código abierto Asterisk 38

40 Entorno tecnológico de la VoIP 1. Protocolos VoIP Figura 22. Proceso de registro en H.323. Un gatekeeper puede ser diseñado para operar en dos modos: Direct routed. Los equipos terminales aprenden comunicándose con el gatekeeper mediante el protocolo RAS la dirección ip de los otros terminales y se establece una conexión directa (sin pasar por el gatekeeper). Este es el modo más ampliamente utilizado. Figura 23. Gatekeeper H.323 en modo Direct routed. Gatekeeper routed. Los mensajes de señalización pasan por el gatekeeper. Esto requiere un gatekeeper de mayor potencia de procesamiento pero permite tener un control directo sobre la comunicación. Figura 24. Gatekeeper H.323 en modo Gatekeeper routed. Telefonía de código abierto Asterisk 39

41 Entorno tecnológico de la VoIP 1. Protocolos VoIP Terminal Un terminal H.323 es un extremo de la red que proporciona comunicaciones bidireccionales en tiempo real con otro terminal H.323, gateway o unidad de control multipunto (MCU, Multipoint Control Unit). Esta comunicación consta de señales de control, indicaciones, audio, imagen en color en movimiento y/o datos entre los dos terminales. Conforme a la especificación, un terminal H.323 puede proporcionar sólo voz, voz y datos, voz y vídeo, o voz, datos y vídeo Gateway o pasarela Es el dispositivo que hace de interfaz entre una red H323 y otras redes como la red telefónica básica (RTB) e ISDN (Integrated Services Digital Network). En el caso en el que en una conversación un equipo terminal no sea H.323, la llamada deberá pasar por un gateway para que la comunicación sea posible MCU (Multipoint Control Unit) La unidad de control multipunto (MCU) es un punto extremo de la red que permite que tres o más terminales y pasarelas participen en una conferencia multipunto. También puede conectar dos terminales en una conferencia punto a punto que puede llegar a convertirse en multipunto. La MCU consta de dos partes: el MP (Multipoint Processor) que actúa como un DSP (Digital Signal Processor) para manejar varios canales de audio y vídeo, y el MC (Multipoint Controller) que se encarga de la señalización Direccionamiento en H.323 H.323 soporta varios tipos de direcciones tales como direcciones alias, URL s, y números de teléfono tradicional (estos siguen la recomendación de la ITU E.164) La señalización en H.323 La función de señalización está basada en la recomendación H.225, que especifica el uso y soporte de mensajes de señalización Q.931/Q932. Las llamadas son enviadas sobre TCP por el puerto Sobre este puerto se inician los mensajes de control de llamada Q.931 entre dos terminales para la conexión, mantenimiento y desconexión de llamadas. Los mensajes más comunes de Q.931/Q.932 usados como mensajes de señalización H.323 son: Setup: es enviado para iniciar una llamada H.323 y establecer una conexión con una entidad H.323. Entre la información que contiene el mensaje se encuentra la dirección IP, puerto y alias del llamante o la dirección IP y puerto del llamado. Telefonía de código abierto Asterisk 40

42 Entorno tecnológico de la VoIP 1. Protocolos VoIP Call Proceeding: es enviado por el Gatekeeper a un terminal advirtiendo del intento de establecer una llamada una vez analizado el número llamado. Alerting: indica el inicio de la fase de generación de tono. Connect: indica el comienzo de la conexión. Release Complete: enviado por el terminal para iniciar la desconexión. Facility: es un mensaje de la norma Q.932 usado como petición o reconocimiento de un servicio suplementario. EL canal de control H.245 es un conjunto de mensajes ASN.1 (Abstract Syntax Notation One) usados para el establecimiento y control de una llamada. Los mensajes más relevantes son: MasterSlaveDetermination (MSD): este mensaje es usado para prevenir conflictos entre dos terminales que quieren iniciar la comunicación. Decide quién actuará de Master y quién de Slave. TerminalCapabilitySet (TCS): mensaje de intercambio de capacidades soportadas por los terminales que intervienen en una llamada. OpenLogicalChannel (OLC): mensaje para abrir el canal lógico de información contiene información para permitir la recepción y codificación de los datos. Contiene la información del tipo de datos que serán transportados. CloseLogicalChannel (CLC): mensaje para cerrar el canal lógico de información Fases de una llamada H.323 Una llamada en H.323 consta de las siguientes fases: Establecimiento de la comunicación. Comunicación inicial e intercambio de capacidades. Establecimiento de la comunicación. Servicios de llamada. Terminación de la llamada. Tomando como ejemplo el escenario que nos muestra la Figura 25, vamos a ver los mensajes que se intercambian dos terminales H.323 cuando el Terminal 1 llama al Terminal 2. Telefonía de código abierto Asterisk 41

43 Entorno tecnológico de la VoIP 1. Protocolos VoIP Figura 25. Escenario de ejemplo de una llamada entre dos terminales Fase 1: Establecimiento de la conexión Suponiendo que ambos terminales están registrados en el gatekeeper y que éste opera en modo directo, la secuencia de mensajes que se produce la vemos en la siguiente figura. Figura 26. Secuencia de mensajes en la fase Establecimiento de la conexión con el Gatekeeper en modo Direct routed. Lo primero que podemos ver es un intercambio de mensajes RAS. Este consiste en una petición de acceso a la red mediante el envío de un mensaje ARQ (Admission Request) y la autorización por parte del gatekeeper mediante el envío de un ACF (Admission Confirm). Si el gatekeeper denegase el acceso, utilizaría un mensaje ARJ (Admission Reject). El gatekeeper utiliza además el mensaje ACF para devolver la dirección del canal de señalización del terminal 2. Haciendo uso de esta información, el terminal 1 envía un mensaje de establecimiento de comunicación Setup directamente al terminal 2 sin pasar por el gatekeeper. A continuación, el terminal 2 manda un mensaje de llamada en curso (Call Proceding) con el que indica que se ha iniciado el establecimiento de la conexión. Seguidamente, si el terminal 2 desea aceptar la llamada, inicia un intercambio ARQ/ACF con el gatekeeper como el anteriormente descrito para el terminal 1. Telefonía de código abierto Asterisk 42

44 Entorno tecnológico de la VoIP 1. Protocolos VoIP Una vez hecho esto, se envía un mensaje de aviso (Alert) que indica que se ha iniciado el aviso al usuario, es decir, que la generación de tono ha comenzado. Por último, se transmite el mensaje de conexión (Connect) el cual contiene una dirección de transporte de canal de control H.245 para su utilización en la posterior señalización. Si el gatekeeper hubiera actuado en modo Gatekeeper routed, el intercambio se mensajes sería el de la Figura 27 que vemos a continuación. Terminal 1 Gatekeeper Terminal 2 RAS ARQ RAS ACF H.225 Setup H.225 Call Proceding H.225 Alert H.225 Connect H.225 Setup H.225 Call Proceding RAS ARQ RAS ACF H.225 Alert H.225 Connect Figura 27. Secuencia de mensajes en la fase Establecimiento de la conexión con el Gatekeeper en modo Gatekeeper routed. Podemos observar como ahora, la señalización pasa toda ella por el gatekeeper. Así, en la respuesta ACF del gatekeeper, no se da la dirección del terminal 2 sino la propia del gatekeeper. Al final, en el mensaje de conexión connect, el gatekeeper puede optar por incluir la dirección del terminal 2 o la suya para el canal de control H.245, dependiendo de si el controlador de acceso decida encaminar o no el canal de control H Fase 2: Comunicación inicial e intercambio de capacidades En esta fase se abre una negociación mediante el protocolo H.245 (control de conferencia). El intercambio de los mensajes (petición y respuesta) entre los dos terminales establece quién será el dispositivo principal (master) y quién el subordinado (slave) así como las capacidades de los participantes. En la Figura 28 vemos la secuencia de mensajes que se generaría. Telefonía de código abierto Asterisk 43

45 Entorno tecnológico de la VoIP 1. Protocolos VoIP Figura 28. Secuencia de mensajes en la fase Comunicación inicial e intercambio de capacidades Fase 3: Establecieminto de la comunicación En esta fase los terminales intercambian mensajes OLC (Open Logical Channel) para abrir el canal de comunicación. Estos mensajes contienen entre otras cosas, información relativa a los códecs de audio y vídeo que se van a utilizar así como los puertos RTP y RTPC que se van a destinar para la comunicación. Al final de esta fase una comunicación está abierta entre los dos terminales y pueden empezar a enviar audio o vídeo. Figura 29. Secuencia de mensajes en la fase Establecimiento de la comunicación Fase 4: Servicios de llamada Dentro de esta fase los terminales pueden intercambiarse mensajes para cosas como cambio de ancho de banda, en el que nuevos mensajes OCL sería necesarios, o para ampliar la conferencia a una multipunto entre otras Fase 5: Terminación de la llamada En esta fase cualquiera de los participantes activos en la comunicación puede iniciar el proceso de finalización de llamada mediante los mensajes CLC (Close Logical Channel) y ESC (End Session Comand) de H.245. Telefonía de código abierto Asterisk 44

46 Entorno tecnológico de la VoIP 1. Protocolos VoIP Posteriormente, utilizando H.225 se cierra la conexión con el mensaje Release Complete. Por último se envían los mensajes RAS DRQ (Disengage Request) y DCF (Disengage Confirm) con los que los terminales se desligan del gatekeeper. Terminal 1 Gatekeeper Terminal 2 H.245 CLC ACK H.245 ESC ACK H.245 CLC H.245 ESC H.225 Release Complete RAS DCF RAS DRQ RAS DRQ RAS DCF Figura 30. Secuencia de mensajes en la fase Terminación de la llamada. 1.3 Protocolo IAX Introducción El protocolo IAX se corresponde con Inter-Asterisk exchange protocol. Como indica su nombre fue diseñado como un protocolo de conexiones VoIP entre servidores Asterisk aunque hoy en día también sirve para conexiones entre clientes y servidores que soporten el protocolo. La versión actual es IAX2 ya que la primera versión de IAX ha quedado obsoleta Es un protocolo diseñado y pensado para su uso en conexiones de VoIP aunque puede soportar otro tipo de conexiones (por ejemplo video). De ahí, que sea un protocolo mucho más ligero, simple y compacto que H.323 y SIP. Ha sido creado por Mark Spencer, fundador de Digium, y aunque propietario es de código abierto. Utiliza un método propio para transportar el tráfico VoIP y no el ya mencionado RTP. En éste los mensajes se codifican de forma binaria mientras que con RTP se utilizan mensajes de texto. IAX2 presenta algunas características que lo hacen muy interesante para trasportar tráfico VoIP. Así mientras en H.323 y SIP la señalización se hace fuera de banda, en IAX2 se hace dentro, requiriéndose solamente un puerto UDP para señalización y datos (normalmente se utiliza el 4569). Recordemos que para establecer una llamada mediante SIP necesitamos un puerto para señalización (el 5060) y dos Telefonía de código abierto Asterisk 45

47 Entorno tecnológico de la VoIP 1. Protocolos VoIP puertos RTP por cada conexión de audio. Por tanto, si tenemos 100 llamadas simultáneas con SIP se utilizarán 200 puertos RTP y el puerto 5060 de señalización mientras que con IAX2 todo se haría con un mismo puerto. Además, se utiliza trunking con lo que en una misma conexión se trasportan todas las conversaciones. Esto disminuye la sobrecarga asociada a las cabeceras de los paquetes IP y por tanto minimiza el ancho de banda consumido. Y no menos importante, lo hace más robusto frente a los firewalls al tener que pasar solamente por un puerto y evita los problemas de NAT (Network Address Translation). Como inconvenientes, el más importante es que IAX2 no es un estándar con lo que no está implementado en muchos dispositivos que están en el mercado. Otro es que si utilizamos un servidor SIP, la señalización de control pasa siempre por el servidor pero la información de audio (flujo RTP) puede viajar extremo a extremo sin tener que pasar necesariamente éste. En IAX al viajar la señalización y los datos de forma conjunta todo el tráfico de audio debe pasar obligatoriamente por el servidor IAX. Esto produce un aumento en el uso del ancho de banda que deben soportar los servidores IAX sobretodo cuando hay muchas llamadas simultáneas Fases de una llamada utilizando el protocolo IAX En el protocolo IAX, una llamada se puede dividir en las siguientes fases: Establecimiento, Audio y Desconexión. La figura a continuación, nos muestra los distintos mensajes que se generan en cada uno de las fases. Telefonía de código abierto Asterisk 46

48 Entorno tecnológico de la VoIP 1. Protocolos VoIP Terminal 1 Terminal 2 ACCEPT NEW ACK ESTABLECIMIENTO RINGING ACK ANSWER ACK AUDIO Tramas M y F DESCONEXIÓN ACK HANGUP Figura 31. Intercambio de mensajes en una llamada IAX Fase 1: Establecimiento de la llamada El terminal 1 inicia una conexión y manda un mensaje "new". El terminal llamado responde con un "accept" y el llamante le responde con un "Ack". A continuación el terminal llamado da las señales de "ringing" y el llamante contesta con un "ack" para confirmar la recepción del mensaje. Por último, el llamado acepta la llamada con un "answer" y el llamante confirma ese mensaje Fase 2: Flujo de datos o flujo de audio Se mandan los frames M y F en ambos sentidos con la información vocal. Las tramas M son mini-tramas que contienen solo una cabecera de 4 bytes para reducir el uso en el ancho de banda. Las tramas F son tramas completas que incluyen información de sincronización. Es importante volver a resaltar que en IAX este flujo utiliza el mismo protocolo UDP que usan los mensajes de señalización evitando problemas de NAT Fase 3: Liberación de la llamada o desconexión La liberación de la conexión es tan sencilla como enviar un mensaje de "hangup" y confirmar dicho mensaje. Telefonía de código abierto Asterisk 47

49 Entorno tecnológico de la VoIP 2. Códecs 2. Codificadores-Decodificadores: Códecs 2.1 Introducción La comunicación de voz es analógica, mientras que la información que circula por una red de datos es digital. Por tanto es necesaria una transformación analógica-digital de la voz para que esta pueda ser transportada a través de una red de datos. El proceso de convertir ondas analógicas a información digital se hace con un codificador-decodificador, llamado códec. Hay muchas maneras de transformar una señal de voz analógica en digital, todas ellas gobernadas por varios estándares. Además de la ejecución de la conversión de analógico a digital, el códec comprime la secuencia de datos. La compresión de la forma de onda representada puede permitir un ahorro en el ancho de banda. Esto es especialmente interesante en los enlaces de poca capacidad y permite tener un mayor número de conexiones de VoIP simultáneamente. Otra manera de ahorrar ancho de banda es el uso de la supresión del silencio, que es el proceso de no enviar los paquetes voz entre silencios en conversaciones humanas. 2.2 Proceso de conversión analógico-digital El proceso de conversión de una señal se puede dividir en las siguientes tres fases: Muestreo Cuantificación Codificación A continuación pasamos a describirlas Fase 1: Muestreo El proceso de muestreo consiste en tomar valores instantáneos de una señal analógica a intervalos de tiempo iguales. A los valores obtenidos se les llama muestras.

50 Entorno tecnológico de la VoIP 2. Códecs Este proceso se ilustra en la siguiente figura: Figura 32. Proceso de muestreo. El muestreo se efectúa siempre a un ritmo uniforme, que viene dado por la frecuencia de muestreo (sampling rate). La condición que debe cumplir la frecuencia de muestreo viene dada por el teorema de Nyquist: si una señal contiene únicamente frecuencias inferiores a f, queda completamente determinada por muestras si estas son tomadas a una velocidad igual o superior a 2f. De acuerdo con el teorema del muestreo, las señales telefónicas de frecuencia vocal (que ocupan la banda de 300 a Hz), se han de muestrear a una frecuencia igual o superior a Hz (2 x 3.400). En la práctica, sin embargo, se suele tomar una frecuencia de muestreo o sampling rate de fm = Hz. Es decir, se toman muestras por segundo, o lo que es lo mismo, se toma una muestra cada 125 µs Fase 2: Cuantificación La cuantificación es el proceso mediante el cual se asignan valores discretos a las amplitudes de las muestras obtenidas en el proceso de muestreo. Este valor es elegido por aproximación dentro de un margen de niveles previamente fijado. El proceso de cuantificación introduce necesariamente un error ya que se sustituye la amplitud real de la muestra por un valor aproximado. A este error se le llama error de cuantificación. Las distintas técnicas de cuantificación son: Uniforme, No uniforme, Logarítmica y Vectorial. Pasemos a describir cada una de ellas Técnica de cuantificación Uniforme Es el proceso de cuantificación más simple. En ella, toda la gama de amplitudes que pueden tomar las muestras se divide en intervalos iguales y a

51 Entorno tecnológico de la VoIP 2. Códecs todas las muestras cuya amplitud cae dentro de un intervalo, se les da el mismo valor. En la figura a continuación observamos como se han dividido en 8 intervalos la amplitud de la señal. Figura 33. División de la amplitud de la señal en ocho intervalos. El problema de la cuantificación uniforme es que conforme aumenta la amplitud de la señal, también aumenta el error. Si la amplitud de la señal es grande, los intervalos se hacen también más grandes con lo que muestras de muy diferentes amplitudes podrían caer en el mismo intervalo. La solución más simple para resolver este problema sería aumentar los intervalos de cuantificación. Así, al haber más intervalos habrá menos errores pero necesitaremos más números binarios para cuantificar una muestra y por tanto acabaremos necesitando más ancho de banda para transmitirla Técnica de cuantificación No uniforme En este caso lo que se hace es estudiar el comportamiento de la señal y asignar niveles de cuantificación no uniforme de manera que asignemos más intervalos al rango de amplitudes que mas frecuentemente se dan en la señal de entrada Técnica de cuantificación Logarítmica Utilizando la cuantificación logarítmica, como paso previo a la propia cuantificación se hace pasar la señal por un compresor logarítmico. Con esto se consigue que la distancia entre los niveles de cuantificación aumente a medida que crece la amplitud de la señal. Así, conseguimos tener más niveles para las amplitudes más pequeñas con lo que se proporciona mayor resolución en señales débiles al compararse con una cuantificación uniforme. La principal ventaja de esta técnica de cuantificación es que es muy fácil de implementar y funciona razonablemente bien con señales distintas a la de la voz. Para llevar a cabo la compresión existen dos funciones muy utilizadas: Ley-A (utilizada principalmente en Europa) y ley-µ (utilizada en EEUU).

52 Entorno tecnológico de la VoIP 2. Códecs Técnica de cuantificación Vectorial En los métodos anteriores, cada muestra se cuantificaba independientemente de las muestras vecinas. Sin embargo, la teoría demuestra que ésta no es la mejor forma de cuantificar los datos de entrada. Resulta más eficiente cuantificar los datos en bloques de N muestras. El proceso es sencillamente una extensión de los métodos escalares anteriormente descritos. En este tipo de cuantificación, el bloque de N muestras se trata como un vector N- dimensional. La cuantificación vectorial ofrece mejores resultados que la cuantificación escalar, sin embargo, es más sensible a los errores de transmisión y lleva consigo una mayor complejidad computacional Fase 3: Codificación La codificación es el proceso mediante el cual se representa una muestra cuantificada, mediante una sucesión de "1's" y "0's", es decir, mediante un número binario. Así, usando la división en ocho intervalos de vista en la Figura 33, vemos como la señal de origen estaría codificada por la siguiente secuencia binaria: El dispositivo que realiza la cuantificación y la codificación se llama codificador. 2.3 Tipos de codificadores de voz Los codificadores de voz se clasifican en tres grandes grupos: Codificadores de la forma de onda Vocoders Codificadores híbridos Codificadores de la forma de onda En codificadores de forma de onda, se engloban aquellos codificadores que intentan reproducir la forma de la onda de la señal de entrada sin tener en cuenta la naturaleza de la misma. Los codificadores, en función de en qué dominio operen, se dividen en: Codificadores en el dominio del tiempo Codificadores en el dominio de la frecuencia

53 Entorno tecnológico de la VoIP 2. Códecs Codificadores en el dominio del tiempo Dentro de este grupo tenemos los siguientes codificadores: PCM, DPCM y ADPCM. PCM (Pulse Code Modulation) La modulación por codificación de impulsos es la codificación de forma de onda más sencilla. Cada muestra que entra al codificador se cuantifica en un determinado nivel de entre un conjunto finito de niveles. Cada uno de estos niveles se hace corresponder con una secuencia de dígitos binarios, y ésto es lo que se envía al receptor. Se pueden usar distintos criterios para llevar a cabo la cuantificación, siendo el más usado el de la cuantificación logarítmica. DPCM (Differential Pulse-Code Modulation) En las señales de frecuencia vocal, predominan generalmente las bajas frecuencias, por ello las amplitudes de dos muestras consecutivas difieren generalmente en una cantidad muy pequeña. Aprovechando esta circunstancia, se ha ideado la cuantificación diferencial. En la cuantificación diferencial, en lugar de tratar cada muestra separadamente, se cuantifica y codifica la diferencia entre una muestra y la que le precede. Como el número de intervalos de cuantificación necesarios para cuantificar la diferencia entre dos muestras consecutivas es lógicamente inferior al necesario para cuantificar una muestra aislada. Con este codificador se reduce en un 25% los bits necesarios para cuantificar una muestra. ADPCM (Adaptive Differential Pulse Code Modulation) Es un tipo de DPCM más sofisticado, que se basa en ajustar la escala de cuantificación de forma dinámica para adaptarse mejor a las diferencias de la señal de entrada Codificadores en el dominio de la frecuencia Este tipo de codificadores dividen la señal en distintas componentes según la frecuencia y codifican cada una de éstas de forma independiente. El número de bits usados para codificar cada componente en frecuencia puede variar dinámicamente. Entre los codificadores de este tipo están la codificación en subbandas y la codificación por transformada.

54 Entorno tecnológico de la VoIP 2. Códecs Vocoders En el grupo de vocoders están aquellos codificadores que sí tienen en cuenta la naturaleza de la señal a codificar, en este caso la voz, y aprovechan las características de la misma para ganar en eficiencia. Permiten trabajar con muy bajos bit rates, pero la señal de voz que producen suena demasiado sintética. El más utilizado es el vocoder por predicción lineal Codificadores híbridos En la codificación híbrida se combinan las técnicas de los codificadores de la forma de la onda con las de los vocoders con el propósito de obtener una alta calidad de voz a bajos bit-rates (inferiores a 8 Kb/s). En estos codificadores, las muestras de la señal de entrada se dividen en bloques de muestras (vectores) que son procesados como si fueran uno solo. Llevan a cabo una representación paramétrica de la señal de voz para tratar que la señal sintética se parezca lo más posible a la original. También se les conoce como codificadores de análisis-por-síntesis. En el emisor se lleva a cabo un análisis que obtiene los parámetros de la señal para luego sintetizarla y conseguir el mayor parecido a la original. Entre este tipo de codificadores se encuentran CELP (Code Excited Linear Prediction) y RPE-LTP (Regular Pulse Excitation - Long Term Prediction). 2.4 Tabla Resumen de los principales códecs de audio En la tabla a continuación, podemos ver un resumen de los códecs más utilizados actualmente. Nombre Organismo estandarizador Tipo de codificación Tasa de bits (Bit rate) Frecuencia de muestreo MOS G.711 ITU-T PCM 64 Kbps 8 khz 4.1 G.726 ITU-T ADPCM 32 Kbps 8 khz 3.85 G.728 ITU-T CELP 16 Kbps 8 khz 3.61 G.729A ITU-T CELP 8 Kbps 8 khz 3.9 GSM ETSI RPE-LTP 13 Kbps 8 khz 3.4 Tabla 3. Características de los códecs más utilizados.

55 Entorno tecnológico de la VoIP 2. Códecs El valor MOS 23 (Mean Opinion Score) hace referencia a la calidad de la voz la cual es calificada con un número entre 1 y 5 proporcional a la calidad de la voz. Un valor de 1 significa muy mala calidad y 5 significa excelente. Los valores se obtienen mediante el promedio de las opiniones de un gran grupo de usuarios. 2.5 Influencias en el Ancho de Banda consumido por una comunicación Además de los bits que representan datos, todos los paquetes que circulan por una red están formados también por bits que son utilizados para cuestiones de enrutamiento y corrección de errores. Estos bits, introducen en la red una sobrecarga. Así, estos bits aunque necesarios para el correcto funcionamiento de la red, no aportan en realidad ningún beneficio directo a nuestra aplicación. Para aprovechar de forma eficiente el ancho de banda de una red VoIP, es de suma importancia reducir esta sobrecarga Influencia del códec en el ancho de banda Lo primero que podemos pensar para reducir esta sobrecarga, es enviar cuantos menos paquetes mejor para que la proporción de datos frente a las cabeceras sea mayor. Así cuanto mayor sea la cantidad de sonido que transmito en un paquete, menos cantidad de paquetes tendremos que enviar. Ahora bien, al hacer esto estamos aumentado el impacto que tiene la pérdida de un paquete en la red y por tanto en la calidad de la conversación. Si enviamos un paquete con cantidades de sonido de 60ms, la pérdida de uno de estos paquetes se notará mucho más que si por ejemplo enviamos cantidades de 20ms. Es por tanto clave llegar a un equilibrio entre una sobrecarga aceptable y una también aceptable resistencia a errores para aprovechar mejor el ancho de banda disponible. El administrador, mediante la elección de un tiempo de intervalo u otro, tiene la posibilidad de llegar al ya citado equilibrio. En la siguiente tabla podemos ver las características de algunos de los códecs más habituales utilizando el intervalo de paquete por defecto para cada uno de ellos. 23 Es una representación numérica de la calidad de la voz creada por la industria de las telecomunicaciones y estandarizada en la ITU-T P.800.

56 Entorno tecnológico de la VoIP 2. Códecs Códec Ancho de banda Intervalo de paquete Bits de voz por paquete Procesado G Kbps 20ms 1280 bits Bajo G Kbps 20ms 640 bits Medio G Kbps 10ms 160 bits Alto G.729A 8 Kbps 10ms 160 bits Alto GSM 13 Kbps 20ms 160 bits Bajo Tabla 4. Consumo de ancho de banda de los códecs más usados. Tomando como ejemplo el códec G.711, considerando que son necesarias 8000 muestras por segundo y teniendo en cuenta que para cada muestra necesitamos 8 bits de información, como 20ms es 1/50s, vemos que la longitud del campo de datos del paquete sería de 1280 bits. Generalmente, para llamadas dentro de una LAN Ethernet se recomienda el uso del códec G.711 con intervalo de paquete de 20ms, ya que un ancho de banda de 100Mbps soporta perfectamente cientos de conversaciones simultáneas de 64Kbps y la pérdida de un paquete a 20ms es casi imperceptible. Sin embargo para enlaces más lentos, podemos optar por otros. Hasta ahora hemos estado hablando de sobrecarga pero sólo la que se refiere a la cantidad de sonido que transporta un paquete. Ahora bien, la sobrecarga es algo que también se ve afectado por las capas de red y enlace de datos. En el apartado siguiente discutiremos este aspecto Influencia de las capas 2 y 3 en el ancho de banda Al calcular el ancho de banda que necesitará una comunicación debemos tener en cuenta, que además de los bits de datos, es necesario transportan otros bits necesarios para que la información pueda ser encaminada a su destino. Tomando como ejemplo una comunicación SIP en una red Ethernet utilizando el códec G.711 con un intervalo de paquete de 20ms, vamos a ver cuánto suponen estos bits de sobrecarga en al cálculo del ancho de banda por paquete. Primero, consideremos que los 1280 bits de audio calculados en el apartado anterior se envían utilizando el protocolo RTP. A su vez, este protocolo utiliza UDP como protocolo de trasporte el cual va contenido en un paquete IP que por último es encapsulado en una trama Ethernet para ser enviado.

57 Entorno tecnológico de la VoIP 2. Códecs En la figura a contuniación podemos ver la cantidad de bits que aporta cada cada protocolo utilizado. Figura 34. Longitud total en bits de un paquete IP sobre Ethernet utilizando el códec G.711. En total, cada paquete Ethernet tiene una longitud de 1904, lo que supone que un 32% de los bits que se transmiten son de sobrecarga. Si utilizamos una velocidad de paquete de 20ms, estamos enviando 50 paquetes cada segundo. Por tanto, cada segundo enviamos 50 veces 1904 bits o lo que es lo mismo, bits. Eso se traduce en que el ancho de banda real que necesitaremos para transportar el trafico será de 95.2 Kbps. En la Tabla 5 24 observamos el ancho de banda total que necesitan algunos de los códecs más utilizados cuando usando Ethernet como protocolo de capa dos. Códec Ancho de Banda del sonido Ancho de banda de la sobrecarga de Ethernet Ancho de banda total G Kbps 31.2 Kbps 95.2 Kbps G Kbps 31.2 Kbps 63.2 Kbps G Kbps 31.2 Kbps 78.4 Kbps G.729A 8 Kbps 31.2 Kbps 39.2 Kbps GSM 13 Kbps 31.2 Kbps 44.2 Kbps Tabla 5. Consumo de ancho da banda total de los códecs más habituales. Decir que Ethernet no es el único medio de trnasporte para la VoIP, se utilizan otros como Frame Relay, ATM, enlaces de punto a punto. Cada uno de ellos introducirá por tanto una sobrecarga acorde con el tamaño de bits de cabecera que use. 24 Tabla obtenida del libro: Wallingford T, (2005), Switching to VoIP, O Reilly, Sección

58 Entorno tecnológico de la VoIP 2. Códecs 3. Calidad de servicio (QoS, Quality of Service) 3.1 Introducción El auge de la telefonía IP es algo evidente y la principal razón es el reaprovechamiento de los recursos y la disminución en el coste de llamadas a través de Internet. Sin embargo, si de algo adolece todavía la VoIP es de la calidad de los sistemas telefónicos tradicionales. Los problemas de esta calidad son muchas veces inherentes a la utilización de la red (Internet y su velocidad y ancho de banda) y podrán irse solventando en el futuro. Mientras tanto, cuanto mejor conozcamos los problemas que se producen y sus posibles soluciones podremos disfrutar de una mayor calidad. Los principales problemas en cuanto a la calidad del servicio (QoS) de una red de VoIP, son el Retardo, el Jitter y la pérdida de paquetes. Además comentaremos los protocolos que podemos utilizar para garantizar un ancho de banda y que nos permitan priorizar el tráfico en tiempo real. Estos protocolos son: 802.1p, 802.1q, Diffserv, RSVP y MLPS. 3.2 Factores que afectan a la calidad de servicio Códec utilizado en la comunicación El primer factor que influye en la calidad del sonido de la voz es sin duda el códec utilizado. Así, hay una correlación general entre la calidad de voz y la velocidad de datos: cuanto mayor sea el bit rate de un códec, mejor será la calidad de la voz Retardo o Latencia A la latencia también se la llama retardo. No es un problema específico de las redes no orientadas a conexión y por tanto de la VoIP. Es un problema general de las redes de telecomunicación. Por ejemplo, la latencia en los enlaces vía satélite es muy elevada por las distancias que debe recorrer la información. La latencia se define técnicamente en VoIP como el tiempo que tarda un paquete en llegar desde la fuente al destino. La latencia o retardo entre el punto inicial y final de la comunicación debiera ser ser inferior a 150 ms. El oído humano es capaz de detectar latencias de unos

59 Entorno tecnológico de la VoIP 2. Códecs 250 ms, 200 ms en el caso de personas bastante sensibles. Si se supera ese umbral la comunicación se vuelve molesta. El retardo puede ser provocado por las siguientes causas: retardo del algoritmo, de paqetización, de serialización, de propagación y de componente Retardo por causa del algoritmo Es el retardo introducido por el codificador al procesar los datos. Los códecs vocales actúan sobre conjuntos de muestras vocales conocidos como tramas. Cada bloque de muestras vocales de entrada se procesa para convertirlo en una trama comprimida. La trama vocal codificada no se genera hasta que todas las muestras vocales de la trama de entrada hayan sido recogidas por el codificador. De este modo, hay un retardo de duración la longitud de una trama antes de que pueda comenzar el procesamiento. Además, muchos codificadores también miran a la trama siguiente para mejorar la eficacia de compresión introduciendo otro tiempo de retardo llamado tiempo de indagación. El tiempo requerido para procesar una trama de entrada se supone que es el mismo que la longitud de trama. Por tanto, el retardo a través de un par codificador/decodificador se supone que es normalmente: 2 tamaño de trama + indagación Los valores de retardo de los principales estándares los podemos ver en la siguente tabla 25 : Códec Tamaño de trama (ms) Tiempo de indagación (ms) Retardo algorítmico total (ms) G G G G.729A GSM Tabla 6. Retardo de los principales códecs Retardo por causa de la paquetización Si cada trama codificada la metiéramos en un paquete IP y la enviásemos, habría que contar con un retardo introducido por el ensamblado del paquete IP 25 Los valores están sacados de la recomendación ITU-T G.114.

60 Entorno tecnológico de la VoIP 2. Códecs y el correspondiente al de la capa de enlace de datos. En el caso de Ethernet, este tiempo se considera despreciable. Sin embargo, para evitar problemas de sobrecarga, varias tramas codificadas son puestas en un mismo paquete para ser enviadas. Así habrá que esperar un tiempo hasta que el paquete se llene de tramas para enviarlo 26. Por ejemplo, si utilizamos el códec G.711 y esperamos un tiempo de 20ms para formar un paquete, cada paquete contendrá 160 tramas. Se considera que el retardo mínimo debido al procesamiento del códec (incluyendo el retardo del algoritmo y el de paquetización), en los sistemas basados en IP es: (N + 1) tamaño de trama + indagación Donde N es el número de tramas. En la siguiente tabla podemos ver el valor de los retardos de los principales estándares para un tiempo de paquetización de 20ms. Códec Tamaño de trama (ms) Tiempo de indagación (ms) Tiempo de paquetización (ms) Nº de tramas por paquete Retardo total (ms) G G G G.729A GSM Tabla 7. Retardo de los principales códecs para un tiempo de paquetización de 20ms Retardo por causa de la serialización Es el tiempo requerido para por la colocación uno a uno de todos los bits a transmitir en el medio físico. Depende directamente de la velocidad del enlace y del tamaño del paquete que se quiera transmitir. Por ejemplo, si usamos el códec G.711 con un periodo de paquetización de 20 ms, habría 160 bytes de datos de voz (ya que cada muestra es de 8 bits). Para calcular el tamaño de una trama completa de Ethernet, tendremos que añadirle las cabeceras de los diferentes protocolos en los que se va encapsulando la voz. 26 En la recomendación RFC 3551 [4.2], se recomienda que para paquetes RTP se utilice un tiempo de paquetización de 20ms aunque éste es un parámetro configurable.

61 Entorno tecnológico de la VoIP 2. Códecs Así, sumamos 20 bytes de RTP, 16 bytes de UDP, 20 bytes de IP y 14 bytes de Ethernet. Esto nos da un total de 70 bytes de cabeceras que sumado a los 160 bytes de voz dan un total de 230 bytes. En la tabla a continuación vemos cuanto sería el retardo dependiendo de la velocidad del enlace. Velocidad del enlace (Kbps) Retardo de serialización (ms) Tabla 8. Retardo dependiendo de la velocidad del enlace Retardo por causa de la propagación Es el tiempo requerido por la señal óptica o eléctrica para viajar a través de un medio de transmisión y es proporcional a la distancia que recorre. La velocidad depende del medio por donde transite la señal. Así por ejemplo, la velocidad de propagación utilizando un cable es de aproximadamente 4 o 6 µs/km y para una transmisión por satélite, el retardo es de unos 12 a 260 ms dependiendo de la altura a la que esté Retardo por causa de los componentes Los retardos de componente son causados por los equipos intermedios que debe atravesar una comunicación. Si el paquete que contiene la trama de sonido debe atravesar por ejemplo un router 27, este introducirá un retraso debido al tiempo que tarda en mirar las cabeceras, mover el paquete de interfaz, etc Problemas causados por el Retardo: Eco y Solapamiento Después de comentar todas las causas por las que puede producirse retardo en una comunicación, vamos a ver a continuación los dos principales problemas que causa: el eco y el solapamiento. Eco El eco se define como una reflexión retardada de la señal acústica original. Se hace más molesto cuanto mayor es el retardo y cuanto mayor es su intensidad con lo cual se convierte en un problema en VoIP puesto que los retardos suelen ser mayores que en la red de telefonía tradicional. Cuando el retardo en una comunicación es bajo, el eco que genera un participante al hablar regresa muy rápido y no se percibe. Así, si el enlace de una comunicación tiene un retardo menor que 25ms, el eco llegará tan rápido al participante que ha hablado que no lo percibirá. Sin embargo, el retardo de una 27 Para consultar el retardo que introducen otros medios o equipos en una comunicación podemos consultar la recomendación de la ITU G.114 [A.1].

62 Entorno tecnológico de la VoIP 2. Códecs comunicación VoIP es casi siempre superior a esta cifra con lo que hay que combatirlo siempre. Hay dos técnicas para eliminar el eco: a) Supresores de eco: consiste en evitar que la señal emitida sea devuelta convirtiendo por momentos la línea full-duplex en una línea half-duplex de tal manera que si se detecta comunicación en un sentido se impide la comunicación en sentido contrario. El tiempo de conmutación de los supresores de eco es muy pequeño pero impide una comunicación full-duplex plena. b) Canceladores de eco: es el sistema por el cual el dispositivo emisor guarda la información que envía en memoria y es capaz de detectar en la señal de vuelta la misma información (tal vez atenuada y con ruido). El dispositivo filtra esa información y cancela esas componentes de la voz. Esta técnica requiere mayor tiempo de procesamiento que la anterior. Solapamiento Aún con un método de cancelación de eco perfecto, mantener una conversación llega a ser dificultoso cuando el retardo es demasiado grande debido al solapamiento de las voces de los participantes. Para terminar y en líneas generales, se debe intentar que el retardo o latencia de un enlace sea inferior a 150ms. Un valor entre 150ms y 400ms puede ser tolerable siempre y cuando se vigile el tráfico por parte del administrador. Un valor superior a 400ms es ya inaceptable. En la Figura observamos el grado de satisfacción de los usuarios con respecto a la cantidad de latencia. 28 Figura extraída de la recomendación de la ITU-T G.114.

63 Entorno tecnológico de la VoIP 2. Códecs Figura 35. Índice de satisfacción de los usuarios con respecto a la latencia. Decir, que esta gráfica está elaborada utilizando el modelo E 29. Este modelo fue creado para estimar o predecir la calidad de la voz en redes IP (VoIP) percibida por un usuario típico, en base a parámetros medibles de la red. El resultado del E-Model es un factor escalar, llamado R (Transmission Rating Factor), que puede tomar valores entre 0 y 100. Aquí en esta gráfica podemos ver R, en función del retardo. También se muestran las categorías de la calidad vocal 30 que transforma los valores de R en valores de aceptación de usuario Jitter El jitter se define técnicamente como la variación en el tiempo en la llegada de los paquetes y es algo ligado al hecho de que los paquetes en una red de conmutación de paquetes no orientada a la conexión siguen diferentes rutas para llegar al destino. La solución más ampliamente adoptada para la corrección del jitter es la utilización de un buffer donde almacenar los paquetes para posteriormente servirlos con un pequeño retraso. Si algún paquete no está en el buffer (porque se perdió o porque no ha llegado todavía) cuando sea necesario, éste se descarta. 29 Creado por la ITU en la ITU T G Definidas en la recomendación ITU-T G.109 [5].

64 Entorno tecnológico de la VoIP 2. Códecs Normalmente en los teléfonos se pueden modificar el tamaño de los buffers. Así, un aumento del buffer implica menos pérdida de paquetes pero más retraso y una disminución implica menos retardo pero más pérdida de paquetes Pérdida de paquetes Las comunicaciones en tiempo real están basadas en el protocolo UDP. Este es un protocolo no orientado a conexión por lo tanto si se produce la pérdida de algún paquete no se reenviará. También se pueden producir pérdidas al descartarse paquetes que llegan, pero que no lo hacen a tiempo. Sin embargo la voz es bastante predictiva y si se pierden paquetes aislados se puede recomponer la voz de una manera bastante óptima. El problema es mayor cuando se producen pérdidas de paquetes en ráfagas. La perdida de paquetes máxima admitida para que no se degrade la comunicación deber ser inferior al 1%. Pero es bastante dependiente del códec que se utilice 31. Cuanto mayor sea la compresión del códec más pernicioso es el efecto de la pérdida de paquetes. Una pérdida del 1% degrada más la comunicación si se usa el códec G.729 que si utilizamos G Protocolos para mejorar la calidad de servicio Entre los protocolos que vamos a describir a continuación, podemos hacer la distinción de protocolos CoS (Class of Service) y QoS (Quality of Service). Los primeros tienen la capacidad de hacer una distinción del tráfico que circula por una red para después poder tratarlo en función de esta clasificación pero no tienen ningún mecanismo para reservar, y por lo tanto garantizar, un determinado ancho de banda. En este grupo se encuentran 802.1p, Diffserv y 802.1q. Por otro lado tenemos a los protocolos Intserv y MPLS, los cuales son considerados protocolos QoS por tener la capacidad de reservar un determinado ancho de banda a una comunicación. Pasemos a describir cada unos de ellos: p IEEE 802.1p es un estándar que proporciona priorización de tráfico y filtrado multicast dinámico. Esencialmente, proporciona un mecanismo para implementar calidad de servicio a nivel de MAC (Media Access Control). 31 Para ver las distintas tolerancias a pérdidas de paquetes de los codecs aconsejamos mirar la recomendación G.113 de la ITU-T.

65 Entorno tecnológico de la VoIP 2. Códecs Utilizando una etiqueta de 3 bits añadida a la trama Ethernet, se asigna a cada paquete un nivel de prioridad entre 0 y 7. No está definida la manera de cómo tratar el tráfico que tiene asignada una determinada clase o prioridad, dejando libertad a las implementaciones. IEEE, sin embargo, ha hecho amplias recomendaciones al respecto. Aunque es un método de priorización bastante utilizado en entornos LAN tiene como inconveniente que sólo puede ser soportada en redes de este tipo, ya que las etiquetas se eliminan cuando los paquetes pasan a través de un router Diffserv DiffServ (Differentiated Services) es una arquitectura de red que define un método simple, escalable y de ajuste grueso para clasificar el tráfico de una red y proveer CoS. En una arquitectura Diffserv todos los paquetes que pertenezcan a una misma clase recibirán un mismo tratamiento por parte de la red. Así, cuanto mayor sea la prioridad o el ancho de banda asignado a la clase mejor trato recibirá. La ventaja de DiffServ frente a las otras arquitecturas consiste en la posibilidad de utilizar la actual infraestructura de red sin necesidad de introducir grandes cambios, y entre sus inconvenientes que no es capaz de garantizar de forma determinista una determinada calidad de servicio, garantizando sólo un mejor tratamiento a ciertos flujos (calidad relativa) por parte de la red. Una red DiffServ consta de dos tipos de nodos, los nodos frontera y los nodos interiores. Los nodos frontera son los encargados de clasificar el tráfico entrante, asignándolo a algunas de las clases. Cuando llega tráfico a un dominio Diffserv, el nodo frontera asigna cada paquete a una de las clases en función de diversos criterios como puede ser dirección origen/destino, puertos, protocolo, etc. Una vez asignada a una clase el paquete es introducido en el dominio DiffServ y no vuelve a ser reexaminado q VLAN El protocolo IEEE 802.1Q fue un proyecto del grupo de trabajo 802 de la IEEE para desarrollar un mecanismo que permitiera a múltiples redes compartir de forma transparente el mismo medio físico, sin problemas de interferencia entre ellas. En esta tecnología, los switches se utlizan para agruprar estaciones de trabajo y servidores en agrupaciones lógicas. Los dispositivos que pertenecen a una VLAN están restringidos a la comunicación con los dispositivos de su propia VLAN, de modo que la red conmutada funciona como como varias LAN individuales sin conectar. Las cabeceras de las tramas son modificadas para introducir una etiqueta que identifique a que VLAN pertenece cada trama. Esta etiqueta incluye un campo

66 Entorno tecnológico de la VoIP 2. Códecs de prioridad igual que el de 802.1p con el que igual que antes podemos proirizar el tráfico. Además de esto, la división de una red en VLANs aporta otras muchas ventajas entre ellas la de la reducción de los dominios de broadcast, de seguridad, etc. Por último decir que muchas empresas separan el tráfico de sus redes en dos VLANs, una para los datos y otra para la VoIP Intserv (Integrated Service) y RSVP Basado en la utilización de un protocolo de reserva (RSVP, ReSerVation Protocol), nos permite realizar una reserva de recursos en todos los routers implicados en la comunicación. Así, un host solicitará una QoS específica de la red para una aplicación o flujo de datos en particular y los routers enviarán las solicitudes de QoS a todos los nodos a lo largo de la trayectoria del dato. El principal inconveniente que se nos presenta ante esta tecnología, radica en la necesidad de mantener información sobre cada flujo en todos los routers de la red, lo cual conduce a problemas de escalabilidad. En comparación con la arquitectura Diffserv que se considera de ajuste grueso, Intserv es considerada de ajuste fino MPLS MPLS 32 (siglas de Multiprotocol Label Switching) es un mecanismo de transporte de datos estándar que opera entre la capa de enlace de datos y la capa de red del modelo OSI. MPLS proporciona los beneficios de la ingeniería de tráfico del modelo de IP sobre ATM, pero además, otras ventajas; como una operación y diseño de red más sencilla y una mayor escalabilidad. MPLS asigna a las tramas que circulan por la red una identificación que le indica a los routers la ruta que deben seguir los datos. Por lo tanto, MPLS sirve para la administración de la calidad de servicio al definir cinco clases de servicios. En su día dominio exclusivo de grandes corporaciones y operadores de telecomunicaciones, constituye ya una alternativa de mucho mayor alcance. La creciente necesidad de reducir costes, aumentar la productividad, soportar más aplicaciones y elevar la seguridad está jugando fuerte a favor del cambio corporativo hacia esta nueva tecnología WAN. 32 Creado por la IETF y definido en el RFC 3031.

67 II. Plataforma Asterisk En esta segunda parte, presentaremos la plataforma de telefonía y centralita telefónica Asterisk, describiendo para ello su arquitectura interna, algunos escenarios donde puede actuar así como los dispositivos que tiene que disponer un usuario final para beneficiarse de sus servicios. A continuación, se describirá cómo Asterisk es capaz de interactuar con la Red Telefónica Básica. Para terminar, haremos un pequeño recorrido por las diferentes tecnologías y productos que nos ofrece el mercado actual, tanto los que se basan en Asterisk como los que representan una alternativa a éste.

68 Plataforma Asterisk 4. Asterisk 4. Asterisk En este capítulo descubriremos qué es exactamente Asterisk y para qué sirve. Para ello presentaremos brevemente las funcionalidades que ofrece, comentaremos su arquitectura y describiremos algunos de los escenarios donde Asterisk puede actuar. 4.1 Qué es un PBX? Un PBX o PABX (Private Branch Exchange y Private Automatic Branch Exchange respectivamente) cuya traducción al español sería: central secundaria privada automática, es cualquier central telefónica conectada directamente a la red pública de teléfono por medio de líneas troncales para gestionar, además de las llamadas internas, las entrantes y/o salientes con autonomía sobre cualquier otra central telefónica. Este dispositivo generalmente pertenece a la empresa que lo tiene instalado y no a la compañía telefónica, de aquí el adjetivo privado a su denominación. Un PBX se refiere al dispositivo que actúa como un ramificación de la red primaria pública de teléfono, por lo que los usuarios no se comunican con el exterior mediante líneas telefónicas convencionales, sino que al estar el PBX directamente conectado a la RTB (Red Telefónica Pública), será esta misma la que enrute la llamada hasta su destino final mediante enlaces unificados de transporte de voz llamados líneas troncales. En otras palabras, los usuarios de un PBX no tienen asociada ninguna central de teléfono pública, ya que es el mismo PBX que actúa como tal, análogo a una central pública que da cobertura a todo un sector mientras que un PBX lo ofrece a las instalaciones de una compañía generalmente. No tienen límite en cuanto al número de estaciones que pueden servir, pero el precio aumenta según el número de estaciones. Los sistemas PBX son más sofisticados que los equipos multilínea o los sistemas híbridos, pero también son más costosos. La capacidad de un PBX no se determina por líneas, sino por puertos, el número total de alambres que puede conectar el sistema. Los sistemas PBX pueden soportar características especiales de tecnología avanzada. Telefonía de código abierto Asterisk 67

69 Plataforma Asterisk 4. Asterisk 4.2 Qué es Asterisk? Asterisk es tanto una plataforma de telefonía como una centralita software (PBX) de código abierto. Como cualquier centralita PBX permite interconectar teléfonos y conectar dichos teléfonos a la red telefónica pública. Su nombre viene del símbolo asterisco (*) en inglés. El creador original de esta centralita es Mark Spencer de la compañía Digium que sigue siendo el principal desarrollador de las versiones estables. Pero al ser de código libre, existen multitud de desarrolladores que han aportado funciones y nuevas aplicaciones. Originalmente fue creada para sistemas Linux pero hoy en día funciona también en sistemas OpenBSD, FreeBSD, Mac OS X, Solaris Sun y Windows aunque Linux sigue siendo la que más soporte presenta. El paquete básico de Asterisk incluye muchas características que antes sólo estaban disponibles en caros sistemas propietarios como creación de extensiones, envío de mensajes de voz a , llamadas en conferencia, menús de voz interactivos y distribución automática de llamadas. Además se pueden crear nuevas funcionalidades mediante el propio lenguaje de Asterisk o módulos escritos en C o mediante scripts AGI escritos en Perl o en otros lenguajes. Asterisk soporta numerosos protocolos de VoIP como SIP y H.323. Asterisk puede operar con muchos teléfonos SIP, actuando como servidor de registro, o como "gateway" entre teléfonos IP y la red telefónica convencional. Al soportar una mezcla de la telefonía tradicional y los servicios de VoIP, Asterisk permite a los desarrolladores construir nuevos sistemas telefónicos de forma eficiente o migrar de forma gradual los sistemas existentes a las nuevas tecnologías. Algunos sitios usan Asterisk para reemplazar a antiguas centralitas propietarias, otros para proveer funcionalidades adicionales y algunas otras para reducir costes en llamadas a larga distancia utilizando Internet. 4.3 Arquitectura de Asterisk La figura a contuniación, nos muestra los diferentes subsistemas que forman Asterisk. Telefonía de código abierto Asterisk 68

70 Plataforma Asterisk 4. Asterisk Asterisk Application API Códec Translator Application Launcher Scheduler and IO Manager PBX Switching Dynamic Module Loader Asterisk Channel API Figura 36. Subsistemas de Asterisk. Cada uno de ellos realiza una función diferente. Dinamic Module Loader: cuando iniciamos Asterisk, es el encargado de cargar e inicializar los drivers necesarios. PBX Switching: es el encargado de aceptar y conectar las llamadas que recibe por las interfaces. Actua según lo definido en el plan de numeración. Application Launcher: el PBX Switching utiliza este subsistema para lanzar las aplicaciones que sean necesarias como por ejemplo hacer sonar un teléfono, hacer saltar el buzón de voz de un usuario, etc. Codec Translator: codifica y decodifica los formatos de audio en el caso de que dos canales usen un códec diferente. Scheduler and I/O Manager: es el encargado de organizar las tareas de bajo nivel y de gestionar la entrada/salida para consiguer un óptimo rendimiento en todo tipo de situaciones de carga de trabajo. Hay cuatro API s (Application Programming Interface) definidas para proporcionar funcionalidad de forma independiente al tipo de hardware y al protocolo que se usen. Channel API: esta API provee mecanismos para manejar el tipo de conexión que se está utilizando en una llamada (VoIP, ISDN, etc.). Application API: proporciona la funcionalidad para ejecutar aplicaciones tales como el buzón de voz, directorio de llamadas, etc. Telefonía de código abierto Asterisk 69

71 Plataforma Asterisk 4. Asterisk Codec Translator API: contiene los módulos de diferentes códecs para dar soporte a los diferentes formatos de audio y vídeo. File Format API: proporciona la funcionalidad necesaria para la lectura y escritura de diferentes formatos de archivo que se almacenan en el sistema. 4.4 Concepto de Canales en Asterisk El concepto de canal en Asterisk es de suma importancia. Asterisk utiliza un canal para comunicarse con los clientes que utilicen un protocolo o una tecnología determinada. Los nombres de estos canales coinciden en Asterisk con los nombre de los protocolos o tecnologías que se emplean para la comunicación. Así, podemos identificar entre otros los siguientes canales: Canal SIP: será el canal que se utilice para las comunicaiones que se envien o reciban de clientes SIP. Canal H.323: es el canal que se usará para las comunicaciones de los clientes que utilicen el protocolo H.323. Canal IAX2: lo mismo pero para los clientes que utilicen el protocolo IAX2. Canal Dahdi: es el canal que utiliza Asrerisk para comunicarse con las líneas provenientes de la RTB tanto analógicas como digitales. A modo de ilustración podemos observar la Figura 37 a continuación, donde los canales están representados a modo de tuberías que tiene Aterisk por donde entran y salen las comunicaciones de los clientes pertenecientes a determinados protocolos o tecnologías. Figura 37. Canales en Asterisk. Telefonía de código abierto Asterisk 70

72 Plataforma Asterisk 4. Asterisk Como norma general, Asterisk tendrá un archivo de configuración por cada canal. En ellos definiremos aspectos generales del protocolo o tecnología en cuestión así como información de los clientes que lo utilizarán. 4.5 Asterisk en diferentes escenarios Atendiendo a su función de centralita telefónica, Asterisk pueder usarse en multitud de escenarios. Así, puede proveer servicios de telefonía a usuarios que se encuentran en una LAN y desean poder realizar llamadas entre ellos, o bien, llendo un poco más lejos, utilizar internet para realizar llamadas a otros usuarios conectados e ésta o incluso tener la capacidad de llamar a teléfonos convencionales conectados a la RTB. A continuación describiremos qué necesita Asterisk para poder dar servicio en cada uno de estos casos Llamadas internas en nuestra oficina El escenario más simple que podemos imaginar para Asterisk, es proporcionar llamadas para los usuarios de una red la cual no está conectada con internet. El ejemplo más claro de esto sería una red privada dentro de una empresa u oficina. Figura 38. Asterisk en una red interna. Como observamos en la Figura 38, sólo es necesario conectar el servidor Asterisk a la red IP mediante una NIC y con la configuración pertinente los usuarios de la red podrán realizar llamadas entre ellos sin coste alguno. Telefonía de código abierto Asterisk 71

73 Plataforma Asterisk 4. Asterisk Conectar nuestra oficina con Internet En este segundo escenario, tenemos la misma red privada que antes pero conectada a Internet. Con este simple hecho, un empleado de nuestra oficina podrá establecer llamadas con cualquier dispositivo VoIP que este conectado a Internet sin coste alguno. Sólo habrá que tener en cuenta cuestiones tales como el ancho de banda necesario para soportar el aumento de tráfico, la seguridad, pero no habrá que incurrir en más gastos que la propia conexión a Internet. Imaginemos que una compañía con dos sedes, una en Sevilla y otra en Montreal por ejemplo, tienen ambas un sistema Asterisk. Si las dos están conectadas a Internet, se podrán realizar llamadas entre ambos sitios a través de la red. Asterisk SoftPhone Teléfono IP Adaptador Analógico - Digital Fax Nuestra Red Teléfono analógico Teléfono IP Internet Figura 39. Asterisk conectado a Internet Conectar nuestra oficina con la RTB En este último escenario, la red privada ya conectada a Internet se ha unido a la red telefónica pública. Para poder recibir llamadas de cualquier teléfono convencional de la RTB necesitaremos disponer de líneas de teléfono proporcionadas por una compañía telefónica. Telefonía de código abierto Asterisk 72

74 Plataforma Asterisk 4. Asterisk Figura 40. Asterisk conectado a la RTB. Las líneas telefónicas deberán llegar a Asterisk utilizando para ello una tarjeta conectada al bus PCI o un dispositivo externo denominado pasarela VoIP. Ambos métodos proveen una interfaz entre la red IP de nuestra oficina con la red telefónica. 4.6 Tipos de terminales VoIP usados con Asterisk Para realizar y recibir llamadas, los usuarios necesitan de unos dispositivos terminales que proporcionen la funcionalidad de un teléfono. Estos pueden ser ordenadores, teléfonos IP o teléfonos convencionales analógicos. En este último caso será necesario algún tipo de adaptador que convierta las ondas analógicas en digitales. Veamos los tres grupos más en profundidad. Softphones: para utilizar un ordenador como terminal VoIP es ncesario utilizar una aplicación software que simule un teléfono llamada Softphone. Entre los modelos más usados se encuentran el X-Lite de CounterPath Corporation o el Zoiper. Telefonía de código abierto Asterisk 73

75 Plataforma Asterisk 4. Asterisk Figura 41. Interfaz del softphone Zoiper. Figura 42. Interfaz del softphone X-Lite. Teléfonos IP: la apariencia es de un teléfono convencional pero tiene una conexión RJ45 para conectarlo a la red. Entre los principales constructores de teléfonos IP están: Cisco, Polycom, Snom, Grandstream y Aastra. Figura 43. Modelo Snom 360. Telefonía de código abierto Asterisk 74

76 Plataforma Asterisk 4. Asterisk Figura 44. Modelo SoundPoint IP 501 de Polycom. Teléfonos analógicos o maquinás de fax con un adaptador digital. En la figura n podemos ver el aspecto de un adaptador, concretamente el S101I IAXy de Digium, el cual permite transformar la señal analógica de un teléfono en paquetes de voz sobre IP utilizando el protocolo IAX. Figura 45. Modelo S101I IAXy de Digium. El modelo de la Figura 46 a continuación es el Linksys PAP2T el cual es otro adaptador pero utilizando el protocolo SIP y pudiendo conectar dos teléfonos en vez de uno. Figura 46. Modelo Linksys PAP2T. Telefonía de código abierto Asterisk 75

77 Plataforma Asterisk 4. Asterisk Por lo tanto, la infraestuctura creada para la red de datos es aprovechada completamente, requiriéndose sólo un mínimo de hardware para dar servicio de telefonía a la red. 4.7 Formas de conectar Asterisk con la Red Telefónica Básica Las compañías telefónicas nos ofrecen diferentes tecnologías para conectarnos a la red de telefonía básica. Aquí describiremos las dos formas más usuales Conexión mediante una línea de teléfono básica La forma más simple de conectarnos sería mediante una línea POTS (Plain Old Telephone Network) o línea de teléfono básica. Esto es la línea de teléfono que todos tenemos en casa. Esta línea representa un canal de transmisión y sólo se puede transmitir por él una llamada. Una posible tarjeta para hacer esta conexión la podemos ver en la figura n. Esta tarjeta es comercializada por Digium, la misma empresa creadora de Asterisk. Se conecta al ordenador mediante el bus PCI y presenta una serie de puertos a los que le podemos conectar una combinación de líneas FXS (Foreign Exchange Station) y FXO (Foreign Exchange Office), según el modelo. Figura 47. Modelo AX800 de Digium con ocho puertos analógicos. Recordemos que una interfaz FXS es la que maneja al teléfono proporcionándole la batería y el voltaje necesario para que suene. En nuestra casa, es ni más ni menos que la roseta en la pared donde conectamos el teléfono. Una interfaz FXO recibe este voltaje y hace sonar al teléfono. En este caso sería la clavija que introducimos en la roseta. En la Figura 48, podemos ver claramente la colocación de las estas interfaces en el camino de una llamada desde la central hasta un teléfono. Telefonía de código abierto Asterisk 76

78 Plataforma Asterisk 4. Asterisk Figura 48. Interfaces FXS y FXO. Por lo tanto esta tarjeta nos permite conectar líneas telefónicas que vienen de la central a las interfaces FXS y teléfonos analógicos a las interfaces FXO. La segunda posibilidad es utilizar un dispositivo externo que haga de interfaz entre la red telefónica y la red IP. Es como si sacáramos la tarjeta antes comentada y la pusiésemos en un dispositivo aparte. En la Figura 49 podemos ver la pasarela VoIP Linksys SPA 3102, la cual tiene un puerto FXO RJ11 para conectarlo a la roseta de teléfono, un puerto FXS para conectar un teléfono o fax analógico, un puerto Ethernet para conectarlo a la red y por último ofrece un puerto para conectarnos a internet mediante DSL. Figura 49. Modelo Linksys SPA Conexión mediante una línea RDSI Otra forma muy común de conexión con la RTB es utilizar una línea RDSI (Red Digital de Servicios Integrados). Estas líneas utilizan el bucle local para brindar una comunicación digital entre el usuario y el operador de telefonía. Este enlace digital está formado por canales de 64 Kbps los cuales pueden transportar audio o datos y soportan tanto conexiones de conmutación de circuitos como de conmutación de paquetes utilizando para ello otros protocolos como por ejemplo X.25. Además de estos canales llamados canales B, se usa otro canal de 16 o 64 Kpbs llamado canal D para transportar datos referentes a la señalización. Telefonía de código abierto Asterisk 77

79 Plataforma Asterisk 4. Asterisk El protocolo RDSI ofrece dos servicios, el básico y el primario. El servicio básico (BRI) consta de dos canales B y un canal D, permitiendo tener sobre un mismo cable dos líneas telefónicas. El servicio primario, ofrece un número diferente de canales según estemos en Europa o Estados Unidos. En la primera, el servicio primario (PRI) ofrece un total de 32 canales B mientras que en el segundo, el número total de canales B es de 23. En ambos casos existe un canal D que transporta la señalización. Este número de canales hace que para Europa el servicio primario se equipare con una línea E1 y en el caso de Estados Unidos con una T1. Para conectar Asterisk a la RTB mediante líneas de este tipo existen tarjetas que conectadas normalmente al bus PCI hacen de interfaz entre la red telefónica pública y nuestro sistema. Según el número de líneas que queramos utilizar, disponemos de varios modelos de tarjetas de diferentes fabricantes. Siqueremos usar un servicio BRI, las más conocidas son: Tarjetas Billion: nos permiten conectar una única línea RDSI BRI a cada tarjeta. Es una solución económica pero considerada de calidad medio baja. Tarjetas Junghanns: con los modelos unobri, duobri, quadbri y octobri, podemos conectar una, dos, cuatro y ocho líneas RSDI respectivamente. Las hay tanto para usar una conexión PCI norma como una PCI Express. Su calidad es considerada medio alta. Es importante señalar que para utilizarlas con Asterisk es necesario utilizar el driver BRIstuff. Figura 50. Modelo duobri de Junghanns. Tarjetas Beronet: dispone de los modelos BNS20, BNS40 y BNS80 para disponer de dos, cuatro y ocho líneas RDSI respectivamente. Para utilizarlas con Asterisk es necesario utilizar el driver misdn. Su calidad está considerada medio alta. Telefonía de código abierto Asterisk 78

80 Plataforma Asterisk 4. Asterisk Figura 51. Modelo BNS80 de Beronet. Tarjetas Digium: Digium sólo dispone de un modelo con cuatro puertos BRI, el B410P. Es considerado como de calidad alta y no necesita de drivers externos ya que está integrado con Asterisk. Figura 52. Modelo B410P de Digium. Si queremos utilizar el servicio primario (PRI), es Digium el que brinda una mayor variedad de productos con modelos que permiten cuatro primarios, como el TE420, dos como el TE220 y uno como el TE120P. A parte de estos hay más modelos dependiendo si las tarjetas funcionan a 3.3 o 5 Voltios, el tipo de cancelador de eco, etc. Figura 53. Modelo TE120P de Digium. Telefonía de código abierto Asterisk 79

81 Plataforma Asterisk 4. Asterisk Estas tarjetas al ser de Digium están todas integradas en Asterisk y no necesitan de ningún driver adicional. 4.8 Recorrido por el mercado actual de la telefonía de código abierto En el mercado actual, Asterisk no es la única solución para la telefonía de código abierto. Otros proyectos, cada uno con sus comunidades de desarrolladores, ofrecen las funcionalidades de un PBX y aunque no son tan populares como Asterisk son soluciones perfectamente válidas. Para hacer un recorrido por las distintas posibilidades que nos ofrece el mercado, vamos a hacer una división de éste en tres niveles: plataformas de telefonía, soluciones configurables y soluciones llave en mano Nivel 1: Plataformas de telefonía En este primer nivel tenemos los proyectos que proveen la tecnología necesaria para desarrollar soluciones de telefonía. Son por tanto plataformas para desarrollar servicios de telefonía utilizados por usuarios con un alto nivel técnico como por ejemplo empresas constructores de PBX, de pasarelas VoIP de softphones, etc. Destacamos plataformas como: sipxecs 33 : el cual es compatible con Linux, Windows y MAC pero no soporta tarjetas para conectarse a la RTB, con lo que es obligatorio el uso de pasarelas adicionales si queremos conectarnos a ella. Yate 34 (Yet Another Telephony Engine): es una solución que destaca por su flexibilidad ya que permite implementar un gran número de dispositivos tales como: clientes o serdivores de VoIP, PBX, H323 Gatekeeper, etc. Escrita en C++, se puede instalar en Linux o Windows y ofrece la posibilidad de extender sus funcionalidades usando para ello lenguajes de programación como PHP, Pithon y Perl. FreeSwitch 35 : plataforma de telefonía diseñada para facilitar el desarrollo de aplicaciones de voz y chat, desde softphones hasta centralitas telefónicas. Esta diseñado para operar en varios sistemas operativos como Windows, Max OS X, Linux, BSD y Solaris e interactuar fácilmente con las plataformas aquí comentadas. Callweaver 36 : también conocido como OpenPBX, es una plataforma para desarrollar PBX derivada de Asterisk. Puede funcionar en un gran número de 33 Para obtener más información podemos consultar su página: 34 Para más información se puede consultar su sitio web: 35 Para saber más podemos consultar: 36 Para profundizar más sobre esta plataforma podemos consultar su sitio web: Telefonía de código abierto Asterisk 80

82 Plataforma Asterisk 4. Asterisk plataformas tales como: Linux, MacOS X/Darwin, Open/Solaris, FreeBSD, NetBSD and OpenBSD Nivel 2: Soluciones gratuitas configurables En este segundo nivel, tenemos soluciones que proveen servicios personalizados aunque permiten la adición de nuevos módulos para tener nuevas funcionalidades. Son más fáciles de configurar e instalar que las soluciones del nivel uno y vienen normalmente con una interfaz gráfica. Son todas gratuitas y entre ellas destacamos las siguientes: Trixbox 37 : solución que implemeta un IP PBX basado en Asterisk pensado para pequeñas y medianas empresa. Se distribuye en un CD con el cual instalamos en el sistema: Asterisk, Linux, FreePBX GUI, Apache, MySQL, y Perl/PHP/Piton. FreePBX 38 : es otro IP PBX basado en Asterisk y da nombre a la interfaz gráfica más conocida para configurarlo. Está escrita en PHP y se sirve de una base de datos MySQL. AsteriskNow: se trata de una distribución de Asterisk que incluye además un sistema operativo Linux adaptado para funcionar con él y la innterfaz AsteriskGUI para configurarlo. Esta distribución es compatible con FreePBX Nivel 3: Soluciones de pago llave en mano Por último, en un tercer nivel se encontrarían las aplicaciones llave en mano, las cuales proporcionan una solución completa a usuarios finales que simplemente las usan y que a cambio del desembolso económico obtienen una serie de ventajas como el soporte y mantenimitno. Aquí no encontramos con la versión de pago de las soluciones descritas en el nivel 2. Entre ellas cabe destacar: TrixboxPro 39 : es la versión de pago de Trixbox y nos ofrece aplicaciones ya configuradas que nos permite tener generación de información de errores, actualizaciones automáticas, sistemas de copias de seguridad periódicas, etc. Además su compra incluye también un servicio de soporte y mantenimiento. Asterisk Business 40 : como la anterior, es la versión de pago de AsteriskNow. Ofrece diferentes fórmulas dependiendo de la cual tendremos más o menos funcionalidades, tiempo de monitorización del sistema e incluso tiempo de formación para los usuarios. 37 Para más información: 38 Para más información podemos consultar en: 39 Para obtener más información podemos visitar: 40 Para más información: Telefonía de código abierto Asterisk 81

83 Plataforma Asterisk 4. Asterisk Además de estas dos, están soluciones de otros fabricantes con larga tradción en el mundo de las telecomunicaciones como Nortel, el cual ofrece el SCS , o Aastra con su modelo AastraLink Pro Telefonía de código abierto Asterisk 82

84 III. Caso Práctico: Instalación de un sistema de telefonía VoIP en una empresa utilizando Asterisk. En esta última parte del documento, tomaremos un caso práctico en el que una empresa, llamada EmpresaX, desea hacer una migración hacia la telefonía IP. A trevés de este escenario iremos descubriendo paso a paso la manera de instalar y configurar Asterisk, proporcionando a medida que se necesiten los conceptos teóricos fundamentales. Al terminar esta parte, habremos sido capaces de proporcionar una solución a los requisitos impuestos por la EmpresaX para su sistema de telefonía utilizando Asterisk.

85 Caso Práctico 5. Descripción del Caso Práctico 5. Descripción del Caso Práctico 5.1 Introducción En esta sección haremos primero una descripción del escenario actual de la empresa, donde veremos cómo se encuentran organizadas las líneas telefónicas. Acto seguido, enumeraremos los requisitos que la empresa pide al nuevo sistema de telefonía. Por último, presentaremos, de forma general, la solución que se ha escogido para brindar la funcionalidad que demanda cada requisito. 5.2 Descripción del sistema de telefonía actual La EmpresaX encargada de realizar proyectos informáticos de diversa índole, dispone para recibir y efectuar llamadas de seis líneas analógicas contratadas con un operador de telefonía. La empresa tiene dieciseis trabajadores que trabajan habitualmente en la sede y cuatro trabajadores que lo hacen de manera ocasional pues normalmente trabajan en el sitio del cliente. Las líneas telefónicas se reparten entre los departamentos de la empresa de la siguiente manera: Departamento de Administración: lo compone una persona que se encarga de llevar los asuntos administrativos. Además, es la persona que atiende las llamadas cuando un cliente llama al número de teléfono de la empresa. Tiene una línea de teléfono a su disposición. Departamento Comercial: es el departamento encargado de elaborar ofertas comerciales a los clientes. Está compuesto por tres personas que comparten una línea de teléfono. Departamento Técnico: es el encargado de solucionar las incidencias técnicas que se producen en los sitios del cliente. Está compuesto por tres personas que realizan tele-asistencia y tres personas que realizan tareas de mantenimiento en el sitio del cliente. Cada uno de los tres técnicos que realizan labores de tele-asistencia, dispone de una línea de teléfono dedicada. Departamento de Desarrollo: es el departamento encargado de elaborar las soluciones software a los clientes. Está formado por un total de siete personas. Como en el caso anterior, todos ellos comparten una línea telefónica.

86 Caso Práctico 5. Descripción del Caso Práctico Departamento de Proyectos: está formado por dos personas que llevan a cabo diversos proyectos dentro de la empresa. Actualmente no dispone de ninguna línea telefónica. La figura a continuación ilustra esta disposición: Figura 54. Disposición actual del sistema telefónico de la empresa. 5.3 Requisitos de la empresa al nuevo sistema de telefonía La empresa desea que el nuevo sistema de telefonía cumpla los siguientes requisitos: Requisito 1: Extensiones y buzones de voz Se desea que todos los miembros de la empresa tengan una extensión de teléfono desde la cual realizar y recibir llamadas, y en los casos donde se permita y sea posible, que se puedan efectuar videoconferencias. Así mismo, todos los usuarios del sistema deberán tener un buzón de voz asociado a su extensión para permitir que se pueda dejar un mensaje en él en caso de que la persona no esté disponible o esté ocupada.

87 Caso Práctico 5. Descripción del Caso Práctico Requisito 2: Mensajería unificada Se quiere que todos los empleados, dispongan de mensajería unificada, es decir, que si alguien dejase un mensaje en el buzón de voz de un miembro de la empresa, este sea automáticamente enviado como un archivo adjunto en un correo electrónico a su cuenta de correo Requisito 3: Reutilización de las líneas analógicas La empresa, quiere seguir teniendo las seis líneas analógicas para poder comunicarse con la red pública de teléfono pero además, desea que haya un número principal que agrupe a todas. Éste correspondería al Departamento de Administración y sería el número principal de la empresa Requisito 4: Incorporación de dos líneas móviles Debido al alto coste que supone hacer llamadas a teléfonos móviles desde las líneas fijas, se quieren contratar dos líneas móviles con una tarifa especial para llamadas a teléfonos móviles. Así, cuando se realice una llamada desde dentro de la empresa, se desea que la centralita realice dicha llamada utilizando las líneas móviles. De manera que si llamamos a un móvil, se utilice la primera línea, si llamamos a un segundo se utilice la segunda y si hay una tercera, de un tono de ocupado. Es decir, que no se permita llamar a móviles nada más que por esas dos líneas Requisito 5: Menú de bienvenida con opciones Cuando se marque el número de teléfono principal de la empresa, se desea que una voz de operadora presente al usuario una sería de opciones las cuales se ilustran en la figura a continuación: Figura 55. Opciones del menú deseadas por la empresa.

88 Caso Práctico 5. Descripción del Caso Práctico Si el usuario elige la opción 1, será para introducir él mismo una extensión de algún empleado de la empresa. Si el usuario introduce una extensión que nos es válida, se le presentará un mensaje de error. Si elige la opción 2, la llamada será encaminada a la extensión de la persona encargada del Departamento de Administración. Si elige la opción 3, la llamada será encaminada al Departamento Técnico. De todos los técnicos que estén disponibles para atender las llamadas, se llamará a uno cada vez para repartir la carga de trabajo. Si elige la opción 4, la llamada irá al Departamento Comercial haciendo sonar todas las extensiones de los miembros que lo conforman. Si se elige la opción 5, la llamada se encaminará al Departamento de Desarrollo siguiendo la misma política que para la opción 4. Si el usuario marcase una opción que no es válida, se le indicará y se volverá a reproducir el menú de opciones. Por último, si el usuario no marca ninguna extensión al término de mostrar todas las opciones, la llamada será atendida por el Departamento de Administración Requisito 6: Gestión de llamadas del Departamento Técnico Cuando pulsando la opción 4 se encamine la llamada al Departamento Técnico o un usuario llame a un número asociado a este departamento, se desea que la centralita pase la llamada al primer técnico que se encuentre disponible. Así mismo, se pide que si todos los técnicos están ocupados, el usuario entre en una cola de espera, y que sea atendido cuando un técnico se quede libre. Por último, si hay varios técnicos que están libres, se quiere que se pase una llamada a uno distinto cada vez para repartir la carga de trabajo Requisito 7: Gestión de llamadas para los Departamentos Comercial y de Desarrollo Se desea a su vez que cuando el usuario elija las opciones 4 o 5 del menú de opciones o cuando se realice una llamada a los números de teléfono asociados a los departamentos Comercial y de Desarrollo, suenen los teléfonos de todos los miembros que pertenecen al departamento seleccionado. El primero que descuelgue, será el que entre en conversación con el usuario.

89 Caso Práctico 5. Descripción del Caso Práctico Requisito 8: Servicios comunes de telefonía Se desea que estén disponibles también servicios usuales de un PBX como son el estacionamiento, la captura y la transferencia de llamada y disponer de la posibilidad de realizar conferencias entre más de dos participantes. 5.4 Soluciones a los requisitos planteados Para dar solución a los requisitos que demanda la empresa, será necesario instalar una centralita telefónica para que distribuya y encamine las llamadas como se requiera en cada momento. A continuación, veamos más en detalle qué vamos a utilizar para satisfacer la lista de requisitos enumerados en la sección anterior Solución al Requisito 1: Extensiones y buzones de voz Se crearán tantos usuarios SIP como empleados tenga la empresa, definiendo sus características y la opción de realizar o no una videoconferencia. Así mismo se crearán para cada uno de ellos un buzón de voz Solución al Requisito 2: Mensajería unificada Se instalará un servidor de correo para que, utilizando el servidor de correo de Google, se entregue los mensajes a su correcto destinatario Solución al Requisito 3: Reutilización de las líneas analógicas Se instalarán dos tarjetas de cuatro puertos analógicos (en modo FXS) a la centralita, a los cuales se les conectarán las seis líneas fijas de que ya dispone la empresa. Para poder utilizar los dispositivos analógicos, haremos uso de unos adaptadores analógico/digital Solución al Requisito 4: Incorporación de dos líneas móviles Para brindar acceso a la red móvil, se instalarán dos terminales fijos celulares que irán conectados cada uno a un puerto FXO de una de las tarjetas instaladas. Además necesitaremos dos tarjetas SIM para tener un número asociado a cada línea.

90 Caso Práctico 5. Descripción del Caso Práctico Solución al Requisito 5: Menú de bienvenida con opciones Se hará uso de un IVR (Interactive Voice Response), el cual se encargará de interactuar con el usuario y encaminar la llamada a la extensión que elija. Para poder recibir las llamadas por la línea principal de la empresa y encaminarlas a las otras, será necesario pedir al proveedor de servicios que haga un agrupamiento de líneas. Así, si un usuario llama al número principal y elije comunicarse con un departamento y mientras se está produciendo la comunicación llama otro usuario a la línea principal, ésta no dará tono de ocupado Solución al Requisito 6: Gestión de llamadas del Departamento Técnico Para gestionar las llamadas al Departamento Técnico, se implementará un sistema de distribución automática de llamadas con las características de turnos rotativos de atención de llamadas que requiere la empresa Solución al Requisito 7: Gestión de llamadas para los Departamentos Comercial y de Desarrollo Se configurarán los parámetros pertienetes para que la centralita actúe de la forma deseada por la empresa cuando el departamento Comercial y el de Desarrollo reciban una llamada, no siendo necesario implementar un sistema de distribución de llamadas Solución al Requisito 8: Servicios comunes de telefonía Se configurarán los parámetros pertinentes para que la centralita telefónica instalada brinde estos servicios. 5.5 Arquitectura del nuevo sistema de telefonía La arquitectura que planteamos para llevar a cabo todas las soluciones la podemos ver en la siguiente figura:

91 Caso Práctico 5. Descripción del Caso Práctico Figura 56. Arquitectura del nuevo sistema telefónico de la empresa. Como podemos apreciar, instalaremos en una máquina un centralita Asterisk donde llegará todos las líneas telefónicas llegarán. Ésta a su vez, tendrá una conexión a la red LAN de la empresa donde se encuentran conectados todos los empleados. Por último, utilizaremos dos líneas que actuarán como pasarelas hacia la red móvil.

92 Caso Práctico 6. Instalación de Asterisk 6. Instalación de Asterisk 6.1 Introducción En este capítulo describiremos el proceso completo para instalar Asterisk en un ordenador incluyendo la instalación del sistema operativo y de los componentes hardware necesarios. 6.2 Consideraciones previas a la instalación de Asterisk A la hora de elegir la potencia que necesitará tener el servidor Asterisk, se deben tener en cuenta varios aspectos. Primero, y el más importante, es considerar el número de usuarios a los que vamos a dar servicio. Atendiendo a este factor, podemos hacer una división en tres grupos: Sistemas pequeños: podemos considerar que estos sistemas tienen un máximo de diez teléfonos con el que basta utilizar un sólo servidor Asterisk. Sistemas medianos: en estos sistemas podemos tener entre diez y cincuenta teléfonos y si hay mucha carga sobre un Asterisk puede ser interesante utilizar dos centralitas. Sistemas grandes: son sistemas de más de cincuenta teléfonos utilizando varios servidores para atender a todos los usuarios. Segundo, habría que pensar en el número de conversaciones simultáneas que deberá soportar Asterisk, es decir, debemos estimar la actividad que tendrá nuestro sistema. También influirá el hecho de que parte de esas llamadas se hagan a teléfonos de la RTB ya que hará falta utilizar cancelación de eco y esto tiene un alto coste computacional. Por último, habría que tener en cuenta el grado de heterogeneidad de nuestra red. El hecho de que los terminales usen diferentes protocolos VoIP o diferentes códecs, aumenta la carga de trabajo de la CPU pues deberá realizar un proceso de traducción. Telefonía de código abierto Asterisk 91

93 Caso Práctico 6. Instalación de Asterisk En algunos sitios de Internet 42, usuarios han hecho pruebas con distintas configuraciones hardware del equipo y han expuesto sus resultados. Tomando una de ellas, bastaría con un Pentium 1 a 166Mhz con 32Mbytes de memoria RAM para soportar cuatro llamadas simultáneas utilizando el protocolo SIP y el códec G.711. Nuestro sistema funcionará en un sistema de unos quince usuarios, de los cuales la mitad no usa prácticamente el teléfono, con lo que podemos considerarlo pequeño. La red es muy homogénea, utilizando sólo el protocolo SIP para las llamadas dentro de la empresa. El códec que utilizaremos siempre será el G.711 que requiere muy poco procesamiento y tiene una alta calidad. La exigencia mayor de nuestro sistema sería soportar las interfaces analógicas (por la cancelación de eco), pero ocho líneas es un número considerado bajo. Por consiguiente, y ya que había disponible un AMD Athlon a 2.8 GHz de velocidad con 512 MBytes de memoria RAM, será el que utilicemos, considerándolo más que suficiente para soportar el sistema telefónico de la empresa. 6.3 Instalación de los componentes hardware, del S.0. y de Asterisk Una vez elegidas las características del ordenador que albergará a Asterisk, pasemos a la instalación de los componentes hardware y software necesarios Instalación de las tarjetas analógicas TDM400P Para poder interactuar con la red de teléfono pública instalaremos en nuestro ordenador dos tarjetas Digium TDM400P, cada una con la posibilidad de tener hasta cuatro puertos FXO para conectar líneas de teléfono convencional. Figura 57. Tarjeta Digium TDM400P. 42 Como el del siguiente enlace, de donde están tomados los ejemplos: Telefonía de código abierto Asterisk 92

94 Caso Práctico 6. Instalación de Asterisk Para su instalación sólo deberemos insertar las tarjetas en una ranura libre del bus PCI como hacemos con una tarjeta de red o una de sonido. Hay que tener en cuenta sin embargo que si utilizamos los puertos en modo FXS, estos deben ser provistos de una alimentación de 12V adicional. Nosotros utilizaremos todos los puertos en modo FXO. En el proceso de instalación del driver veremos si hay algún problema en ser reconocidas por el sistema. Figura 58. Montaje de la tarjeta TDM400P en el bus PCI. Una vez instalada en la máquina, conectaremos a ella las líneas telefónicas de forma que en cada puerto conectemos una línea. Con esta operación, quedarán ocupados seis de los ocho puertos que se encuentran disponibles Instalación de las interfaces con la red móvil Para poder recibir y realizar llamadas a través de de la red móvil, es necesario algún dispositivo que actúe como interfaz entre la red de teléfono móvil y la red IP de la empresa. Para ello utilizaremos dos terminales fijos celulares, un Ericsson F250m y un Celline III de Audiotel. Telefonía de código abierto Asterisk 93

95 Caso Práctico 6. Instalación de Asterisk Figura 59. Terminal fijo celular Ericsson F250m. Figura 60. Terminal fijo celular Audiotel Celline III. La manera de conectarlos a los dos puertos libres de la tarjeta TDM400P es a través de un cable convencional de teléfono. Es por tanto como si conectásemos otras dos líneas analógicas a Asterisk. Además de esta conexión, estos dispositivos necesitan conectarse a la red eléctrica mediante un cable que viene incorporado. Telefonía de código abierto Asterisk 94

96 Caso Práctico 6. Instalación de Asterisk Para dotarlos de conectividad con la red de teléfonos móviles es necesario insertarles sendas tarjetas SIM. La manera de proceder para ello depende del modelo. Para el modelo de Ericsson deberemos retirar la parte delantera, apartar la antena e introducir la tarjeta. Para ilustrar este proceso podemos consultar la Figura 61. Figura 61. Lugar donde insertar la tarjeta SIM en el terminal fijo celular Ericsson F250m. En el modelo de Audiotel, no tendremos que retirar ninguna tapa ya que la tarjeta se introduce por una pequeña ranura situada en el lateral del dispositivo como apreciamos en la siguiente figura. Figura 62. Lugar donde insertar la tarjeta SIM en el terminal fijo celular Audiotel Celline III. Con esto, ya tenemos instalados todos los componentes físicos en nuestra máquina. Pasemos a continuación a instalar el software necesario. Telefonía de código abierto Asterisk 95

97 Caso Práctico 6. Instalación de Asterisk Instalación del sistema operativo Aunque como hemos comentado antes, Asterisk funciona con varios sistemas operativos, es con Linux con el que tiene una mayor integración y donde tiene un mayor soporte ya que fue para el primero que se diseñó. Entre las diferentes distribuciones de Linux del mercado, nosotros utilizaremos Debian ya que, según algunas encuestas publicadas en internet, es donde resulta más estable y además podemos encontrar más documentación. Si embargo podríamos haber instalado cualquiera ya que con todas funciona perfectamente. Instalaremos la versión 5 de Debian por ser la versión estable más reciente (publicada el 14 de enero de 2009) cuando se elaboró este documento. Utilizaremos para ello un CD con una imagen ISO de tipo netinst. Estas imágenes contienen lo mínimo para iniciar el proceso de instalación y a partir de ahí descargarnos de internet los paquetes que nos interesen. Es por tanto imprescindible disponer de una conexión a internet. Al arrancar el ordenar con el CD veremos una pantalla tal como muestra la figura a continuación: Figura 63. Pantalla inicial del proceso de instalación de Debian. En ella seleccionaremos la opción Install. El proceso de instalación es muy intuitivo y no será detallado aquí. Además existen multitud de manuales que podemos consultar para ello. Comentar sólo que una vez elegidas las opciones de leguaje y haber establecido los nombres de los usuarios y sus respectivas contraseñas, de la lista de programas que nos aparece para instalar, marcamos sólo: Entorno de escritorio y Sistema estándar. Telefonía de código abierto Asterisk 96

98 Caso Práctico 6. Instalación de Asterisk Esto tomará unos minutos dependiendo de la conexión a internet de la que dispongamos. Una vez finalizado el proceso, estaremos en condiciones de empezar la instalación de Asterisk Instalación de Asterisk Para instalar Asterisk, lo primero que tenemos que hacer, es dotar al sistema operativo de los paquetes y librerías necesarios para poder compilarlo e instalarlo. A la hora de obtener e instalar estos paquetes, utilizaremos la aplicación aptget, la cual se encarga de descargar el paquete que queramos instalar así como los paquetes de los que dependa. Para que funcione correctamente es bueno editar el fichero /etc/apt/sources.list e incluir en él las direcciones de repositorios que creamos más fiables. Nosotros nos decantamos por los repositorios franceses que junto a los alemanes son de los que gozan de más prestigio. El fichero /etc/apt/sources.list quedaría así: #Repositorios normales: deb lenny main deb-src lenny main #Repositorios de seguridad: deb lenny/updates main deb-src lenny/updates main #Repositorios de programas de frecuente actualización deb lenny/volatile main deb-src lenny/volatile main Necesitamos ahora hacer que se actualicen todos los paquetes disponibles en los repositorios. Para ello abrimos un terminal, y como root ejecutamos: # apt-get update Ya con la lista de paquetes actualizados, podemos pasar a instalar aquellos que necesitamos para la compilación e instalación de Asterisk. Sin embargo, antes es necesario instalar las cabeceras del núcleo. Para ello ejecutamos: # apt-get install linux-headers-$(uname r) Donde uname r nos devuelve la versión del núcleo de nuestro sistema. Telefonía de código abierto Asterisk 97

99 Caso Práctico 6. Instalación de Asterisk La instalación de los paquetes la haremos por más comodidad en dos bloques, primero: # apt-get install bison openssl libssl-dev libasound2-dev libc6-dev Y a continuación: # apt-get install libnewt-dev libncurses5-dev zlib1g-dev gcc g++ doxygen Una vez hecho esto, pasamos a descargar Asterisk y sus librerías 43. Las versiones que utilizaremos serán las estables más recientes cuando se elaboró este documento. Estas son: Asterisk DAHDI Linux DAHDI Tools Libpri Addons Pasemos a describir brevemente qué utilidad tiene cada una de ellos: Asterisk: es el paquete que contiene la aplicación Asterisk en sí. DAHDI Linux: contiene las librerías necesarias para la comunicación con la red telefónica básica mediante interfaces analógicas. DAHDI Tools: provee varias herramientas para ayudar a configurar la interfaz con la red telefónica básica. Libpri: es una implementación en c de los servicios PRI y BRI de ISDN. Addons: añade diversas funcionalidades a Asterisk tales como la posibilidad de tener un registro de las llamadas en una base de datos MySQL, utilizar archivos MP3 para la musica en espera, añadir el protocolo H323. Aunque nosotros no haremos uso de ellas en este tutorial lo dejaremos instalado en el sistema por si acaso. Cuando hayamos descargado todos, los descomprimimos en el directorio /usr/src utilizando el comando tar como vemos a continuación: 43 Todos los archivos están disponibles en la página de Asterisk para su descarga: Telefonía de código abierto Asterisk 98

100 Caso Práctico 6. Instalación de Asterisk # tar xvzf asterisk tar.gz # tar xvzf dahdi-linux tar.gz # tar xvzf dahdi-tools tar.gz # tar xvzf asterisk-addons tar.gz # tar xvzf libpri tar.gz Sólo nos queda instalar la herramienta make de la siguiente manera: # apt-get install make Y ya podemos comenzar con la instalación. Suponiendo que nos encontremos en el directorio /usr/src, empezamos por Libpri: # cd libpri # make # make install # cd.. Seguidamente instalamos los paquetes Dahdi, teniendo en cuenta que Dahdilinux va primero que Dahdi-tools: # cd dahdi-linux # make # make install # cd.. # cd dahdi-tools #./configure # make # make install # make config # cd.. Continuamos con Asterisk, instalando también los archivos de configuración de ayuda y la documentación con make samples y make docs respectivamente. # cd asterisk #./configure # make menuselect # make # make install # make samples # make docs # cd.. Con la instrucción make menuselect tenemos la posibilidad de instalar sólo los modulos que queramos. Nosotros dejaremos todo por defecto pero nos Telefonía de código abierto Asterisk 99

101 Caso Práctico 6. Instalación de Asterisk aseguraremos que en channels drivers se encuentra seleccionada la opción channel_dahdi. Por último, asterisk addons, siendo necesario instalar antes el servidor mysql : # apt-get install mysql-server # cd asterisk-addons #./configure # make # make install # cd.. Completada la instalación, para arrancar Asterisk solo tenemos que hacer: # cd asterisk # asterisk vvvvvc Poniendo tantas v como información de depuración queramos tener. Para detenerlo, no tendremos más que introducir el comando: CLI> stop gracefully Ahora que Asterisk ya funciona en nuestro sistema, es hora de configurarlo. Telefonía de código abierto Asterisk 100

102 Caso Práctico 7. Configuración de Asterisk 7. Configuración de Asterisk 7.1 Introducción Para la configuración de Asterisk es necesario editar varios ficheros de configuración. Todos ellos se encuentran en el directorio /etc/asterisk y tienen extensión.conf. Al haber ejecutado la instrucción make samples en el proceso de instalación, el directorio se llena de archivos de ejemplo que nos serán de gran ayuda a la hora de configurarlos. En ellos viene generalmente una lista de parámetros de configuración con sus respectivas descripciones así como diversos ejemplos. De todos los archivos disponibles, nosotros sólo haremos uso de los que son necesarios para nuestro sistema. Así, hemos optado por mover todo los archivos de ejemplo a un directorio aparte e ir añadiendo al directorio /etc/asterisk los archivos que nos hagan falta uno a uno. El único archivo que dejaremos inicialmente, será asterisk.conf. En él se indican las rutas donde Asterisk debe ir a buscar o grabar diferentes archivos: los de configuración, los de audio, los de depuración, etc. Lo incluiremos tal cual viene en el archivo de ejemplo pues es el comportamiento por defecto. A medida que vayamos nombrando los archivos a editar, los deberemos ir incluyendo en el directorio /etc/asterisk. A continuación, describiremos el proceso de configuración paso a paso, explicando a medida que vayamos necesitándolos los conceptos necesarios para llevar a cabo dicha tarea. 7.2 Cambio de los ficheros de audio del inglés al español Por defecto, todos los ficheros de audio que vienen con el paquete Asterisk, están en inglés. Estos ficheros son reproducidos por la centralita cuando por ejemplo se nos pide introducir una contraseña para acceder a nuestro buzón de voz. Así, para que los usuarios disfruten de los mensajes en español, lo primero que haremos será incluir en nuestro sistema un conjunto de voces en este idioma. Este conjunto de voces, grabadas con una voz femenina, está disponible en internet 44 en varios formatos. Nosotros elegimos el formato a-law por ser el que brinda una mayor calidad de sonido aunque hay que decir que el peso de los archivos es mayor con respecto a los demás. 44 Concretamente en la dirección: Telefonía de código abierto Asterisk 101

103 Caso Práctico 7. Configuración de Asterisk El juego completo de voces consta de dos paquetes: core-sounds y extrasounds. Lo primero que haremos será, descargarnos lo archivos en el directorio /var/lib/asterisk/sounds/es y a continuación descomprimirlos: # cd /var/lib/asterisk/sounds/es # wget # wget # tar zxvf voipnovatos-extra-sounds-es-alaw-1.4.tar.gz # tar zxvf voipnovatos-core-sounds-es-alaw-1.4.tar.gz Hay que tener cuidado ya que los archivos del paquete core-sounds se descomprimen en los directorios: /var/lib/asterisk/sounds/es/dictate/es /var/lib/asterisk/sounds/es/letters/es /var/lib/asterisk/sounds/es/silence/es /var/lib/asterisk/sounds/es/followme/es /var/lib/asterisk/sounds/es/phonetic/es /var/lib/asterisk/sounds/es/digits/es Esa no es la forma correcta y Asterisk no los encontrará si lo dejamos así, siendo necesario modificarlo. Para ello, moveremos para todos los directorios los archivos de la siguiente manera: # mv /var/lib/asterisk/sounds/es/dictate/es/* /var/lib/asterisk/sounds/es/dictate # mv /var/lib/asterisk/sounds/es/letters/es/* /var/lib/asterisk/sounds/es/letters # mv /var/lib/asterisk/sounds/es/silence/es/* /var/lib/asterisk/sounds/es/silence # mv /var/lib/asterisk/sounds/es/followme/es/* /var/lib/asterisk/sounds/es/followme # mv /var/lib/asterisk/sounds/es/phonetic/es/* /var/lib/asterisk/sounds/es/phonetic # mv /var/lib/asterisk/sounds/es/digits/es/* /var/lib/asterisk/sounds/es/digits Los archivos del paquete extra-sounds se descomprimen sin necesidad de hacer ningún cambio. Por último, hay que decir que para que Asterisk vaya a buscar los archivos de sonido al directorio es dentro de /var/lib/asterisk/sounds, debemos asegurarnos que en el archivo asterisk.conf se encuentra la línea sin comentar: Telefonía de código abierto Asterisk 102

104 Caso Práctico 7. Configuración de Asterisk languageprefix = yes Será así mismo necesario indicarlo en los archivos de configuración de los canales, generalmente mediante la opción: language = es Al término de este proceso, Asterisk reproducirá cualquiera de sus mensajes en español. 7.3 Empezar a configurar el Plan de Marcación El plan de marcación ( dialplan en inglés) es sin duda el corazón de Asterisk. En él se especifica qué hacer con las llamadas que llegan y a dónde dirigir las que salen. De forma muy general, podemos decir que éste consiste un una serie de pasos que Asterisk debe seguir cuando llega una llamada. Para configurar el plan de marcación es necesario editar el archivo de configuración extension.conf utilizando para ello una sintaxis apropiada. Por tanto, antes de intentar configurar el plan de marcación de nuestro escenario, hay que entender una serie de conceptos clave como son: Contextos Extensiones Prioridades Aplicaciones. Pasemos a describir qué son cada uno de ellos Contextos El plan de marcación esta dividido en contextos ( contexts en inglés), los cuales agrupan un grupo de extensiones. Los contextos definen bloques independientes dentro de un plan de marcación aunque puede haber interacción entre ellos. Imaginemos por ejemplo que queremos que cuando se reciban llamadas los fines de semana, salte el buzón de voz y que cuando se reciban entre semana, las reciba la secretaría. Pues bien, esto se puede hacer empleando dos contextos, uno para los sábados y domingos y otro para los días entre semana. Telefonía de código abierto Asterisk 103

105 Caso Práctico 7. Configuración de Asterisk Además, nos permite por ejemplo tener definido para un mismo número diferentes comportamientos según el contexto donde estén definidos. Si una compañía A tiene definido un contexto a y otra compañía B tiene uno b, cuando se marque un número definido en ambos, si llamamos desde la compañía A se seguirán las instrucciones definidas en a y si llamamos desde B se seguirán las definidas en b. Un contexto se define escribiendo el nombre del contexto entre corchetes de la siguiente manera: [nombre contexto] El nombre del contexto puede formarse con cualquier combinación de letras (tanto mayúsculas como minúsculas), números, guión y guión bajo. Decir también que todas las instrucciones situadas a continuación de una definición de contexto pertenecerán a ese contexto hasta que haya una nueva definición de contexto. El plan de marcación tiene dos contextos especiales llamados general y globals. En el primero se definen varios parámetros generales y el segundo se utiliza para definir variables globales. Pero no nos preocupemos de estas secciones por el momento, basta con que no nombremos ninguno de nuestros contextos con esos nombres. En nuestro escenario, hemos identificado los siguientes contextos: interno: es el contexto donde estarán definidos todos los números (extensiones) de los empleados de la empresa, así como de los diferentes servicios de telefonía. salientes-movil: será el contexto donde estén definidas las extensiones para hacer llamadas a teléfonos móviles. salientes-fijo: es el contexto para las llamadas a teléfonos fijos. entrantesnumerolinea: serán los contextos donde estén definidas las extensiones para las llamadas que vienen del exterior hacia nuestro sistema. NumeroLinea será el número de línea de los teléfonos disponibles de la empresa. Por lo tanto, tendremos un total de ocho contextos de este tipo. Más adelante explicaremos el por qué de este diseño para las llamadas entrantes. Como hemos dicho antes, los contextos son bloques independientes. Así por ejemplo, un usuario del contexto interno no podría utilizar una extensión del contexto salientes-movil. Es necesario por tanto algún tipo de herramienta para comunicar contextos entre sí. Esta herramienta es el include, la cual permite incluir un contexto en otro. En nuestro escenario tendremos lo siguiente: Telefonía de código abierto Asterisk 104

106 Caso Práctico 7. Configuración de Asterisk [interno] incluye => salientes-fijo incluye => salientes-movil [salientes-movil] [salientes-fijo] [entrantesnumerolinea1] [entrantesnumerolinea2] [entrantesnumerolinea8] Como podemos apreciar, el contexto interno, tiene acceso a las extensiones definidas en los contextos salientes-fijo y salientes-movil. Con esto también conseguimos que las llamadas entrantes, no tengan acceso a las llamadas salientes previniendo de cualquier uso fraudulento de nuestras líneas. Aunque ahora mismo la división en contextos de las llamadas salientes no tiene ningún efecto, ya que cualquier persona perteneciente al contexto interno tiene acceso a todas las extensiones salientes, en un futuro puede que se restrinja el uso a cierto tipo de empleados. Así por ejemplo, si se quiere que los jefes tengan acceso a todo y los empleados no puedan hacer llamadas a números móviles, habríamos hecho lo siguiente: [jefe] incluye => empleado include => salientes-movil [empleado] include => salientes-fijo [salientes-movil] [salientes-fijo] [entrantesnumerolinean] Con esto, el contexto jefe tiene acceso las extensiones definidas en empleado, lo que supone que también tenga acceso a las extensiones de los contextos que incluye éste (salientes-fijo), y a las definidas en salientes-movil. Telefonía de código abierto Asterisk 105

107 Caso Práctico 7. Configuración de Asterisk Extensiones La palabra extensión en el mundo de las comunicaciones hace referencia a un número de teléfono. En Asterisk es algo más ya que más bien define una serie de pasos que hay que seguir cuando se marca un determinado número. Para definir una extensión se escribe la palabra exten seguida del símbolo =>, y a continuación el nombre de la extensión, la prioridad y la aplicación que se quiere ejecutar separados entre comas. Es decir: exten => nombre, prioridad, aplicación El nombre puede estar formado por una combinación de letras, números y los caracteres * y #. El nombre es lo que el número en la telefonía clásica teniendo en Asterisk un significado más amplio ya que podríamos definir extensiones formadas por letras. Un ejemplo real de una extensión sería el siguiente: exten => 10, 1, Answer() Para definir una extensión, se pueden utilizar también unos caracteres especiales que nos permiten definir patrones. Estos caracteres son los siguientes: _: para definir un patrón, el nombre de la extensión debe comenzar por el carácter subrayado. X: el símbolo X significa cualquier número entre 0 y 9. Z: se utiliza para designar a cualquier número entre 1 y 9. N: significa cualquier número entre 2 y 9. [N1N2-NK]: con esto indicamos que son válidos el número N1 y los números que van de N2 a NK. Por ejemplo si ponemos [13-7], esto significaría cualquier número entre el grupo: {1, 3, 4, 5, 6, 7}.. (punto): un punto significa uno o más caracteres.!: el signo de exclamación hace referencia a cero o más caracteres. Veamos a continuación algunos ejemplos de patrones. Por ejemplo, si queremos definir una extensión para los números móviles pondríamos algo así: exten => _6XXXXXXXX, prioridad, aplicación Telefonía de código abierto Asterisk 106

108 Caso Práctico 7. Configuración de Asterisk Esto quiere decir que esa extensión se disparará si marcamos cualquier número que empiece por 6 seguido de 8 cifras las cuales pueden ser cualquiera entre 0 y 9. Si sabemos que los usuarios dentro de la empresa tendrán números de extensión que van entre 2100 y 2500, pondremos: exten => _2[1-5]00, prioridad, aplicación Si queremos tener una extensión para los números geográficos dentro de España, los cuales empiezan por 8 o por 9 y la segunda cifra no puede ser 0 teniendo una longitud total de 9 cifras, pondríamos: exten => _[89]ZXXXXXXX Por último, imaginemos que queremos tener una extensión para los números que empiecen por 0034 y después tengan 1 o más cifras. Para ello pondríamos: exten => _0034. Los patrones que siguen los números de teléfono están regulados normalmente por el gobierno de cada país mediante un documento 45. Nosotros hemos tomado dicho documento como base para realizar la parte del plan de marcación referente a las llamadas salientes Prioridades Una extensión puede tener varias instrucciones o pasos. La prioridad indica el orden que se va a seguir Asterisk al ejecutar todos los pasos. Las instrucciones se numeran secuencialmente empezando por 1. En el siguiente ejemplo: exten => 10, 1, Answer() exten => 10, 2, Hangup() Asterisk ejecutará la aplicación Answer() y a continuación la Hangup(). Existe la incomodidad de que si tenemos una extensión con muchos pasos y queremos introducir uno nuevo al principio habría que volver a numerar todos 45 Para ver el plan nacional de numeración de España, podemos consultar la siguiente página del ministerio de industria: ES/Servicios/Numeracion/PlanNacional/Paginas/PlanNacionalNumeracion.aspx Telefonía de código abierto Asterisk 107

109 Caso Práctico 7. Configuración de Asterisk los pasos por debajo de la línea de inserción del nuevo paso. Para evitar esto, se utilizan las prioridades no numeradas. En vez de utilizar una secuencia de números empezando por 1, utilizamos la letra n (que indica next). Por ejemplo: exten => 10, 1, Aplicación 1 exten => 10, n, Aplicción 2 exten => 10, n, Aplicación 3 Asterisk empezará por la prioridad 1 (la cual sí es necesaria ponerla), y cuando llegue al paso 2 y se encuentre una n, sumará uno a la prioridad anterior. Esto hace mucho más fácil el introducir cambios en las extensiones Aplicaciones Una aplicación es una determinada acción que se realiza en un canal de comunicación. Por ejemplo, marcar una determinada extensión, hacer sonar una música de espera, colgar la llamada, son todas tipos de aplicaciones. Algunas aplicaciones como Answer() o Hangup() no necesitan argumentos para funcionar, otras sin embargo sí los necesitan. La manera de pasar argumentos a una aplicación es hacerlo entre paréntesis y separados por comas, o por el símbolo. Un ejemplo sería Playback(nombre_del_archivo). Algunas de las aplicaciones más básicas de Asterisk se describen a continuación. Answer(): si un canal está sonando, esta aplicación nos sirve para responder. En la telefonía tradicional, es la acción de descolgar el teléfono cuando éste está sonando. Como se ha comentado antes esta aplicación no recibe argumentos. Hangup(): con esta aplicación, hacemos terminar la conversación. En la telefonía tradicional correspondería con la acción de colgar el teléfono. Como la anterior, tampoco tiene argumentos. Playback(): sirve para reproducir por el canal de comunicación un fichero de audio que se encuentra almacenado en el sistema. Recibe como argumento el nombre del fichero que queremos reproducir sin extensión (si el fichero es ejemplo.gsm, sólo escribimos ejemplo). Si sólo ponemos el nombre, Aserisk da por hecho que se encuentra en el directorio /var/lib/asterisk/sounds. Para indicar otro, debemos poner la ruta del archivo en el sistema. Mientras se reproduce el fichero cualquier pulsación de teclas por parte del usuario es ignorada. Wait(): nos sirve para esperar un determinado número de segundos, que recibe como argumento, antes de realizar la siguiente acción. Así, en el siguiente ejemplo: Telefonía de código abierto Asterisk 108

110 Caso Práctico 7. Configuración de Asterisk exten => 70, 1, Wait(30) exten => 70, n, Answer() Esperamos 30 segundos (equivalente a unos 6 tonos) antes de contestar a la llamada Ejemplo: Utilidad para grabar sonido A continuación vamos a realizar un ejemplo para ilustrar los conceptos que hemos visto hasta ahora. Éste consiste en hacer una pequeña utilidad que nos servirá para grabar en un fichero un mensaje de voz. El funcionamiento sería el siguiente: cuando queramos grabar un mensaje de audio, marcaremos una determinada extensión y al cabo de dos segundos de espera y tras escuchar una señal, diremos el mensaje. Cuando terminemos colgamos y el mensaje se habrá grabado en el sistema. Pero antes de ver como sería, necesitamos de algún tipo de aplicación que nos permita grabar audio. Dicha aplicación es Record() la cual tiene la siguiente estructura: Record(filename.format[ silence][ maxduration][ option]) El único parámetro obligatorio es el nombre del fichero con su extensión. El cual, si no se especifica la ruta, será almacenado por defecto en el directorio /var/lib/asterisk/sounds de Asterisk. Si existe un fichero con el mismo nombre se sobrescribe. Los otros 3 atributos opcionales tienen el siguiente significado: silence: con él indicamos el número de segundos de silencio permitidos antes de parar la grabación. Si no se indica, la detección de silencio está desactivada. maxduration: indica en segundos la duración máxima de la grabación. Si no se pone nada, un 0, no hay límite de duración. option: puede tener los siguientes valores: a, n, q, s, t, x El significado de cada uno de ellos pueden consultarse en: Van Meggelen J, Madsen L, Smith J, (2007), Asterisk: The Future of Telephony, (2 nd Edition), 0 Reilly, Appendix B: pp. 425 y 426. Telefonía de código abierto Asterisk 109

111 Caso Práctico 7. Configuración de Asterisk La extensión completa sería la siguiente: [grabar] exten => 10, 1, Answer() exten => 10, n, Wait(2) exten => 10, n, Record(ejemplo.alaw,,20) exten => 10, n, Wait(2) exten => 10, n, Hangup() Según esto, al llamar a la extensión 10, Asterisk responderá a la llamada (descolgará el teléfono), y al cabo de dos segundos comenzará a grabar lo que digamos, en el fichero ejemplo.gsm. Cuando hayamos terminado colgamos y el mensaje se habrá grabado en el directorio /var/lib/asterisk/sounds. Si han pasado más de veinte segundos, Asterisk terminará la llamada por nosotros. 7.4 Configuración del canal Dahdi Dahdi (Digium Asterisk Hardware Device Interface) es, a partir de la versión de Asterisk, el nuevo nombre para el canal Zaptel. Éste nos permite la comunicación con usuarios que están en redes que utilizan tecnologías analógicas o digitales como la RDSI o PPP. En nuestro escenario concretamente, la configuración de este canal nos permitirá comunicarnos con los usuarios conectados a la red pública de teléfono mediante las seis líneas fijas, y a la red telefónica móvil mediante las dos móviles. Primero explicaremos como verificar la correcta instalación de las tarjetas PCI y acto seguido se darán las instrucciones precisas para configurar los archivos /etc/dahdi/system.conf y /etc/asterisk/chan_dahdi.conf necesarios para el funcionamiento del canal Dahdi Verificación de la instalación de las tarjetas TDM400P Como ya tenemos instalado Dahdi en nuestro sistema, lo primero que tenemos que hacer es hacerlo funcionar. Para ello debemos lanzar un script que cargará los módulos necesarios para soportar nuestra tarjeta. Para lanzarlo haremos: # /etc/init.d/dahdi start Para asegurarnos que los controladores de las tarjetas han sido instalados con éxito, ejecutamos: # lsmod Telefonía de código abierto Asterisk 110

112 Caso Práctico 7. Configuración de Asterisk El cual nos lista todos los módulos instalados en nuestro sistema. Debemos buscar los módulos: wct4xxp, wcte12xp, wct1xxp, wcte11xp, wctdm24xxp, wcfxo, wctdm, wcb4xxp, wctc4xxp y xpp_usb. Si están presentes, dependerán del módulo dahdi que a su vez dependerá del módulo crc_ccitt. Estos módulos se cargarán cada vez que se inicie el sistema. Para sólo cargar el que nos hace falta para nuestra tarjeta podemos editar el fichero /etc/dahdi/modules comentando las líneas de los módulos que no queramos cargar. En nuestro caso, dejamos sin comentar sólo la siguiente línea: wctdm Lo que al ejecutar lsmod nos dará un resultado como el siguiente: Figura 64. Resultado de ejecutar lsmod en el sistema. A continuación, utilizando la utilidad dahdi_scan, podemos ver información valiosa a cerca de las tarjetas que tenemos instaladas en nuestro sistema. Para ejecutarla hacemos: # dahdi_scan La salida que proporciona esta herramienta en nuestro sistema podemos verla en la siguiente figura: Telefonía de código abierto Asterisk 111

113 Caso Práctico 7. Configuración de Asterisk Figura 65. Resultado de ejecutar la herramienta dahdi_scan. Podemos saber el modelo y fabricante de las tarjetas, el número de puertos de cada una y el tipo de estos entre otras cosas. Una vez que sabemos que las tarjetas son reconocidas por el sistema, vamos a comprobar que no hay problemas con las interrupciones. Conflictos y pérdidas de interrupciones pueden afectar notablemente a la calidad del audio. Es muy aconsejable, que las tarjetas no compartan interrupciones con otros dispositivos. Para ver información acerca de qué interrupción está usando cada dispositivo ejecutamos: # cat /proc/interrupts En nuestro caso obtenemos la siguiente salida: Telefonía de código abierto Asterisk 112

114 Caso Práctico 7. Configuración de Asterisk Figura 66. Resultado de ejecutar cat /proc/interrupts en el sistema. En la cual vemos que los módulos asociados a nuestras tarjetas (wctdm) están una en la 16 y la otra en la 19. En el caso de que una misma interrupción fuese usada por más de una tarjeta, podemos pensar en desactivar en la BIOS los controladores de los dispositivos que no utilicemos. Para una máquina con Asterisk, quizás no necesitemos los controladores del puerto serie, el del disquete, etc. El paquete dahdi-tools nos ofrece una herramienta para poder realizar un test para comprobar la calidad del enlace. Para lanzarlo hacemos: # dahdi_test La salida en nuestro caso ha sido la siguiente: Figura 67. Resultado de ejecutar la herramienta dahdi_test. Telefonía de código abierto Asterisk 113

115 Caso Práctico 7. Configuración de Asterisk Cuando paramos su ejecución con Ctrl - c nos da información sobre la media de las pruebas así como el mejor y el peor resultado. Ningún resultado debería ser menor que 99.98% 47. Una vez puesto en marcha el servicio y comprobado que funciona correctamente, pasemos a configurarlo Configuración de los archivos system.conf y chan_dahdi.conf Con respecto a las versiones anteriores a la de Asterisk, la configuración pasa de hacerse en un solo archivo zaptel.conf a hacerse en dos: /etc/dahdi/system.conf y /etc/asterisk/chan_dahdi.conf. En el primero de ellos, /etc/dahdi/system.conf, se configuran los datos relativos a las interfaces físicas entre Asterisk y el mundo exterior. Consta de muchos parámetros ya que contempla numerosas formas o tecnologías de conexión: analógicas, digitales, de radio, etc. Ya que todas nuestras interfaces son puertos FXO, basta con configurar lo siguiente: 1) Señalización del canal: como todos los puertos de las dos tarjetas están en modo FXO, necesitamos señalización FXS para ellos. Por lo tanto incluiremos la línea: fxsks=1-8 2) Zonas de carga de tonos: cada zona tiene peculiaridades en los tipos de tonos que se utilizan y en su cadencia. Debemos poner la zona donde nos encontramos. Para ello escribimos: loadzone = es defaultzone=es 2) Por último y muy importante, debemos indicar el tipo de cancelador de eco que utilizaremos en cada canal. Nosotros usaremos el mg2 en todos los canales. Por tanto añadimos la línea: echocanceller=mg2,1-8 Con esto terminamos la edición del fichero /etc/dahdi/system.conf. Pasemos ahora a configurar el archivo: /etc/asterisk/chan_dahdi.conf. 47 Dato obtenido del libro: Goncalves F, (2007), Configuration Guide for Asterisk PBX, Booksurge Llc, Capítulo 4: pp. 91. Telefonía de código abierto Asterisk 114

116 Caso Práctico 7. Configuración de Asterisk En este archivo, se encuentran numerosos parámetros relativos a la configuración del canal lógico Dahdi. Así, a parte de indicar otra vez la señalización que usaremos en nuestros puertos, podremos configurar aspectos como el contexto en el que entrará la llamada, su número de buzón de voz, si acepta o no transferencia de llamadas, etc. Además existen parámetros que nos permitirán configurar el método usado para la detección de colgado de un canal. En el caso de que nuestras líneas analógicas tengan inversión de polaridad 48, sera necesario establecer los siguientes valores a los parámetros answeronpolarity y hanguponpolarity : answeronpolarity = yes hanguponpolarity = yes Si este no es el caso, habrá que utilizar los parámetros busydetec y busycount con los siguientes valores: busydetec = yes busycount = 4 Donde 4 es el valor por defecto el cual habrá que ajustar según la línea que utilicemos. Otros parámetros interesantes son rxgain y txgain los cuales nos permiten aumentar o dismuniur la ganancia en el audio recibido o transmitido por Asterisk. Figura 68. Atributos rxgain y txgain. Los valores por defecto para ambos son de 0.0 y podremos poner tanto valores positivos como negativos de ganancia. Decir que el ajuste de estos dos parámetros hay que realizarlo con cuidado pues puede producir fenómenos de eco no deseados. Otro aspecto que se puede configurar en este archivo es el agrupamiento de canales. Esto consiste en agrupar un número de líneas para que a la hora de de utilizarlas para una comunicación podamos referirnos al grupo y no a una sola línea. Así, si queremos llamar al exterior a una línea móvil y queremos que 48 El voltaje entre los dos cables de una línea de teléfono (TIP y RING) pasa de tener un voltaje positivo cuando la línea está descolgada a un voltaje negativo cuando la llamada es contestada. El ofecer o no esta característica depende del proveedor de telefonía. Telefonía de código abierto Asterisk 115

117 Caso Práctico 7. Configuración de Asterisk salga por la primera línea que esté libre, deberemos llamar al grupo en vez de hacerlo a una sola línea. Nuestra configuración será la siguiente: answeronpolarity = yes hanguponpolarity = yes signalling = fxs_ks ;Líneas fijas: group = 1 context = entrantesnumerolinea1 channel => 1 context = entrantesnumerolinea2 channel => 2 context = entrantesnumerolinea3 channel => 3 context = entrantesnumerolinea4 channel => 4 context = entrantesnumerolinea5 channel => 5 context = entrantesnumerolinea6 channel => 6 ;Líneas móviles: group = 2 context = entrantesnumerolinea7 channel => 7 context = entrantesnumerolinea8 channel => 8 Hay que aclarar que lo que se define antes del primer channel, afecta a todos los demás a no ser que se vuelvan a definir. Así por ejemplo, signalling = fxs_ks afecta a todos los canales y group = 1 sólo a los seis primeros pues redefinimos group con group = 2 lo cual afectará a los canales 7 y 8. Como podemos apreciar, hemos hecho dos agrupaciones, una para las seis líneas fijas y otra para las móviles llamándolas 1 y 2 respectivamente. Telefonía de código abierto Asterisk 116

118 Caso Práctico 7. Configuración de Asterisk La agrupación nos permitirá tratar a las líneas que componen un grupo como una sola. Así cuando realicemos una llamada a través de un grupo se escogerá la primera línea de éste que se encuentre libre. Para los demás parámetros dejaremos el valor por defecto. Una vez configurado los archivos, es necesario ejecutar una aplicación para completar la configuración. Esta es: # dahdi_cfg vvv En nuestro caso la salida ha sido la siguiente: Figura 69. Resultado de ejecutar la herramienta dahdi_cfg vvv. Donde apreciamos la señalización que tiene cada puerto/canal y el tipo de cancelador de eco que tiene cada uno Utilizar el canal Dahdi para realizar llamadas Aunque todavía no tenemos configurado el canal SIP, con lo que no disponemos de clientes para realizar llamadas, vamos a ver cómo haríamos para realizar llamadas a móviles desde la empresa. Telefonía de código abierto Asterisk 117

119 Caso Práctico 7. Configuración de Asterisk Lo primero de todo, es disponer de una aplicación que nos permita efectuar una llamada por un canal. Dicha aplicación es Dial(), la cual tiene el siguiente formato: Dial(canal/identificador, tiempo_limite, opciones) Veamos el significado de cada uno de los parámetros de esta aplicación tan importante: canal: especifica el tipo de canal que se usa para realizar la llamada. Debe ser uno de los existentes en Asterisk. Nombre de canales válidos son SIP, Dahdi, IAX2, etc. identificador: se refiere al identificador del usuario o grupo de usuarios al que queremos llamar. Este identificador puede variar su formato según al canal que estemos utilizando. En Dahdi por ejemplo, siempre será un número de teléfono o un identificador de grupo, mientras que en SIP puede ser una cadena cuyo formato veremos en el capítulo siguiente. tiempo_límite: es el tiempo máximo que se esperará hasta que en el canal responda alguien antes de colgar. Es opcional y si no se especifica, se esperará indefinidamente. opciones 49 : el comando Dial() tiene muchas opciones de las cuales sólo veremos las que nos interesan para nuestra aplicación. Se pueden consultar todas en. T: permite que la persona que realiza la llamada tenga la posibilidad de transferirla. t: igual que la anterior pero referido a la persona que recibe la llamada. K: habilita a la persona que realiza la llamada a estacionar la llamada. k: igual que la anterior pero referido a la persona que recibe la llamada. Para tener como antes habíamos dicho una extensión a través de la cual llamemos a los teléfonos móviles, debemos editar el fichero extensions.conf añadiendo lo siguiente: El comando Dial() tiene muchas opciones las cuales se pueden consultar en: Van Meggelen J, Madsen L, Smith J, (2007), Asterisk: The Future of Telephony, (2nd Edition), 0 Reilly, Appendix B: pp Telefonía de código abierto Asterisk 118

120 Caso Práctico 7. Configuración de Asterisk [salientes_movil] exten => _6XXXXXXXX, 1, Dial(Dahdi/g2/Número) Como podemos apreciar, utilizamos Dial() sin opciones y sin tiempo límite. La llamada la realizamos a través del canal Dahdi y utilizamos el identificador g2 para referirnos la agrupación de canales que definimos para las líneas móviles. Número será la extensión a la que queramos llamar. Más adelante cambiaremos esto por la expresión: ${EXTEN}, pero para ello necesitaremos saber como utilizar variables en Asterisk. En las demás comunicaciones con el exterior, utilizaremos las líneas fijas. Como las hemos agrupado en el grupo 1, cada vez que queramos realizar una llamada pondremos: exten => número_extensión, 1, Dial(Dahdi/g1/Número) Donde numero_extensión es cualquier extensión que queramos definir y Número ya lo hemos definido antes. Es importante señalar que cuando una llamada entra por el canal Dahdi por una línea, esta lo hará al contexto que hayamos definido para ella y siempre con la extensión s (del inglés start ), la cual es la extensión por la que se empieza cuando entramos en un contexto sin que tengamos información sobre el identificador de llamada. Es decir, si recibimos una llamada por el canal 1 esta entrará en el contexto entrantesnumero1 y Asterisk buscará en éste la extensión s. Como este comportamiento no se puede cambiar necesitamos definir una extensión s en cada contexto entrantesnumeron. Una vez que la llamada esté en la extensión s hemos optado por enviarla a una extensión con el número de la línea en cuestión. Este diseño nos permite realizar diferentes acciones dependiendo de por qué línea nos llamen. Así, en el archivo extensions.conf definiremos lo siguiente: Telefonía de código abierto Asterisk 119

121 Caso Práctico 7. Configuración de Asterisk [entrantesnumerolinea1] exten => s,1,goto(numero1, 1) exten => Numero1, 1, Aplicación [entrantesnumerolinea2] exten => s,1,goto(numero2, 1) exten => Numero2, 1, Aplicación [entrantesnumerolinea8] exten => s, 1, Goto(NumeroN,1) exten => Numero8,1,Aplicación Para enviar una llamada de la extensión s a la extensión NumeroN hemos utilizado la aplicación Goto(), la cual nos permite saltar a una determinada extensión, prioridad o contexto. Su formato es el siguiente: Goto([[contexto ]extensión ]prioridad) Donde contexto y extensión son opcionales mientras que la prioridad es obligatorio indicarla. 7.5 Configuración del canal SIP Para poder recibir llamadas por el canal SIP, es necesario configurarlo. Esta tarea se hace editando el archivo de configuración sip.conf. El fichero se divide en secciones las cuales empiezan con el nombre de la sección escrito entre corchetes: [nombre sección] La primera sección se llama general y en ella se definen las opciones generales del canal así como las opciones por defecto de todos lo clientes contenidos en el fichero. Esta información por defecto podrá ser reescrita en las secciones siguientes donde definiremos parámetros de cada cliente. Las secciones siguientes comienzan con el nombre del cliente entre corchetes seguido de sus opciones. Telefonía de código abierto Asterisk 120

122 Caso Práctico 7. Configuración de Asterisk Parámetros generales del canal SIP Esta sección contiene un gran número de parámetros 50, de los que usaremos solamente unos pocos. Estos son: port: es el puerto que Asterik utilizará para escuchar conexiones SIP entrantes. Port toma como argumento un número de puerto que no esté siendo usado por otra aplicación. El valor por defecto establecido por los estándares es bindaddr: es la dirección IP que Asterisk utiliza para atender (o escuchar) conexiones SIP entrantes. El valor por defecto es , es decir, por defecto SIP escucha en todas las interfaces de red disponibles. context: es el contexto por defecto para las llamadas entrantes y se aplica cuando un cliente no tiene definido un contexto específico. videosupport: la opción videosupport nos permite, o no, habilitar el soporte de vídeo en SIP. Puede tomar los valores no o yes. Siendo el no, el valor por defecto. Es posible deshabilitar la opción de soporte de vídeo pera determinados clientes pero solo puede ser activada en la sección general. language: nos permite establecer el idioma por defecto para todos los clientes. Después es posible definir una lengua para cada uno de ellos. allow: aquí especificamos los códecs que queremos utilizar, y el orden de preferencia en el caso de que haya más de uno. Algunos de los valores posibles son: all, alaw, ulaw, g729, gsm, etc. Si piensa poner un valor distinto de all, lo normal es poner antes la línea disallow = all y a continuación todos los allow que queramos. Nuestro archivo sip.conf tendrá el siguiente aspecto: [general] port=5060 bindaddr= context=interno videosupport = yes language=es disallow = all allow = all 50 Todos los parámetros y su significado pueden consultarse en: Van Meggelen J, Madsen L, Smith J, (2007), Asterisk: The Future of Telephony, (2nd Edition), 0 Reilly, Appendix A: pp Telefonía de código abierto Asterisk 121

123 Caso Práctico 7. Configuración de Asterisk Definición de clientes SIP Los clientes SIP deben ser declarados y configurados en el fichero antes de poder realizar o recibir llamadas a través del servidor Asterisk. Dentro de los múltiples parámetros que se pueden configurar, vamos a comentar sólo los más básicos 51. Si más adelante es necesario incluir alguno más para dar soporte a alguna funcionalidad, lo incluiremos. Por ahora estos son los que nos interesan: type: la opción type define la clase de conexión que tendrá el cliente. Hay tres tipos de clientes SIP: 1. peer: es un tipo de cliente que solo puede recibir llamadas. 2. user: es un tipo de cliente que solo puede hacer llamadas. 3. friend: es un tipo de cliente que es un peer y un user a la vez. Por lo tanto puede recibir y realizar llamadas. secret: con este parámetro establecemos la contraseña que el cliente usará para su autentificación. host: establece la dirección IP o el nombre de host del cliente. Puede tener el valor dynamic para cuando es un servidor DHCP quien asigna las direcciones IP a los clientes. context: es el contexto asociado al cliente. callerid: es el identificador del cliente. El formato para este campo es, primero el nombre entre comillas y tras dejar un espacio en blanco el número del usuario entre los símbolos: <>. Un ejemplo sería: Lola Torres < >. Para los clientes de nuestro escenario utilizaremos valores similares para todos los campos exceptuando el nombre. Estableceremos una contraseña igual para todos de cuatro ceros, y utilizaremos DHCP para asignar direcciones. Así para un cliente llamado José García con extensión 2400, definiremos en el fichero sip.conf lo siguiente: 51 Todos los parámetros y su significado pueden consultarse en: Van Meggelen J, Madsen L, Smith J, (2007), Asterisk: The Future of Telephony, (2nd Edition), 0 Reilly, Appendix A: pp Telefonía de código abierto Asterisk 122

124 Caso Práctico 7. Configuración de Asterisk [2400] type=friend secret=0000 host=dynamic context=interno callerid = Jose García <2400> Los otros clientes se declararán por tanto de igual forma, cambiando solo los valores que sean propios de cada uno. 7.6 Configuración del Buzón de voz El buzón de voz, servicio costoso en la telefonía tradicional, es en Asterisk un servicio estándar y fácilmente utilizable. Nos permite dejar un mensaje de voz en caso de que la persona a la que llamamos esté ocupada o no quiera atender la llamada. Los mensajes serán almacenados en el sistema en el directorio /var/spool/asterisk/asterisk. El archivo dónde se configura este servicio se llama voic .conf. Éste contiene un amplio conjunto de parámetros que nos permiten personalizar el servicio de mensajería a nuestro gusto. Primero, analizaremos los parámetros más interesantes de este archivo, para ver después las aplicaciones que nos permitirán utilizar el buzón de voz en el plan de marcación. Por último veremos como instalar y configurar un servidor de correo que reenvíe los mensajes dejados en un buzón de voz como archivo adjunto de un correo electrónico El archivo voic .conf El archivo contiene una sección general, otra llamada timezone y una o varias secciones donde se definen los contextos para grupos de usuarios, pues al igual que en extensions.conf se permite el uso de varios contextos. Entre los muchos parámetros que podemos configurar en la sección general se encuentran los siguientes 52 : attach: con la opción attach=yes, indicamos que queremos que Asterisk envie el mensaje de audio como dato adjunto en un correo electrónico. El valor por defecto es no. 52 Todos los parámetros y su significado pueden consultarse en: Van Meggelen J, Madsen L, Smith J, (2007), Asterisk: The Future of Telephony, (2nd Edition), 0 Reilly, Appendix D: pp Telefonía de código abierto Asterisk 123

125 Caso Práctico 7. Configuración de Asterisk delete: si ponemos delete = yes, el mensaje será borrado del sistema una vez que haya sido enviado por correo electrónico. format: nos permite especificar el formato en el que se grabará el archivo de audio. Puede tener los siguientes valores correspondientes a diferentes formatos: wav49, gsm, wav. maxmessage, minmessage: el primero nos permite definir el tiempo máximo de un mensaje de entrada en segundos. Su valor por defecto es 0 lo que significa que es ilimitado. El segundo hace referencia al tiempo mínimo de un mensaje en segundos. Los mensajes que no lleguen a este número serán eliminados. maxlogins: indica el número de intentos permitidos para introducir la contraseña del buzón de voz antes de que Asterisk termine la comunicación. A continuación, la sección tiemezone se utiliza para definir distintas zonas horarias ya que puede haber usuarios que no se encuentren en la misma zona. La manera de declarar una nueva zona es la siguiente 53 : nueva_zona=país/ciudad Opciones Por último, en la parte final del fichero, tenemos uno o varios contextos donde se definen los buzones de voz. La forma de declarar un buzón de voz es la siguiente: extensión => contraseña, nombre, , del busca, opciones Pasemos a definir cada una de las partes: extensión: es el número de extensión asignado al buzón de voz. contraseña: es la contraseña para acceder al buzón de voz. nombre: campo con el nombre y apellidos del usuario. dirección de correo electrónico para la notificación de los mensajes. del busca (pager): correo electrónico para la notificación de los mensajes a este dispositivo. opciones 54 : las opciones se utilizan para sobrescribir valores definidos en la sección general. Son de la forma atributo=valor y si hay más de una, estas deben ir separadas por el símbolo. 53 Para saber cuales son todas las opciones posibles y ver algunos ejemplos, podemos consultar: Van Meggelen J, Madsen L, Smith J, (2007), Asterisk: The Future of Telephony, (2nd Edition), 0 Reilly, Appendix D: pp. 486 y 487. Telefonía de código abierto Asterisk 124

126 Caso Práctico 7. Configuración de Asterisk Veamos un ejemplo de definición de un buzón de voz: 2400 => 0000, José attach=yes delete=no En él, el número de buzón de voz es el Tiene la contraseña 0000 y el nombre es José García. La dirección de correo electrónico es y en este caso no hemos puesto dirección del busca. A continuación hemos incluido tres opciones cuyos valores sobrescribirán lo establecido en la sección general para ese usuario. Por defecto los buzones de voz se definen en el contexto default y será el que nosotros utilizaremos. Por último es importante decir que a parte de definir el buzón de voz en el archivo voic .conf, es necesario incluir el número de éste en la definición del cliente en el archivo sip.conf de la siguiente manera: [2400] type=friend secret=0000 host=dynamic context=interno callerid = Jose García <2400> voic = 2400 Como podemos observar, hemos incluido la línea voic = Normalmente, se suele utilizar el mismo número para la extensión que para el buzón de voz y así lo haremos nosotros. Aunque se podría utilizar cualquiera El buzón de voz en el plan de marcación Una vez que hemos definido un buzón de voz para un usuario, vamos a hacer que una persona que llame pueda dejar un mensaje en él. Para ello utilizaremos la aplicación Voic cuya sintaxis es la siguiente: [opciones]) Como podemos ver, podemos indicar hasta tres buzones de voz donde será guardado el mensaje. El campo opciones nos permite seleccionar el mensaje que se escuchará cuando salte el buzón de voz. Utilizando las letras s, u y b podemos tener las siguientes seis combinaciones: 54 Para consultar todas las opciones posibles a la hora de definir un buzón de voz, podemos consultar: Van Meggelen J, Madsen L, Smith J, (2007), Asterisk: The Future of Telephony, (2nd Edition), 0 Reilly, Appendix D: pp. 488 y 490. Telefonía de código abierto Asterisk 125

127 Caso Práctico 7. Configuración de Asterisk Ninguna: si no indicamos nada, escucharemos un mensaje de instrucciones a seguir para dejar un mensaje que dice así: Por favor, deje su mensaje después de la señal. Cuando termine pulse almohadilla o cuelgue. s: con esta opción hacemos que no se escuche ningún mensaje. u: el mensaje reproducido será el de no disponible que dice así: La persona en la extensión X no está disponible. su: se reproducirá el mensaje de no disponible y a continuación el mensaje de instrucciones. b: el mensaje que se reproducirá será el de ocupado el cual es: La persona en la extensión X está al teléfono. Deje por favor su mensaje después de la señal. bs: con esta combinación, se reproducirá el mensaje de ocupado y después las instrucciones. En el siguiente ejemplo definiremos una extensión 2400, la cual si nadie contesta en diez segundos (unos 2 tonos), saltará el contestador del buzón número 30 con el mensaje de no disponible más el de las instrucciones. Este sería así: exten => 2400, 1, Answer() exten => 2400, n, Dial(SIP/2400, 10) exten => 2400, n, Voic (2400 u) exten => 2400, n, Hangup() Además de poder dejar un mensaje en un buzón de voz, debe existir la posibilidad por parte de un usuario de consultar los mensajes guardados y manipularlos de alguna forma, ya sea eliminándolos o moviéndolos a diferentes directorios. Estas funciones y otras, nos la brinda la aplicación Voic Main(), la cual tiene la siguiente sintaxis: opciones]) Como vemos, sólo debemos pasarle el número de buzón de voz y el contexto donde se encuentra éste (teniendo en cuenta que si no penemos contexto, se sobreentiende que es default ). Antes de acceder a nuestro buzón, se nos pedirá la contraseña. Entre las opciones posibles destacamos la opción s, la cual hace que se omita el requerimiento de la contraseña Todas las opciones disponibles y su significado se encuentran en: Van Meggelen J, Madsen L, Smith J, (2007), Asterisk: The Future of Telephony, (2nd Edition), 0 Reilly, Appendix B: pp Telefonía de código abierto Asterisk 126

128 Caso Práctico 7. Configuración de Asterisk Configuración del servidor de correo exim4 Vamos a configurar ahora Asterisk para que cuando un usuario deje un mensaje en un buzón de voz, éste sea enviado como un archivo adjunto al correo electrónico de la persona que ha sido llamada. Para ello instalaremos junto a Asterisk un servidor de correo que configuraremos como smarthost y utilizaremos el servidor de Gmail para enviarlos a los destinatarios finales. Lo primero que deberemos hacer por tanto, será crearnos una cuenta de Gmail para utilizarla como dirección de origen. Dentro de los posibles servidores de correo, nosotros nos hemos decantado por exim4 debido a su fácil configuración. Pasemos a describirla paso a paso. En primer lugar instalamos el paquete exim4 asegurándonos antes que los repositorios estén actualizados. # apt-get update # apt-get install exim4 Una vez instalado utilizaremos el siguiente comando para configurarlo: # dpkg-reconfigure exim4-config Al ejecutarlo se nos presentan una seria de pantallas dónde tendremos que seleccionar alguna opción o introducir algún dato. La secuencia de pantallas es esta: 1. Configuración general del correo: señalamos la opción: el correo se envía mediante un <<smarthost>>; se recibe a través de SMTP o fetchmail. 2. Nombre del sistema de correo: aquí escribimos el dominio: en nuestro caso será gmail.com. 3. Direcciones IP en las que recibir correo SMTP entrantes: dejamos la dirección que aparece: Otros destinos para los que se acepta el correo: dejamos esto en blanco. 5. Máquinas para las cuales reenviar correo: lo dejamos también en blanco. 6. Dirección IP o nombre del equipo para el smarthost saliente: ponemos el fqdn (Fully Qualified Domain Name) del servidor. Para utilizar Gmail debemos porner: smtp.gmail.com:: Desea ocultar el nombre de correo local en los mensajes salientes?: seleccionamos la opción No. Telefonía de código abierto Asterisk 127

129 Caso Práctico 7. Configuración de Asterisk 8. Nombre de domino visible para usuarios locales: aquí ponemos el mismo que en la pantalla Limitar el número de consultas de DNS?: seleccionamos la opción No. 10. Mecanismo de entrega para el correo local: elegimos la opción formato mbox en /var/mail. 11. Dividir la configuración en pequeños ficheros?: marcamos No. Una vez hecho esto, el servidor se reinicia automáticamente para que la configuración surta efecto. Ahora, editamos el fichero /etc/exim4/passwd.client y añadimos las siguientes líneas: Seguidamente, introducimos la línea port = 587 en el fichero /etc/exim4/conf.d/transport/30_exim4-config_remote_smtp_smarthost tal como mostramos a continuación: remote_smtp_smarthost: debug_print = "T: remote_smtp_smarthost for driver = smtp hosts_try_auth = <; ${if exists{confdir/passwd.client} \ {\ ${lookup{$host}nwildlsearch{confdir/passwd.client}{$host_address}}\ }\ {} \ } port=587 #Aqui viene lo que sigue en el archivo Debemos reiniciar exim4 para que los cambios surtan efecto. Ejecutamos: /etc/init.d/exim4 restart Con esto, y el parámetro attach con el valor yes en el fichero voic .conf, los mensajes dejados en un buzón de voz se enviarán al servidor de correo de Gmail que se encargará de entregarlos. Telefonía de código abierto Asterisk 128

130 Caso Práctico 7. Configuración de Asterisk Personalizar el mensaje de correo electrónico Por último, vamos a modificar algunos parámetros para personalizar el contenido del mensaje de los correos electrónicos. Estos parámetros són: servermail: es la dirección de origen que aparecerá en el correo electrónico. fromstring: con este parámetro definimos lo que aparecerá en el campo De del correo. pbxskip: por defecto Asterisk, inserta la cadena [PBX]: al principio del campo asunto de un correo. Si tiene un valor igual yes forzamos a que no ponga nada. subject: aquí definimos lo que aparecerá en el campo asunto del correo. body: aquí personalizamos el cuerpo del mensaje del correo electrónico. Tanto en subject como en body podemos utilizar ciertas variables con las que podemos hacer referencia a cosas como la duración total del mensaje, en qué buzón de voz ha sido dejado, etc. Entre las variables que podemos usar están: VM_DUR: con ella podemos indicar la duración total del mensaje. VM_MSGNUM: Asterisk enumera los mensajes que nos van dejando en el buzón de voz desde cero. Esta variable contiene dicho número. VM_MAILBOX: es el número de buzón de vos donde se ha guardado el mensaje. VM_NAME: es el nombre del usuario al que pertenece el buzón de voz donde se ha dejado el mensaje. VM_CIDNUM: es el número de extensión que ha dejado el mensaje. Corresponde a la variable CALLERID(num). VM_CIDNAME: es el nombre de la persona que ha dejado el mensaje. Obtenido de la variable CALLERID(name). VM_CALLERID: es tanto el número como el número de la perdona que ha dejado el mensaje. Correspondería a la variable CALLERID. VM_DATE: es la fecha y hora en la que ha sido dejado el mensaje. El formato de de ésta puede establecerse con el parámetro dateformat. Telefonía de código abierto Asterisk 129

131 Caso Práctico 7. Configuración de Asterisk Nosotros lo configuraremos de esta manera: servermail: fromstring: Centralita Asterisk pbxskip: yes subject: Nuevo mensaje de ${VM_CIDNUM} en el buzón ${VM_MAILBOX}. body: ${VM_NAME}: \n\n\n Ha recibido un mensaje de ${VM_CIDNAME} con extensión ${VM_CIDNUM} de ${VM_DUR} de duración en el buzón de voz ${VM_MAILBOX}. Para escucharlo abra el archivo adjunto. \n Gracias. \n\n\t Centralita Asterisk. En la siguiente figura, podemos ver como sería el formato del correo enviado a una cuenta de Gmail utilizando los valores antes comentados. Figura 70. Correo electrónico enviado por Asterisk. En este caso, el usuario Cliente 1 con extensión 2100 (definido en sip.conf con el atributo callerid igual a Clliente 1 <2100>) ha dejado un mensaje en el buzón de voz Variables y funciones En esta sección describiremos cómo podemos hacer uso de variables, y funciones en el plan de marcación. Esto nos permitirá dar al plan de marcación un tratamiento más profundo, aumentado la complejidad de los servicios que puede desempeñar. Telefonía de código abierto Asterisk 130

132 Caso Práctico 7. Configuración de Asterisk Variables Como en cualquier lenguaje de programación, Asterisk permite el uso de variables. Podemos pensar que estas son como contenedores que guardan valores. De una variable por tanto, podemos referenciar dos cosas: su nombre y su valor o contenido. Así, para una variable llamada Cliente1 con valor 2500, podremos hacer referencia a su nombre utilizando Cliente1 o a su contenido utilizando la sintaxis: ${Cliente1}. En Asterisk existen tres tipos de variables: globales, de canal y de entorno. Las primeras, como su nombre indica, son variables que pueden ser referenciadas en cualquier parte del plan de marcación. Se declaran en la sección globals o dentro de un contexto mediante la aplicación Set en el archivo extensions.conf. Si por ejemplo queremos declarar la variable global Cliente1 con el valor 2500 haríamos: [globals] Cliente1 = 2500 O también: [interno] exten => 10, 1, Set(GLOBAL(Cliente1)=2500) Las variables de canal sin embargo, son variables que existen sólo el tiempo que dura una llamada. Existen un gran número de variables predefinidas de este tipo, entre las que más usaremos se encuentran 56 : CALLERID(name): contiene el nombre del participante que ha iniciado la llamada en una conversación. CALLERID(num): contiene la extensión del participante que ha iniciado la llamada en una conversación. EXTEN: contiene la extensión actual. Por ejemplo, para definir la extensión que nos permitirá hacer llamadas a móviles desde el contexto salientes-movil podremos: exten => _6XXXXXXXX, 1, Dial(Dahdi/g2/${EXTEN}) 56 La lista de todas las variables de canal y su significado, la podemos ver en el archivo channelvariables.txt dentro del directorio doc de la ayuda generada por Asterrisk o en la página: Telefonía de código abierto Asterisk 131

133 Caso Práctico 7. Configuración de Asterisk Esto nos permitirá usar un patrón, y a la hora de llamar por el canal Dahdi, utilizaremos la variable ${EXTEN} para recuperar el número exacto que hemos marcado. Hay que decir también que determinadas aplicaciones tienen variables específicas. Así, la aplicación Dial() cuenta con la variable DIALSTATUS. Ésta, al ejecutarse Dial() en una extensión, puede tomar entre otros los siguientes valores según el estado de la persona llamada: ANSWER: la llamada se ha establecido con éxito. BUSY: este valor indica que el llamada esta ocupado. NOANSWER: significa que el teléfono sonó durante un tiempo superior al Timeout establecido para la llamada. CANCEL: indica que aunque el teléfono ha sonado varias veces, el llamante ha colgado antes de que el llamado pudiese descolgar. Por último, las variables de entorno hacen referencia a variables de entorno de Unix. Para acceder a ellas usamos la sintaxis: ${ENV(variable)}. Antes de pasar a describir las funciones, es de mucha utilidad conocer una aplicación que nos permita ver el valor de una variable en el momento en el que se ejecuta una extensión, sobre todo para labores de depuración. Esta aplicación se llama NoOp(), y como su nombre indica no hace nada, sólo muestra por la consola (si tenemos un nivel de depuración igual o mayor que 3), el contenido de la variable que recibe como parámetro. En el ejemplo siguiente: exten => 100, 1, NoOp(${CALLERID}) exten => 100, n, Dial(SIP/2500) Al entrar en la extensión 100, se ejecuta la aplicación NoOp(), apareciendo en la consola el contenido de la variable CALLERID. A continuación se ejecutará Dial() Funciones Las funciones en Asterisk se usan en la elaboración del plan de marcación, pero a diferencia de las aplicaciones, las funciones no pueden usarse de forma independiente. Su trabajo es devolver un valor que podrá ser usado por otra función o por una aplicación. Las funciones tienen la siguiente sintaxis: Telefonía de código abierto Asterisk 132

134 Caso Práctico 7. Configuración de Asterisk Nombre_Función(argumento) Ahora bien, si lo que queremos es hacer uso del valor devuelto por una función en el plan de marcación usaremos la sintaxis: ${Nombre_Función(argumento)} La lista completa de las funciones de las que dispone Asterisk la podemos ver introduciendo lo siguiente en la línea de comandos 57 : CLI> show functions Veamos algunas de las funciones que con más frecuencia utilizaremos: Len: la función Len, devuelve la longitud de la cadena que se le pasa como argumento. Timeout: permite obtener el tiempo límite de un canal o establecerlo. En este último caso en colaboración con la aplicación Set. La función Timeout, acepta un parámetro que puede tomar tres valores: 1. absolute: es el tiempo total permitido para una llamada. Por defecto es 0, es decir, no hay tiempo límite. 2. digit: nos permite establecer el tiempo máximo entre pulsaciones cuando el usuario está marcando una extensión. Si entre pulsación y pulsación, se sobrepasa dicho tiempo, los dígitos que hayamos marcado hasta entonces serán interpretados como la extensión a la que se quiere llamar. El tiempo or defecto es cinco segundos. 3. response: si en un momento dentro de una extensión el usuario debe marcar una extensión, y se supera el tiempo definido en response sin marcar nada, el control pasará a la extensión t (veremos su significado en la sección 9.7.1). En el siguiente ejemplo: exten => 100, 1, Set(Color = rojo) exten => 100, n, NoOp(${LEN(Color)}) exten => 100, n, NoOp(${LEN(${Color})}) El primer NoOp nos mostraría un valor igual a 5, mientras que el segundo nos daría un resultado igual a También disponemos de todas la funciones disponibles en: Van Meggelen J, Madsen L, Smith J, (2007), Asterisk: The Future of Telephony, (2nd Edition), 0 Reilly, Appendix E: pp Telefonía de código abierto Asterisk 133

135 Caso Práctico 7. Configuración de Asterisk En este otro, queremos establecer un tiempo máximo de treinta segundos para la duración de una llama: exten => 200, 1, Set(Timeout(absolute) = 30) exten => 200, n, Dial(SIP/2500) A la hora de manipular variables, es muy interesante saber como obtener una subcadena de la cadena almacenada en una variable. Para realizar esto, utilizamos la siguiente sintaxis: ${string:desplazamiento:longitud} La cual retorna una subcadena que empieza en la posición desplazamiento y termina en la posición desplazamiento + longitud. Si desplazamiento es negativo, se devuelve una subcadena de derecha a izquierda de tamaño desplazamiento y si no existe longitud, se toma la cadena que comienza el la posición desplazamiento hasta el final de la cadena. Veamos unos cuantos ejemplos: ${ :1} : devuelve la cadena ${ :-4}: devuelve la cadena 6789 ${ :0:3}: devuelve la cadena 123 ${ :2:3}: devuelve la cadena 345 ${ :-4:3}: devuelve la cadena 678 Así por ejemplo, si queremos que para llamar a un número móvil se marque primero un 0, si utilizamos ${EXTEN} tal cual, estaremos llamando a un número no válido. Para no tener en cuenta al 0, la extensión quedaría así: [salientes-móvil] exten => _06XXXXXXXX, 1, Dial(Dahdi/g2/${EXTEN:1}) 7.8 Uso de Expresiones y Macros En este capítulo veremos como podemos usar expresiones y macros en nuestro plan de marcación lo que nos dará la posibilidad de poder tomar decisiones en base a múltiples criterios y a reutilizar el código Expresiones Una expresión es una combinación de de variables, operadores y valores que devuelven un resultado. Telefonía de código abierto Asterisk 134

136 Caso Práctico 7. Configuración de Asterisk Las expresiones tienen la siguiente sintaxis: $[expresión] Si tenemos por ejemplo una variable SUMA y le queremos restar 10, pondríamos: $[${SUMA} - 10] Existen tres tipos de operadores para construir expresiones: los lógicos, los matemáticos y el de expresiones regulares. El primer grupo lo forman los siguientes operadores: Operador Y lógico: & Operador O lógico: Operadores de comparaciones: =, >, >=, <, <= y!=. El segundo está compuesto por: Suma: + Resta: - Multiplicación: * División: / Porcentaje: % Por último, en el tercer grupo tenemos un sólo operador, el de las expresiones regulares: :. Hay que tener cuidado pues el parser de Asterisk sólo reconoce las expresiones cuando hay un espacio entre el operador y las partes izquierda y derecha. Así, si ponemos: exten => 100, 1, Set(PRUEBA=$[3*5]) Estaremos asignando a la variable PRUEBA, la cadena 3*5. Para que en PRUEBA se almacene el valor 15 resultado de la multiplicación de 3 y 5, es necesario escribir: exten => 100, 1, Set(PRUEBA=$[3 * 5]) Una de las aplicaciones más útiles para evaluar el resultado de una expresión y actuar de una u otra manera dependiendo de su resultado es la aplicación de salto condicional, el GotoIf(). Su sintaxis es la siguiente: GotoIf(expresión?destino1:destino2) Telefonía de código abierto Asterisk 135

137 Caso Práctico 7. Configuración de Asterisk Si el resultado de expresión es verdadero, la ejecución salta a destino1, si por el contrario es falso, iría a destino2. Ambos destinos tienen a su vez la forma: [[contexto ]extensión ]prioridad. Pongamos por ejemplo que tenemos una extensión (100) en la cual queremos que si el número que llama es el , colguemos inmediatamente la llamada. Si la llamada proviene de otro número cualquiera llamaremos a al número Para hacer esto podríamos hacer: exten => 100, 1, GotoIf($[${CALLERID(num)} = ]?noresp:resp) exten => 100, n(noresp), Hangup() exten => 100, n(resp), Dial(SIP/2500) En la extensión 100 de ejemplo, si llama un usuario con el número saltamos a la prioridad norespr y colgamos la llamada. En caso de que sea otro número, llamamos al usuario con extensión 2500 del canal SIP. Notar también como se utilizan las prioridades que hemos definido en la aplicación en conjunción con la prioridad n. Otra aplicación de salto condicional, pero esta referida a condiciones de tiempo es GotoIfTime(). Su sintaxis es: GotoIfTime(hora, dias_de_la_semana, dias_del_mes, meses?destino) Donde el significado de cada parámetro es: hora: es uno o más rangos horarios de la forma 09:00-17:00 por ejemplo. dias_de_la_semana: es una lista de uno o más días de la semana. Los valores que puede tomar son: mon, tue, wed, thu, fri, sat y sun. Para indicar de lunes a viernes basta con poner: mon-fri. dias_del_mes: es una lista de uno o más días del mes, en formato numérico. meses: es una lista de uno o más meses. Los valores pueden ser: jan, feb, mar, apr, etc. destino: como en la aplicación GotoIf(), es de la forma [[contexto ]extensión ]prioridad. Con esta aplicación seremos capaces de crear extensiones como la siguiente: exten => 100, 1, GotoIfTime(09:00-18:00,mon-fri,*,*?abierto 20 1) exten => 100, n, Playback(cerrado) exten => 100, n, Hangup() Telefonía de código abierto Asterisk 136

138 Caso Práctico 7. Configuración de Asterisk Cuando un usuario marca la extensión 100, la aplicación GotoIfTime() comprueba si es una hora entre las 9 de la mañana y las 6 de la tarde, y si es un día distinto de sábado o domingo para cualquier día del mes y para cualquier mes. Si es así, vamos al contexto abierto, a la extensión 20 a la prioridad 1, donde tendremos definido como tratar la llamada. En caso contrario la ejecución sigue al siguiente paso, donde reproducimos un mensaje cerrado y colgamos Macros La utilización de macros en el plan de marcación nos permite reutilizar código. Imaginemos que para un usuario tenemos la siguiente extensión creada: exten => 2100, 1, Dial(SIP/ TtKk) exten => 2100, 1, Voic (2100 u) En ella, cuando marcamos la extensión 2100, se llama al usuario SIP 2100 y si al cabo de 20 segundos no responde, salta el buzón de voz. Ahora imaginemos que queremos hacer lo mismo para la extensión 54000, tendríamos que copiar lo mismo. Si esto ocurre para cientos de extensiones, está claro que podríamos agrupar las partes comunes en una subrutina y que sea utilizada o llamada por todas las extensiones. Esto es lo que conseguimos utilizando macros. Para definir una macro, es necesario poner el nombre de ésta entre corchetes precedido de la palabra macro : [macro-nombre_macro] Y a continuación las instrucciones que la forman. Para llamar a una macro desde el plan de marcación es necesario utilizar la aplicación Macro() la cual tiene la siguiente sintaxis: Macro(nombre_macro, argumento1, argumento2,...,argumenton) Como vemos, es necesario pasarle como parámetros, el nombre de la macro y un número de argumentos variables. Dentro de una macro, tenemos acceso a unas variables especiales que son: ${MACRO_CONTEXT}: contiene el contexto original desde donde la macro fue llamada. ${MACRO_EXTEN}: contiene la extensión original desde donde la macro fue llamada. Telefonía de código abierto Asterisk 137

139 Caso Práctico 7. Configuración de Asterisk ${MACRO_PRIORITY}: contiene la prioridad original desde donde la macro fue llamada. ${ARGN}: donde N va desde 1 hasta el número total de argumentos que hayamos pasado a la aplicación. Cada uno contiene un argumento. Una vez visto esto, ya somos capaces de crear una macro. Concretamente, en el plan de marcación de nuestro escenario, utilizaremos una macro para todas las extensiones de los usuarios SIP del contexto interno. Veamos como la hemos definido: [interno] exten => _2[1-5]XX, 1, Macro(marcador,SIP/${EXTEN}) [macro-marcador] exten => s, 1, Dial(${ARG1} 30 TtKk) exten => s, n, Voic (${MACRO_EXTEN} u) exten => s, n, Hangup() La macro que hemos definido la hemos llamado marcador y se encarga de llamar a la extensión que el usuario ha marcado. Vemos como en la aplicación Dial() hacemos uso de la variable ${ARG1} la cual contiene el valor SIP/${EXTEN} donde ${EXTEN} claro está, se sustituiría por el valor de la extensión marcada. Si no contesta nadie al cabo de treinta segundos, hacemos saltar el buzón de voz. Para que el usuario deje el mensaje en el buzón de voz correcto, hacemos uso de la variable ${MACRO_EXTEN}, la cual contiene como hemos dicho antes, la extensión original desde la que fue llamada (no olvidemos que el número de buzón de voz coincide con el número de extensión de un usuario). Cuando desde otra parte del plan de marcación necesitemos hacer lo mismo, queramos realizar la misma función (llamar y si no responde nadie, que salte el buzón de voz), sólo tendremos que hacer una llamada a esta macro mediante Macro(). 7.9 Configuración de servicios avanzados A continuación vamos a dotar a nuestro plan de marcación de algunas funcionalidades interesantes como son el menú vocal, las salas de conferencia, la posibilidad de transferir llamadas y las colas de espera. Telefonía de código abierto Asterisk 138

140 Caso Práctico 7. Configuración de Asterisk Respuesta de voz interactiva La respuesta de de voz interactiva (IVR, Interactive Voice Response), nos permite interactuar con un usuario sin la necesidad de que su llamada sea atendida por una persona. Cuando un usuario llama a una extensión, se le presentan diversas acciones a realizar mediante la reproducción de archivos de audio previamente grabados en el sistema. Esto no es más que un menú de opciones donde el usuario selecciona una u otra opción marcando los números que se le han indicado para acceder a ellas. En nuestro escenario concretamente, queremos que cuando se reciba una llamada por la línea elegida por la empresa como la principal, la voz grabada de una señorita indique las opciones ya expuestas en la sección Requisito 5: Menú de bienvenida con opciones de este documento. Pero antes de crear esta nueva extensión en nuestro plan de marcación veamos una serie de conceptos que nos son necesarios Extensiones estándares Asterisk tiene algunos nombres de extensión para propósitos especiales los cuales son: i (Invalid): es la extensión que se usa cuando dentro de un contexto, se marca una extensión que no se encuentra en el plan de marcación o cuando se pulsa una opción desconocida en un IVR. s (Start): como ya dijimos antes, es la extensión de inicio. Siendo la extensión por la que se empieza cuando entramos en un contexto sin que tengamos información sobre el identificador de llamada. h (Hangup): es la extensión que se ejecuta cuando una llamada termina dentro de un contexto. Por ejemplo podemos emplearla para reproducir un mensaje de despedida cuando se termina una llamada. t (Timeout): esta extensión se ejecuta cuando después de haber indicado al usuario que marque una extensión o una opción, esté no lo hace en un tiempo inferior a Timeout. So no se establece ningún timeout mediante Set(TIMEOUT(response)=número_de_segundos) el sistema esperará por defecto quince segundos. fax: es la extensión que se ejecutará cuando es una comunicación de fax la que llega al contexto. Telefonía de código abierto Asterisk 139

141 Caso Práctico 7. Configuración de Asterisk Aplicación Background() La aplicación Background() nos permite reproducir un fichero de audio pero a diferencia de Playback(), donde la ejecución de la extensión se para hasta que el archivo se termine de reproducir, con Background() la ejecución sigue mientras de fondo se reproduce el archivo. Esto nos permite en un IVR reproducir un archivo de audio con las diferentes opciones del menú y esperar al mismo tiempo las teclas pulsadas por el usuario. La sintaxis de esta aplicación es la siguiente: Background(archivo1[&archivo2...][ opciones[ contexto]]) Donde archivo1, archivo2, etc, son los archivos de audio que queremos reproducir 58. Vamos entonces sin más dilación a definir el IVR de nuestro escenario. Lo primero de todo es definir la extensión en el contexto entrantesnumeron que hará que se despliegue el menú. Para ello debemos tener en cuenta qué número es el principal de la empresa, y por que canal llega. Supongamos que elegimos el canal 1 para conectar a él la línea principal de la empresa, en este caso pondríamos: [entrantesnumero1] exten => s,1, Goto(menu-empresax,s,1) Con esto, cuando alguien llama al número de la EmpresaX, lo redirigimos a la prioridad 1 de la extensión s del contexto menu-empresax. 58 Los demás parámetros no los utilizaremos pero pueden ser consultados en: Van Meggelen J, Madsen L, Smith J, (2007), Asterisk: The Future of Telephony, (2nd Edition), 0 Reilly, Appendix B: pp Telefonía de código abierto Asterisk 140

142 Caso Práctico 7. Configuración de Asterisk El contexto menu-empresax queda definido así: [menu-empresax] exten => s,1,answer() exten => s,2,set(timeout(digit) = 5) exten => s,3,set(timeout(response) = 10) exten => s,4,background(menu_base) exten => s,5,wait(3) exten => s,6,goto(s,2) exten => 1,1,Goto(introducir-extension,s,1) exten => 2,1,Macro(marcador,SIP/2100) exten => 3,1,Playback(inicioCola) exten => 3,n,Queue(colaTecnicos t) exten => 4,1,Dial(SIP/Extensión1 & SIP/Extensión2 & SIP/Extensión3 30 tk) exten => 4,n,Voic (Buzón1 u) exten => 5,1,Dial(SIP/Extensión1 & SIP/Extensión2 & SIP/Extensión3 30 tk) exten => 5,n,Voic (Buzón1&Buzón2 u) exten => i,1,playback(entrada_no_valida) exten => i,2,goto(s,1) exten => t,1,macro(marcador,sip/2104) Lo primero que hacemos cuando una llamada llega a este contexto, es contestarla con la aplicación Answer(). A continuación establecemos los valores de Timeout para digit y response, reproduciendo a continuación el archivo de audio donde se presentan las diferentes opciones que tendrá el usuario. Este archivo tendrá el siguiente contenido: Bienvenidos al menú de EmpresaX. Pulse uno para marcar una extensión, pulse dos para hablar con el departamento de administración, pulse tres para hablar con el departamento técnico, pulse cuatro para hablar con el departamento comercial o pulse cinco para hablar con el departamento de desarrollo. Si durante la reproducción de este archivo, pulsamos una las cinco posibles opciones, Asterisk ejecutará la extensión asociada a dicha opción. Por lo tanto, Telefonía de código abierto Asterisk 141

143 Caso Práctico 7. Configuración de Asterisk si pulsamos 1, saltaremos mediante la aplicación Goto() al contexto introducir-extension. Si pulsamos 2, llamaremos a la única extensión que compone el Departamento de Administración, que hemos elegido como la Si elegimos la opción 3, ejecutaremos la aplicación Queue() que veremos en la sección: Distribución automática de llamadas. Por ahora nos basta con saber que las llamadas serán enviadas a una especie de colas, donde miembros registrados en cada una de ellas (que serán los miembros de cada departamento) atenderán las llamadas. Antes reproducimos el mensaje iniciocola el cual dice: Su llamada será atendida lo antes posible. Para las opciones 4 y 5, llamaremos a varias extensiones a la vez (las elegidas por la empresa) utilizando el comando Dial() con el siguiente formato: Dial(SIP/Extensión1 & SIP/Extensión2 &.& SIP/ExtensiónN 30 tk) A continuación, si nadie respondiese al cabo de 30 segundos, saltaría el buzón de voz de las personas seleccionadas por la empresa: Voic (Buzón 1&Buzón2 & u) Si pulsamos una opción distinta de 1 a 5, la ejecución irá a la extensión i donde reproduciremos mediante Playback() el mensaje No existe tal opción. Por favor introduzca una opción válida. A continuación mediante Goto() volvemos a la prioridad 2 y ejecutamos todo de nuevo. Si el tiempo máximo se ha agotado, y no se ha introducido ninguna opción, la llamada, la ejecución irá a la extensión t, donde pasaremos la llamada al Departamento de Administración. Decir, que si un usuario llama por una línea diferente a la principal, se realizarán dos tipos de acciones: 1. Si la línea corresponde al departamento técnico, se ejecutará la misma aplicación que al pulsar la opción 3 del menú, es decir, Queue(). [entrantesnumeron] exten => s,1,goto(numeron, 1) exten => NumeroN, 1, Answer() exten => NumeroN,n,Playback(inicioCola) exten => NumeroN,n,Queue(colaTecnicos t) Telefonía de código abierto Asterisk 142

144 Caso Práctico 7. Configuración de Asterisk 2. Si la línea no pertenece a este departamento, se llamará a varias extensiones a la vez y si no contestase nadie al cabo de treinta segundos, saltaría el buzón de voz. [entrantesnumeron] exten => s,1,goto(numeron, 1) exten => NumeroN, 1, Answer() exten => NumeroN,n,Dial(SIP/Extensión1 & SIP/Extensión2 & SIP/Extensión3 30 tk) exten => NumeroN,n,Voic (Buzón1&Buzón2 u) Veamos a continuación la definición del contexto introducir-extension : [introducir-extension] exten => s, 1, Read(NUMERO introducir_extension 4) exten => s, n, GotoIf($[(${NUMERO} >= 2100) & (${NUMERO} <= 2500)]?dentrorango) exten => s, n, Set(TIMEOUT(digit) = 5) exten => s, n, Set(TIMEOUT(response) = 10) exten => s, n(menu), Background(menu_extension) exten => s, n, Wait(2) exten => s, n, Goto(s,menu) exten => s, n(dentrorango), Dial(SIP/${NUMERO} 20 tk) exten => s, n, Voic (${NUMERO} u) exten => s, n, Hangup() exten => 1, 1, Goto(s, 1) exten => 2, 1, Goto(menu-aristec, s, 1) exten => i,1,playback(entrada_no_valida) exten => i,2,goto(s,menu) exten => t,1,macro(marcador,sip/2104) Recordemos que en este contexto entramos después de haber pulsado 1 para introducir una extensión que se supone que el usuario conoce para llamar directamente a un empleado. Lo primero que hacemos es leer la extensión con la aplicación Read(), la cual reproduce el mensaje Introduzca la extensión. quedando a la espera de que el usuario introduzca el número. Éste es guardado en la variable NUMERO y Telefonía de código abierto Asterisk 143

145 Caso Práctico 7. Configuración de Asterisk con el valor 4 que le pasamos como parámetro limitamos que el número tenga como máximo cuatro cifras. Como las extensiones de los empleados de la EmpresaX van de 2100 a 2500, a continuación hacemos una comprobación de que el número leído se encuentre en dicho rango. Si no es así, desplegamos un pequeño menú en el que damos las siguientes opciones: Para volver a marcar la extensión pulse 1. Pulse 2 para volver al menú principal.. Si pulsamos 1, vamos de nuevo al principio de la extensión se nos volverá a pedir que introduzcamos la estensión. Si elegimos la opción 2, iremos al menú principal menu-empresax. Como antes, si el usuario no ha marcado nada, se vueve a repetir el menú y si pulsa una opción distinta de 1 o 2 también. Si el tiempo se cumple, la llamada será atendida por el Departamento Comercial. Si la extensión es correcta, la llamaremos utilizando la aplicación Dial() Distribución automática de llamadas En una distribución automática de llamadas, las llamadas son conducidas a una fila o cola de atención donde agentes o miembros registrados van atendiendo las llamadas en orden de llegada. Para ilustrar esta idea veamos la siguiente figura: Figura 71. Funcionamiento de una distribución automática de llamadas. Si todos los agentes están ocupados, la llamada permanecerá en espera hasta que el primer agente se quede libre. En nuestro escenario, configuraremos la distribución automática de llamadas para que cuando un usuario llame al departamento Técnico en el menú principal, la llamada pase a una fila de atención de llamadas. Telefonía de código abierto Asterisk 144

Aplicaciones sobre una red de telefonía IP. Presentado por: Tamara Ramírez Andrade Jaime Díaz Rojas

Aplicaciones sobre una red de telefonía IP. Presentado por: Tamara Ramírez Andrade Jaime Díaz Rojas Aplicaciones sobre una red de telefonía IP Presentado por: Tamara Ramírez Andrade Jaime Díaz Rojas Que es la telefonía IP? La telefonía IP es una tecnología que permite que las señales de voz viajen a

Más detalles

La telefonía tradicional

La telefonía tradicional VoIP y Asterisk La telefonía tradicional Red telefónica básica RTB: Cada línea RTB tiene asignada una numeración específica. Físicamente está constituida por dos hilos metálicos (par de cobre), que se

Más detalles

ELEMENTOS DE UNA RED VoIP. Page 1

ELEMENTOS DE UNA RED VoIP. Page 1 ELEMENTOS DE UNA RED VoIP Page 1 Page 2 Protocolo H.323 Es una especificación de la ITU-T para transmitir audio, video y datos a través de una red IP (incluida la propia Internet) sin garantizar QoS. H.323

Más detalles

CAPÍTULO 1: CONCEPTOS BÁSICOS DE TELEFONÍA

CAPÍTULO 1: CONCEPTOS BÁSICOS DE TELEFONÍA CAPÍTULO 1: CONCEPTOS BÁSICOS DE TELEFONÍA 1.1 INTRODUCCIÓN La tecnología ha avanzado rápidamente a lo largo de los años innovando la comunicación entre los seres humanos. Dentro de estos grandes logros

Más detalles

Servicio de tecnología de voz IP VoIP. - Telefonía tradicional - Funcionamiento de VoIP - Protocolos VoIP - Elementos VoIP

Servicio de tecnología de voz IP VoIP. - Telefonía tradicional - Funcionamiento de VoIP - Protocolos VoIP - Elementos VoIP Servicio de tecnología de voz IP VoIP - Telefonía tradicional - Funcionamiento de VoIP - Protocolos VoIP - Elementos VoIP Servicio de tecnología de voz IP Voz sobre Protocolo de Internet, también llamado

Más detalles

VoIP. Voice Over IP. Gerard Sales Mariano Gracia Julian H. Del Olmo Jose M. Vila

VoIP. Voice Over IP. Gerard Sales Mariano Gracia Julian H. Del Olmo Jose M. Vila VoIP Voice Over IP Gerard Sales Mariano Gracia Julian H. Del Olmo Jose M. Vila Índice 1! Definición VoIP.! Idea Básica.! Ventajas.! Inconvenientes.! Aplicaciones. Índice 2! Estándares. H.323. SIP. H.248/Megaco.!

Más detalles

Universidad Católica de El Salvador Miembro RAICES

Universidad Católica de El Salvador Miembro RAICES Universidad Católica de El Salvador Miembro RAICES LABORATORIO DE VOZ SOBRE IP (VoIP) Y SU IMPLEMENTACIÓN EN LAS REDES AVANZADAS UTILIZANDO CÓDIGO ABIERTO. Junio de 2011 Financiamiento Proyecto autorizado

Más detalles

Seguridad en VoIP. Seguridad

Seguridad en VoIP. Seguridad Seguridad en VoIP Seguridad Seguridad en VoIP Entender como instalar Asterisk es importante pero: Tanto como para un CRACKER como para un Ethical Hacker es vital entender como funciona el nucleo de la

Más detalles

SIP. Capacidades de SIP. Integración con Protocolos IETF. Que es SIP? Session Initiation Protocol

SIP. Capacidades de SIP. Integración con Protocolos IETF. Que es SIP? Session Initiation Protocol Capacidades de SIP SIP Session Initiation Protocol Ing. Agustín Eijo Universidad Tecnológica Nacional Facultad Regional La Plata SIP soporta cinco facetas en el establecimiento y

Más detalles

1. PARAMETROS DE CALIDAD DE SERVICIO. -PERDIDAS DE PAQUETES EN LOS ROUTERS: Vía TCP son recuperables, pero las retransmisiones TCP son

1. PARAMETROS DE CALIDAD DE SERVICIO. -PERDIDAS DE PAQUETES EN LOS ROUTERS: Vía TCP son recuperables, pero las retransmisiones TCP son TEMA 6: APLICACIONES MULTIMEDIA EN TIEMPO REAL Internet es una red de computadoras TCP/IP que basa su funcionamiento en la tecnología de conmutación de paquetes mediante un servicio no orientado a conexión.

Más detalles

VIDEOCONFERENCIAS SOBRE SIP

VIDEOCONFERENCIAS SOBRE SIP VIDEOCONFERENCIAS SOBRE SIP ING. ALFREDO FLORES E-mail: floresa@ucv.ve RESUMEN SIP (Session Initiation Protocol) fue desarrollado por la IETF ( Internet Engineering Task Force) y definido inicialmente

Más detalles

Qué es la Telefonía sobre IP (ToIP)?

Qué es la Telefonía sobre IP (ToIP)? Telefonía sobre IP (ToIP) Luís Merayo Servicios Qué es la telefonía sobre IP? Cómo funciona? Qué ventajas ofrece al usuario? Resuelva estas y otras dudas en este interesante artículo. Qué es la Telefonía

Más detalles

Telefonía IP. Diseño e Implementación del Sistema RENZO TACO COAYLA. e-mail: renzo@itsperu.com url: http://www.itsperu.com blog: http://www.oxaseis.

Telefonía IP. Diseño e Implementación del Sistema RENZO TACO COAYLA. e-mail: renzo@itsperu.com url: http://www.itsperu.com blog: http://www.oxaseis. Telefonía IP Diseño e Implementación del Sistema RENZO TACO COAYLA e-mail: renzo@itsperu.com url: http://www.itsperu.com blog: http://www.oxaseis.tk CONSULTORIA EMPRESARIAL EN TI Evolución 1995 Israel.-

Más detalles

UNIVERSIDAD CENTRAL DE VENEZUELA FACULTAD DE INGENIERÍA ESTUDIOS DE POSTGRADO TRANSMISIÓN DE DATOS Y TELEMETRÍA

UNIVERSIDAD CENTRAL DE VENEZUELA FACULTAD DE INGENIERÍA ESTUDIOS DE POSTGRADO TRANSMISIÓN DE DATOS Y TELEMETRÍA UNIVERSIDAD CENTRAL DE VENEZUELA FACULTAD DE INGENIERÍA ESTUDIOS DE POSTGRADO TRANSMISIÓN DE DATOS Y TELEMETRÍA INTEGRANTES Barrios, Angellen C.I. 84.430.220 De Arco, Rafael C.I. 17.696.894 PROFESOR: Fernández,

Más detalles

ATEL ASESORES C.A IP Multimedia Subsystem Prof. Diógenes Marcano

ATEL ASESORES C.A IP Multimedia Subsystem Prof. Diógenes Marcano SIP Capítulo 3 Pág. 1 SIP es un protocolo para señalización definido por el IETF según el RFC3261. SIP permite establecer, liberar y modificar sesiones multimedia y está basado en un modelo de transacciones

Más detalles

1 QUÉ ES ASTERISK? Asterisk es una centralita digital diseñada en software libre sobre el sistema operativo GNU/Linux

1 QUÉ ES ASTERISK? Asterisk es una centralita digital diseñada en software libre sobre el sistema operativo GNU/Linux The software PBX ÍNDICE 1 QUÉ ES ASTERISK?...1 2 CARACTERÍSTICAS DE ASTERISK...3 2.1 FUNCIONALIDADES DE LLAMADA...3 2.2 PROTOCOLOS...4 2.2.1 Protocolos VoIP...4 2.2.2 Protocolos telefonía clásica...5 2.3

Más detalles

CÓMO FUNCIONA LA VOZ SOBRE IP

CÓMO FUNCIONA LA VOZ SOBRE IP CÓMO FUNCIONA LA VOZ SOBRE IP La voz sobre IP convierte las señales de voz estándar en paquetes de datos comprimidos que son transportados a través de redes de datos en lugar de líneas telefónicas tradicionales.

Más detalles

Asterisk - Central Telefónica PBX

Asterisk - Central Telefónica PBX Asterisk - Central Telefónica PBX Asterisk es una aplicación software libre de una central telefónica (PBX). Como cualquier PBX, se puede conectar un número determinado de teléfonos para hacer llamadas

Más detalles

5. Voz sobre IP (VoIP) y Telefonía sobre IP (ToIP)

5. Voz sobre IP (VoIP) y Telefonía sobre IP (ToIP) 5. Voz sobre IP (VoIP) y Telefonía sobre IP (ToIP) River Quispe Tacas 1 y Germán Suárez Gómez 2 5.1. Fundamentos de los servicios de VoIP y ToIP Voz sobre IP (VoIP, Voice over IP) es un grupo de recursos

Más detalles

Estudio de H.323 y SIP

Estudio de H.323 y SIP Estudio de H.323 y SIP Trabajo realizado por: Abel Sáez Incertis Introducción a VoIP La Voz sobre IP (VoIP) abre las puertas a la convergencia de las redes de voz y datos en una única red. VoIP supone

Más detalles

Experiencia de Telefonía IP y protocolo SIP Resumen:

Experiencia de Telefonía IP y protocolo SIP Resumen: Experiencia de Telefonía IP y protocolo SIP Resumen: En esta experiencia se trabajará con telefonía ip utilizando como base a servidores Asterisk, los cuales al ser sistemas Gateway/Gatekeepers permiten

Más detalles

LA ARQUITECTURA TCP/IP

LA ARQUITECTURA TCP/IP LA ARQUITECTURA TCP/IP Hemos visto ya como el Modelo de Referencia de Interconexión de Sistemas Abiertos, OSI-RM (Open System Interconection- Reference Model) proporcionó a los fabricantes un conjunto

Más detalles

Configuración del acceso a Internet en una red

Configuración del acceso a Internet en una red Configuración del acceso a Internet en una red Contenido Descripción general 1 Opciones para conectar una red a Internet 2 Configuración del acceso a Internet utilizando un router 12 Configuración del

Más detalles

EVALUACION DEL DESEMPEÑO DE UNA PBX SOPORTADA EN SOFTWARE LIBRE

EVALUACION DEL DESEMPEÑO DE UNA PBX SOPORTADA EN SOFTWARE LIBRE TEL031 EVALUACION DEL DESEMPEÑO DE UNA PBX SOPORTADA EN SOFTWARE LIBRE Temática: Próxima Generación de Redes (NGN) Telefonía IP. AUTOR: MsC. Carlos Alberto Rodríguez López. Email: crodrigz@uclv.edu.cu

Más detalles

Seguridad en Redes Convergentes: Seguridad en Voz sobre IP (VoIP) Internet Security Auditors Daniel Fernández Bleda CISSP, OPST/OPSA Trainer

Seguridad en Redes Convergentes: Seguridad en Voz sobre IP (VoIP) Internet Security Auditors Daniel Fernández Bleda CISSP, OPST/OPSA Trainer Seguridad en Redes Convergentes: Seguridad en Voz sobre IP (VoIP) Internet Security Auditors Daniel Fernández Bleda CISSP, OPST/OPSA Trainer Co-Founder www.isecauditors.com 1 Índice Qué es VoIP? Protocolos

Más detalles

Capítulo 7 Multimedia en Redes de Computadores

Capítulo 7 Multimedia en Redes de Computadores Capítulo 7 Multimedia en Redes de Computadores Material tomado de: Computer Networking: A Top Down Approach Featuring the Internet, 3 rd edition. Jim Kurose, Keith Ross Addison-Wesley, July 2004. 7: Multimedia

Más detalles

RENZO TACO COAYLA. renzo@itsperu.com - http://itsperu.com Movistar : 990949624 - RPM: #990949624 Claro: 952665666 - RPC: 952665666

RENZO TACO COAYLA. renzo@itsperu.com - http://itsperu.com Movistar : 990949624 - RPM: #990949624 Claro: 952665666 - RPC: 952665666 RENZO TACO COAYLA renzo@itsperu.com - http://itsperu.com Movistar : 990949624 - RPM: #990949624 Claro: 952665666 - RPC: 952665666 La telefonía IP también llamada Voz sobre IP se puede definir como la

Más detalles

Jorge De Nova Segundo

Jorge De Nova Segundo UD9: Instalación y administración de otros servicios de red e Internet Servicio de tecnología de voz IP VoIP. Jorge De Nova Segundo Telefonía tradicional. El teléfono es un dispositivo de telecomunicación

Más detalles

Mónica Cortés Dpto. de Ingeniería de Sistemas Telemáticos

Mónica Cortés Dpto. de Ingeniería de Sistemas Telemáticos VOIP Voz sobre IP Mónica Cortés Dpto. de Ingeniería de Sistemas Telemáticos Multimedia en IETF! Real Time Protocol (RTP) paquetes multimedia! Real Time Control Protocol (RTCP) monitorizar & reportar! Session

Más detalles

Transporte de audio sobre redes IP

Transporte de audio sobre redes IP REPORTAJE El objeto del artículo es evaluar la viabilidad de utilizar sistemas que permitan el transporte de audio, con la calidad necesaria en las emisoras de radio y TV, a través de redes IP (redes corporativas

Más detalles

Asterisk, mas que una central telefónica

Asterisk, mas que una central telefónica Asterisk, mas que una central telefónica Andrés Junge M. Totexa - ATIX ajunge@atix.cl ajunge@totexa. cl Que es VoIP? Telefonía IP? Voice Over Internet Protocol Transmisión de voz sobre redes IP (Internet,

Más detalles

Última modificación: 1 de mayo de 2010. www.coimbraweb.com

Última modificación: 1 de mayo de 2010. www.coimbraweb.com TELEFONÍA IP Contenido 1.- Introducción. 2.- Telefonía tradicional. 3.- Codificación de voz. 4.- Telefonía sobre IP. 5.- Equipamiento VoIP. 6.- Calidad de servicio en VoIP. Última modificación: ió 1 de

Más detalles

MÓDULO: SERVICIOS E RED. Nombre: Curso: 2º SMR (9-6-2011) [Examen Final Junio]

MÓDULO: SERVICIOS E RED. Nombre: Curso: 2º SMR (9-6-2011) [Examen Final Junio] MÓDULO: SERVICIOS E RED Nombre: Curso: 2º SMR (9-6-2011) [Examen Final Junio] PARTE 1: Responde las siguientes preguntas tipo TEST. Solo hay una respuesta correcta. Dos respuestas incorrectas anulan una

Más detalles

Proyecto Redes de Computadores I. Protocolo de Voz sobre IP

Proyecto Redes de Computadores I. Protocolo de Voz sobre IP UTFSM Departamento de Electrónica Proyecto Redes de Computadores I Protocolo de Voz sobre IP Fecha 06 de Septiembre 2013 Integrantes Nicolás Oneto Velásquez Nicolás Ramírez Didier Max Sottovia Rodríguez

Más detalles

TEMA 10 REDES DE COMUNICACIÓN CONMUTADAS. CONMUTACIÓN DE CIRCUITOS.

TEMA 10 REDES DE COMUNICACIÓN CONMUTADAS. CONMUTACIÓN DE CIRCUITOS. TEMA 10 REDES DE COMUNICACIÓN CONMUTADAS. CONMUTACIÓN DE CIRCUITOS. 10.1 REDES CONMUTADAS Desde la invención del teléfono, la conmutación de circuitos ha sido la tecnología dominante en las comunicaciones

Más detalles

RESUMEN. IPTV. Protocolos empleados y QoS

RESUMEN. IPTV. Protocolos empleados y QoS RESUMEN IPTV. Protocolos empleados y QoS ÍNDICE INTERNET PROTOCOL TELEVISION. INTRODUCCIÓN. Jon Goñi Amatriain PROTOCOLOS EMPLEADOS EN IPTV/VIDEO-STREAMING. MULTIDIFUSIÓN MEDIANTE IGMP. REAL-TIME STREAMING

Más detalles

51 Int. CI.: H04M 3/38 (2006.01) H04M 3/42 (2006.01) H04M 3/46 (2006.01) TRADUCCIÓN DE PATENTE EUROPEA

51 Int. CI.: H04M 3/38 (2006.01) H04M 3/42 (2006.01) H04M 3/46 (2006.01) TRADUCCIÓN DE PATENTE EUROPEA 19 OFICINA ESPAÑOLA DE PATENTES Y MARCAS ESPAÑA 11 Número de publicación: 2 442 93 1 Int. CI.: H04M 3/38 (06.01) H04M 3/42 (06.01) H04M 3/46 (06.01) 12 TRADUCCIÓN DE PATENTE EUROPEA T3 96 Fecha de presentación

Más detalles

ESTANDARES DE VoIP. SIP Vs H.323

ESTANDARES DE VoIP. SIP Vs H.323 ESTANDARES DE VoIP. SIP Vs H.323 ING. DOUGLAS R. GÁMEZ F. Caracas Venezuela E.mail: dgamezf@gmail.com RESUMEN Tanto SIP como H.323 son estándares para el ruteo y señalización de llamadas, así como intercambio

Más detalles

UNIVERSIDAD NACIONAL DEL COMAHUE

UNIVERSIDAD NACIONAL DEL COMAHUE UNIVERSIDAD NACIONAL DEL COMAHUE Redes de computadoras Internet Juan Carlos Brocca Redes - Internet Descripción Redes - Internet Descripción Física Redes - Internet Descripción Física Sistemas terminales

Más detalles

Capítulo 2 Voz sobre IP.

Capítulo 2 Voz sobre IP. Capítulo 2 Voz sobre IP. 2.1 Antecedentes de Voz sobre IP. Las señales digitales últimamente han prevalecido sobre las analógicas puesto que ofrecen mayores ventajas entra las que se pueden resaltar: Facilidad

Más detalles

Introducción. Protocolos Asterisk. VoIP. Asterisk. Esteban De La Fuente Rubio esteban@delaf.cl L A TEX. Universidad Andrés Bello.

Introducción. Protocolos Asterisk. VoIP. Asterisk. Esteban De La Fuente Rubio esteban@delaf.cl L A TEX. Universidad Andrés Bello. esteban@delaf.cl L A TEX Universidad Andrés Bello 8 jun 2011 Tabla de contenidos 1 2 3 4 Voice over IP / Voice over Internet Protocol. Conjunto de tecnologías que permiten transportar voz sobre una red

Más detalles

Servicio de tecnología de voz IP VoIP.

Servicio de tecnología de voz IP VoIP. Servicio de tecnología de voz IP VoIP. Voz sobre Protocolo de Internet, también llamado Voz sobre IP, Voz IP, VozIP, VoIP (por sus siglas en inglés, Voice over IP), es un grupo de recursos que hacen posible

Más detalles

Última modificación: 7 de junio de 2010. www.coimbraweb.com

Última modificación: 7 de junio de 2010. www.coimbraweb.com SISTEMAS DE SEÑALIZACIÓN Contenido 1.- Concepto de señalización. 2.- Señalización de abonado. 3.- Señalización entre centrales. 4.- Señalización asociada al canal. 5.- Señalización ió por canal común.

Más detalles

Lima, Diciembre 2001. 1.1 Componentes del H.323 El sistema de Voz Sobre IP está compuesto por los siguientes elementos o entidades:

Lima, Diciembre 2001. 1.1 Componentes del H.323 El sistema de Voz Sobre IP está compuesto por los siguientes elementos o entidades: Lima, Diciembre 2001 Estándares relacionados a la tecnología Voz sobre IP (VoIP): Su Clasificación Autor: Enrique Landaure elandaure@yahoo.com http://www.geocities.com/elandaure/voip.html En este artículo

Más detalles

QoS y configuración del tráfico en modo bridge transparente

QoS y configuración del tráfico en modo bridge transparente QoS y configuración del tráfico en modo bridge transparente El propósito de este documento es describir la realización de un bridge transparente que es capaz de realizar QoS (Quality of Service) y gestión

Más detalles

Qué es VoIP?. Por que utilizar VoIP? Telefonía IP vs Telefonía Convencional Por qué la telefonía IP es mas barata? Intercambio de paquetes en la

Qué es VoIP?. Por que utilizar VoIP? Telefonía IP vs Telefonía Convencional Por qué la telefonía IP es mas barata? Intercambio de paquetes en la Qué es VoIP?. Por que utilizar VoIP? Telefonía IP vs Telefonía Convencional Por qué la telefonía IP es mas barata? Intercambio de paquetes en la telefonía IP Tipo de comunicación en la telefonía IP Ventajas

Más detalles

Universidad del Cauca. Facultad de Ingeniería Electrónica y Telecomunicaciones Departamento de Telemática. Temario

Universidad del Cauca. Facultad de Ingeniería Electrónica y Telecomunicaciones Departamento de Telemática. Temario Universidad del Cauca Facultad de Ingeniería Electrónica y Telecomunicaciones Departamento de Telemática Telefonía IP Voz sobre IP (VoIP) Conceptos y arquitectura Universidad del Cauca Dr. Juan Carlos

Más detalles

Asterisk. Conceptos básicos sobre VoIP

Asterisk. Conceptos básicos sobre VoIP Asterisk Conceptos básicos sobre VoIP Introducción VoIP : Voice Over Internet Protocol La voz se digitaliza y viaja en paquetes de datos utilizando el protocolo IP La infraestructura de paquetes sustituye

Más detalles

Yo no hice nada por accidente, ni tampoco fueron así mis invenciones; ellas vinieron por el trabajo

Yo no hice nada por accidente, ni tampoco fueron así mis invenciones; ellas vinieron por el trabajo PREPARACIÓN DEL EXAMEN DE CICLOS VOZ-IP Introducción Yo no hice nada por accidente, ni tampoco fueron así mis invenciones; ellas vinieron por el trabajo Edison Y Guille La voz sobre IP o VoIP consiste

Más detalles

Servicios de voz vía IP Trunking Criterios de buenas prácticas y propuesta para su implantación

Servicios de voz vía IP Trunking Criterios de buenas prácticas y propuesta para su implantación Servicios de voz vía IP Trunking Criterios de buenas prácticas y propuesta para su implantación Se describe en este documento una serie de consideraciones a tener en cuenta para conseguir una buena calidad

Más detalles

Manual de instalación de AlphaTech IP

Manual de instalación de AlphaTech IP Manual de instalación de AlphaTech IP Características: - Cambio automático de modo DIA/NOCHE. - Posibilidad de realizar llamadas marcando * o # - Posibilidad de conectar dos cerraduras independientes -

Más detalles

VoIP en IPv6. Palabras Claves: VoIP; IPv6; IPv4. Figura 1 Diagrama de una Red VoIP TELEFONIA TRADICIONAL

VoIP en IPv6. Palabras Claves: VoIP; IPv6; IPv4. Figura 1 Diagrama de una Red VoIP TELEFONIA TRADICIONAL VoIP en IPv6 Sebastian Chacana Araya, Alumno de Ingeniería Civil Electrónica Francisco Alonso Villalobos, Ingeniero Civil Electrónico Escuela de Ingeniería Eléctrica Pontificia Universidad Católica de

Más detalles

Cuándo nace VoIP? telefonía IP (Internet Protocol)

Cuándo nace VoIP? telefonía IP (Internet Protocol) Introducción VoIP Cuándo nace VoIP? En 1995 la empresa VocalTec realiza la primera llamada telefónica de PC a PC a través de Internet, es aquí donde nace el término de telefonía IP (Internet Protocol)

Más detalles

Voice Over Internet Protocol

Voice Over Internet Protocol VoIP Voice Over Internet Protocol VoIP es el conjunto de normas, dispositivos, protocolos, en definitiva la tecnología que permite comunicar voz sobre el protocolo IP Envío de señal en forma digital en

Más detalles

CAPITULO V RESULTADOS ALCANZADOS. 1.- Funcionamiento del servidor TrixBox (Asterisk).

CAPITULO V RESULTADOS ALCANZADOS. 1.- Funcionamiento del servidor TrixBox (Asterisk). CAPITULO V RESULTADOS ALCANZADOS. Para la implementación de la propuesta, es necesario realizar la evaluación del funcionamiento del servicio de voz sobre IP para Interconectar a un usuario remoto a través

Más detalles

VoIP (Asterix) Escuela de Ingeniería de Sistemas y Computación Administración de Redes y Servidores Febrero Junio 2008

VoIP (Asterix) Escuela de Ingeniería de Sistemas y Computación Administración de Redes y Servidores Febrero Junio 2008 VoIP (Asterix) VoIP VoIP se le conoce a un conjunto de protocolos y tecnologias que hace posible que la voz viaje a traves de la red, empleando el protocolo IP. Este conjunto de tecnologias permite poder

Más detalles

TELEFONÍA A IP. Lic. RODRÍGUEZ GÓMEZ, GISELA. Dpto. INFORMÁTICA. UNIVERSIDAD NACIONAL DEL NORDESTE CORRIENTES

TELEFONÍA A IP. Lic. RODRÍGUEZ GÓMEZ, GISELA. Dpto. INFORMÁTICA. UNIVERSIDAD NACIONAL DEL NORDESTE CORRIENTES TELEFONÍA A IP Lic. RODRÍGUEZ GÓMEZ, GISELA Dpto. INFORMÁTICA. UNIVERSIDAD NACIONAL DEL NORDESTE CORRIENTES Introducción La Telefonía IP es un nuevo sistema de comunicación que permite convertir la voz

Más detalles

Voz sobre IP y Asterisk

Voz sobre IP y Asterisk IRONTEC - http://www.irontec.com Voz sobre IP y Asterisk 1 Softphones Que son? Se trata de software que se ejecuta en estaciones o servidores de trabajo. Permiten establecer llamadas de Voz sobre IP. El

Más detalles

Introducción a SIP y OpenSER

Introducción a SIP y OpenSER Imagine there is no PSTN... Saúl Ibarra Corretgé http://www.saghul.net Un poco de historia Conmutación de circuitos La telefonía tradicional se basaba en conmutación de circuitos. Desde el comienzo hasta

Más detalles

Asterisk. Introducción. Ámbitos de aplicación. Modalidades de Voz/IP. Conceptos básicos sobre VoIP 07/03/2013

Asterisk. Introducción. Ámbitos de aplicación. Modalidades de Voz/IP. Conceptos básicos sobre VoIP 07/03/2013 Introducción Asterisk Conceptos básicos sobre VoIP VoIP : Voice Over Internet Protocol La voz se digitaliza y viaja en paquetes de datos utilizando el protocolo IP La infraestructura de paquetes sustituye

Más detalles

1. Qué codec de audio seleccionaría para minimizar el ancho de banda?

1. Qué codec de audio seleccionaría para minimizar el ancho de banda? Voz Video y Telefonía sobre IP Preguntas múltiple opción 1. Qué codec de audio seleccionaría para minimizar el ancho de banda? a) G.711 b) G.729 c) G.723.1 d) RTAudio 2. El ancho de banda en la LAN en

Más detalles

Presentación de la Empresa

Presentación de la Empresa Presentación de la Empresa Presentación de la Empresa ServiTux Servicios Informáticos S.L. se constituyó como empresa en mayo de 2004 con un objetivo muy claro: implementar soluciones de software libre

Más detalles

11 Número de publicación: 2 238 639. 51 Int. Cl. 7 : H04L 12/56. 72 Inventor/es: Couturier, Alban. 74 Agente: Díez de Rivera y Elzaburu, Ignacio

11 Número de publicación: 2 238 639. 51 Int. Cl. 7 : H04L 12/56. 72 Inventor/es: Couturier, Alban. 74 Agente: Díez de Rivera y Elzaburu, Ignacio 19 OFICINA ESPAÑOLA DE PATENTES Y MARCAS ESPAÑA 11 Número de publicación: 2 238 639 1 Int. Cl. 7 : H04L 12/6 12 TRADUCCIÓN DE PATENTE EUROPEA T3 86 Número de solicitud europea: 02803829.7 86 Fecha de presentación:

Más detalles

INICIACIÓN EN TELEFONÍA IP DE ASTERISK

INICIACIÓN EN TELEFONÍA IP DE ASTERISK OBJETIVO DEL CURSO Curso teórico/práctico donde se emplean los conocimientos y habilidades necesarias para implementar una central de telefonía IP basada en Asterisk. Este curso se centra la ejecución

Más detalles

PROTOCOLO DE TRANSPORTE EN TIEMPO REAL RTP

PROTOCOLO DE TRANSPORTE EN TIEMPO REAL RTP PROTOCOLO DE TRANSPORTE EN TIEMPO REAL RTP R EDES - 3º I NGENIERÍA T ÉCNICA I NFORMÁTICA D E S ISTEMAS Autor: Gil Cabezas, Jesús Curso 2008/2009 ( i62gicaj@uco.es) Volver al índice 1 Í NDICE D E C ONTENIDOS

Más detalles

Puerta de enlace de voz con router. Solución de puerta de enlace de enrutamiento de llamadas inteligente para VoIP DATOS DEL PRODUCTO

Puerta de enlace de voz con router. Solución de puerta de enlace de enrutamiento de llamadas inteligente para VoIP DATOS DEL PRODUCTO Puerta de enlace de voz con router DATOS DEL PRODUCTO Solución de puerta de enlace de enrutamiento de llamadas inteligente para VoIP Asistencia gratuita para las funciones de voz y de grado de la portadora

Más detalles

VoIP: Una Puerta hacia la Convergencia. Page 1

VoIP: Una Puerta hacia la Convergencia. Page 1 VoIP: Una Puerta hacia la Convergencia Page 1 Introducción a VoIP La Voz sobre IP, es el envío, en tiempo real, de voz entre dos o más participantes a través de redes, usando protocolos estándares de Internet,

Más detalles

Asterisk. Conceptos básicos sobre VoIP

Asterisk. Conceptos básicos sobre VoIP Asterisk Conceptos básicos sobre VoIP Introducción VoIP : Voice Over Internet Protocol La voz se digitaliza y viaja en paquetes de datos utilizando el protocolo IP La infraestructura de paquetes sustituye

Más detalles

WHITE HACK 2004. Seguridad en Redes Convergentes: Seguridad en Voz sobre IP (VoIP) 28-30 Mayo 2004

WHITE HACK 2004. Seguridad en Redes Convergentes: Seguridad en Voz sobre IP (VoIP) 28-30 Mayo 2004 WHITE HACK 2004 28-30 Mayo 2004 Seguridad en Redes Convergentes: Seguridad en Voz sobre IP (VoIP) Internet Security Auditors Daniel Fernández Bleda CISSP, OPST/OPSA Trainer Co-Founder Índice Qué es VoIP?

Más detalles

TCP/IP. IRI 2 do cuatrimestre 2015

TCP/IP. IRI 2 do cuatrimestre 2015 TCP/IP IRI 2 do cuatrimestre 2015 Redes y Protocolos Una red es un conjunto de computadoras o dispositivos que pueden comunicarse a través de un medio de transmisión en una red. Los pedidos y datos de

Más detalles

Protocolos de Voz sobre IP (continuación)

Protocolos de Voz sobre IP (continuación) Protocolos de Voz sobre IP (continuación) Protocolos de señalización de llamada Para simplificar la explicación vamos a utilizar un ejemplo de una llamada directa entre dos terminales (teléfonos IP o softphones)

Más detalles

1.Introducción. 2.Direcciones ip

1.Introducción. 2.Direcciones ip 1.Introducción El papel de la capa IP es averiguar cómo encaminar paquetes o datagramas a su destino final, lo que consigue mediante el protocolo IP. Para hacerlo posible, cada interfaz en la red necesita

Más detalles

LINEAMIENTOS DE TELEFONÍA IP

LINEAMIENTOS DE TELEFONÍA IP LINEAMIENTOS DE TELEFONÍA IP OBJETIVO Describir los lineamientos aplicados en la administración de telefonía IP en las sedes de la Universidad Autónoma de Tamaulipas. ALCANCE Todos los dispositivos de

Más detalles

51 Int. CI.: H04L 12/24 (2006.01) TRADUCCIÓN DE PATENTE EUROPEA. 96 Número de solicitud europea: 08866694.6. Fecha de presentación: 12.12.

51 Int. CI.: H04L 12/24 (2006.01) TRADUCCIÓN DE PATENTE EUROPEA. 96 Número de solicitud europea: 08866694.6. Fecha de presentación: 12.12. 19 OFICINA ESPAÑOLA DE PATENTES Y MARCAS ESPAÑA 11 Número de publicación: 2 374 96 1 Int. CI.: H04L 12/24 (06.01) 12 TRADUCCIÓN DE PATENTE EUROPEA 96 Número de solicitud europea: 08866694.6 96 Fecha de

Más detalles

CELERINET ENERO-JUNIO 2013 ESPECIAL

CELERINET ENERO-JUNIO 2013 ESPECIAL 70 Seguridad en Voz sobre Redes de Datos Juan Carlos Flores García UANL-FCFM Universidad Autónoma de Nuevo León Facultad de Ciencias Físico Matemáticas San Nicolás de los Garza, Nuevo León, México Resumen:

Más detalles

Introducción Internet no tiene una estructura real, pero existen varios backbone principales. Estos se construyen a partir de líneas y routers de alta velocidad. Conectados a los backbone hay redes regionales

Más detalles

ASTERISK AGI: DESARROLLO PARA VOZ IP V JORNADA DE SOFTWARE LIBRE

ASTERISK AGI: DESARROLLO PARA VOZ IP V JORNADA DE SOFTWARE LIBRE ASTERISK AGI: DESARROLLO PARA VOZ IP V JORNADA DE SOFTWARE LIBRE Contenido Porque VoIP Conceptos Asterisk Soluciones VoIP Asterisk AGI Que se puede hacer con AGI Ejemplos Conclusiones Referencias y preguntas

Más detalles

Univ. de Concepción del Uruguay Facultad de Ciencias Agrarias Ingeniería Agrónoma

Univ. de Concepción del Uruguay Facultad de Ciencias Agrarias Ingeniería Agrónoma INFORMÁTICA Univ. de Concepción del Uruguay Facultad de Ciencias Agrarias Ingeniería Agrónoma Informática Teoría Unidad 5 Prof. Ing Ezequiel Benavente Ciclo lectivo 2014 Diferencias entre un Modem y un

Más detalles

GUÍAS FÁCILES DE LAS TIC

GUÍAS FÁCILES DE LAS TIC GUÍAS FÁCILES DE LAS TIC del COLEGIO OFICIAL DE INGENIEROS DE TELECOMUNICACIÓN Trabajo Premiado 2006 Autor: Router IP D. José María Jurado García-Posada 17 de Mayo 2006 DIA DE INTERNET Guía fácil Router

Más detalles

INTRODUCCIÓN Videoconferencia sobre Frame Relay

INTRODUCCIÓN Videoconferencia sobre Frame Relay INTRODUCCIÓN Videoconferencia sobre Frame Relay Homero Andrango María Fernanda Jerez Patricia Yacelga Se denomina videoconferencia al sistema que permite a un grupo de personas ubicadas en lugares distantes

Más detalles

UNIVERSIDAD CARLOS III DE MADRID

UNIVERSIDAD CARLOS III DE MADRID UNIVERSIDAD CARLOS III DE MADRID ESCUELA POLITÉCNICA SUPERIOR GRADO EN SISTEMAS DE COMUNICACIONES TRABAJO FIN DE GRADO DESARROLLO E IMPLANTACIÓN DE UN SISTEMA DE VOIP BASADO EN ASTERISK Y PBX AUTOR: Borja

Más detalles

PRÁCTICA DE LABORATORIO. VOZ SOBRE IP (VoIP)

PRÁCTICA DE LABORATORIO. VOZ SOBRE IP (VoIP) PRÁCTICA DE LABRATRI VZ SBRE IP (VoIP) 1. bjetivo El objetivo de esta práctica es observar y verificar los procedimientos en el establecimiento de una llamada en los protocolos H.323 y SIP. 2. Voz sobre

Más detalles

Introducción RTB RTB. Soft Switch. Terminal IP. Pasarela RTB Terminal IP. Terminal Trad. Terminal Trad. Servidor de MultiConferencia.

Introducción RTB RTB. Soft Switch. Terminal IP. Pasarela RTB Terminal IP. Terminal Trad. Terminal Trad. Servidor de MultiConferencia. Asterisk TEL-242 Introducción Telefonía Tradicional: Redes Analógicas (FXO, FXS) Redes RDSI (BRI, PRI / NT, TE) Redes de conmutación de circuitos Voz IP: Protocolos de señalización SIP, H.323, MGCP, IAX

Más detalles

Soluciones Voz IP con software libre

Soluciones Voz IP con software libre Soluciones Voz IP con software libre 1 Índice Índice de Contenidos Presentación de Asterisk Funcionalidades de Asterisk Casos Prácticos y Posibilidades de Integración 2 Presentación de Asterisk Que es

Más detalles

Conmutación. Conmutación telefónica. Justificación y definición.

Conmutación. Conmutación telefónica. Justificación y definición. telefónica Justificación y definición de circuitos de mensajes de paquetes Comparación de las técnicas de conmutación Justificación y definición. Si se atiende a las arquitecturas y técnicas utilizadas

Más detalles

2. INTRODUCCIÓN A VOIP

2. INTRODUCCIÓN A VOIP 2. INTRODUCCIÓN A VOIP En este capítulo vamos a hablar de VoIP. Para ello analizaremos cuáles son las características apropiadas que debe tener una red para que la voz se pueda transmitir de forma correcta

Más detalles

TEMA: PROTOCOLOS TCP/IP

TEMA: PROTOCOLOS TCP/IP TEMA: PROTOCOLOS TCP/IP HISTORIA: El Protocolo de Internet (IP) y el Protocolo de Transmisión (TCP), fueron desarrollados inicialmente en 1973 por el informático estadounidense Vinton Cerf como parte de

Más detalles

INDICE Parte I. Introducción de las Redes Telefónicas y de Datos 1. Introducción 2. Fundamentos de Telefonía

INDICE Parte I. Introducción de las Redes Telefónicas y de Datos 1. Introducción 2. Fundamentos de Telefonía INDICE Prólogo XIX Parte I. Introducción de las Redes Telefónicas y de Datos 1. Introducción 3 1.1. Elementos básicos de un sistema de comunicaciones 5 1.1.1. Elementos del sistema 6 1.2. Evolución histórica

Más detalles

FUNDAMENTOS DE REDES CONCEPTOS DE LAS CAPAS SUPERIORES

FUNDAMENTOS DE REDES CONCEPTOS DE LAS CAPAS SUPERIORES FUNDAMENTOS DE REDES CONCEPTOS DE LAS CAPAS SUPERIORES Dolly Gómez Santacruz dollygos@univalle.edu.co CAPA DE SESION Conceptos El propósito principal de la capa de sesión en la pila OSI es minimizar los

Más detalles

Introducción a Voice over IP

Introducción a Voice over IP Voice over IP (VoIP) Introducción a Voice over IP Voice over IP (VoIP), también llamado telefonía en Internet, es la denominación para la manera de hablar por teléfono a través de una red computacional

Más detalles

www.telefoniahoy.com.ar

www.telefoniahoy.com.ar www. Centrales IP es un nuevo concepto en soluciones de IP- PBX, diseñadas para una nueva generación de clientes. Utilizando todas las características de las PBX tradicionales adaptadas al mundo IP y su

Más detalles

TESIS DE GRADO Previo a la obtención del título de INGENIERAS EN SISTEMAS PRESENTADA POR BABAHOYO 2011

TESIS DE GRADO Previo a la obtención del título de INGENIERAS EN SISTEMAS PRESENTADA POR BABAHOYO 2011 TESIS DE GRADO Previo a la obtención del título de INGENIERAS EN SISTEMAS PRESENTADA POR MaríaCarpio S BABAHOYO 2011 Anabell Maridueña C PLANTEAMIENTO DEL PROBLEMA La Universidad no tiene un sistema de

Más detalles

Tema 27. Electrónica de red: puentes, encaminadores, pasarelas, conmutadores.

Tema 27. Electrónica de red: puentes, encaminadores, pasarelas, conmutadores. Tema 27. Electrónica de red: puentes, encaminadores, pasarelas, conmutadores. ESQUEMA 1 INTRODUCCIÓN... 1 2 Equipos de la capa física... 2 2.1 Repetidor...2 2.2 Concentradores (hub)...3 2.3 Módem...4 3

Más detalles

ESCUELA SUPERIOR POLITÉCNICA DEL LITORAL

ESCUELA SUPERIOR POLITÉCNICA DEL LITORAL ESCUELA SUPERIOR POLITÉCNICA DEL LITORAL FACULTAD DE INGENIERÍA EN ELECTRICIDAD Y COMPUTACIÓN DISEÑO DE PROYECTO DE MIGRACIÓN DE UN CENTRO DE LLAMADAS A UN CENTRO DE CONTACTOS BASADO EN IP TESINA DE SEMINARIO

Más detalles

FUNDAMENTOS DE VoIP Y TELEFONIA IP

FUNDAMENTOS DE VoIP Y TELEFONIA IP OBJETIVO DEL CURSO Aprender a través de un enfoque práctico, los fundamentos de VoIP y Telefonía IP, comprendiendo los protocolos y elementos de redes basadas en esta tecnología. Instalando, configurando

Más detalles

Telefonía con tecnología VoIP para las Zonas Rurales

Telefonía con tecnología VoIP para las Zonas Rurales Telefonía con tecnología VoIP para las Zonas Rurales Por: Ing. Ronald Paucar Curasma CIP 97443 Resumen En el presente artículo, el autor muestra la implementación del servicio telefónico, como aplicación

Más detalles

Concepto General de VPN

Concepto General de VPN Contenido Qué es una VPN? Tecnologias Anteriores. Descripción de las VPN. Arquitecturas VPN. Tunelamiento. PPTP (Protocolo de Túnel Punto a Punto). L2TP (Protocolo de Túnel de Capa 2). VPN SSL (Secure

Más detalles

ANEXO DESCRIPCIÓN TÉCNICA DE VoIp

ANEXO DESCRIPCIÓN TÉCNICA DE VoIp ANEXO DESCRIPCIÓN TÉCNICA DE VoIp DESCRIPCIÓN TECNICA DETALLADA DE VOZ SOBRE IP (VOIP) DESCRIPCIÓN El crecimiento y fuerte implantación de las redes IP, tanto de manera local como remota, el desarrollo

Más detalles

Sistema de telefonía IP de emergencia para Banca

Sistema de telefonía IP de emergencia para Banca Sistema de telefonía IP de emergencia para Banca Descripción El sistema de telefonía IP de emergencia orientado a Banca se basa en el uso de un teléfono o interfono exclusivo denominado IPefono Handset,

Más detalles

1. Fundamentos VoIP. Redes de acceso para voz

1. Fundamentos VoIP. Redes de acceso para voz Redes de acceso para voz 1. Fundamentos VoIP La voz sobre el protocolo de Internet, VoIP ( Voice over IP), es un grupo de recursos que hacen posible que la señal de voz se transmita a través de Internet

Más detalles