You are on page 1of 11

UNIVERSIDAD NACIONAL DE INGENIERA

INSTITUTO NACIONAL DE INVESTIGACIN Y CAPACITACIN DE TELECOMUNICACIONES

TALLER DE TELEFONIA DE CODIGO ABIERTO

Base Terica
Servidor de Comunicaciones Asterisk.Asterisk es un servidor de comunicaciones de cdigo abierto que se ejecuta sobre el Sistema Operativo Linux, es distribuido bajo la licencia GPL por su creador Mark Spencer desde la pgina www.asterisk.org

Asterisk es una plataforma diseada para soportar diferente tipo de hardware y comunicar redes telefnicas de diferentes tecnologas como la telefona tradicional y la telefona IP.

Caractersticas principales:

Soporta diferentes tecnologas como RDSI, E1, Telefona Analgica, Telefona IP. Soporta diferentes protocolos de comunicacin y sealizacin: SIP, H323, MGCP, SIP. Posee un plan de discado flexible y potente. Posee interfaces que permiten utilizar lenguajes de programacin para extender las capacidades de Asterisk.

Hardware para Asterisk:

Para que Asterisk pueda comunicarse con la PSTN es necesario utilizar tarjetas especiales como:

Pgina 1 de 11

UNIVERSIDAD NACIONAL DE INGENIERA


INSTITUTO NACIONAL DE INVESTIGACIN Y CAPACITACIN DE TELECOMUNICACIONES

Interfaces FXS y FXO son utilizadas para comunicar telfonos y lneas telefnicas analgicas. Ejm: TDM 400P

Interfaces Digitales, son interfaces para conectarse a troncales digitales como E1s y T1s. Ejm: TE 420P

Interfaces Digitales RDSI, son interfaces que soportan RDSI BRI. Ejm: B410P

Arquitectura:

La arquitectura de Asterisk est conformada por un ncleo de central privada que acta junto a un temporizador un traductor de codecs y un cargador de mdulos. Este ncleo se comunica al exterior a travs de 4 APIs.
Multiconferencia, IVR, Buzn de Voz, Directorio, aplicaciones personalizadas, ...

API de Aplicaciones Asterisk Traductor de Codecs Lanzador de Aplicaciones

GSM G723 G711 MP3 ADPCMA LINEAR

Temporizador y Gestor de Entradas/Salidas

API de Formatos de Ficheros Asterisk

API de Traduccin de Codecs

GSMsf G723sf WAV MP3

Ncleo de Centralita

Cargador de Mdulos

API de Canales Asterisk

SIP, H323, BRI, PRI, Bancos de Canales, HW especfico, ...

Pgina 2 de 11

UNIVERSIDAD NACIONAL DE INGENIERA


INSTITUTO NACIONAL DE INVESTIGACIN Y CAPACITACIN DE TELECOMUNICACIONES

API de Canales, Sirve para controlar todas las llamadas del sistema, sean Voz IP, analgicas, cualquier otra tecnologa; pudiendo desarrollar nuevos canales.

API de Aplicaciones, permite el uso de aplicaciones tanto internas de Asterisk como aplicaciones personalizadas de los usuarios.

API de Archivos, Sirve para controlar el formato de archivos que pueden ser controlados por el sistema.

API de CODECs, Controla la traduccin de CODECs entre participantes en una comunicacin. Entre los principales CODECs soportados tenemos: G711 G729 GSM

Archivos de Instalacin.Antes de instalar Asterisk es necesario comprobar que el SO Linux tenga instalado lo siguiente: kernel-headers kernel-devel gcc make

Para instalar Asterisk debemos compilar los siguientes paquetes: zaptel, son los drivers para las tarjetas analgicas, incluso cuando no necesitemos instalar tarjetas analgicas debemos instalar este paquete para que nos proporcione un reloj que ser utilizado por algunas aplicaciones de Asterisk. libpri, es una librera para sealizacin con lneas PRI. asterisk, es el cdigo fuente de la central Asterisk, incluyendo sus mdulos, codecs, aplicaciones y archivos de configuracin.

Protocolo SIP.El protocolo SIP (Session Initiation Protcol) se utiliza en internet para iniciar, mantener y terminar sesiones multimedia; por lo que puede ser utilizado con voz, video, chat, juegos interactivos, etc.

Las funciones bsicas del protocolo incluyen: Determinar la ubicacin de los usuarios. Establecer, modificar y terminar sesiones multipartitas entre usuarios.

Pgina 3 de 11

UNIVERSIDAD NACIONAL DE INGENIERA


INSTITUTO NACIONAL DE INVESTIGACIN Y CAPACITACIN DE TELECOMUNICACIONES

SIP es un protocolo punto a punto con un diseo que se basa en los protocolos HTML y SMTP; adopta el modelo cliente-servidor y es transaccional.

El cliente realiza peticiones (requests) que el servidor atiende y genera una o ms respuestas (dependiendo del mtodo de la peticin).Por ejemplo para iniciar una sesin el cliente realiza una peticin con el mtodo INVITE en donde indica con qu usuario (o recurso) quiere establecer la sesin. El servidor responde rechazando o aceptado esa peticin en una serie de respuestas. Las respuestas llevan un cdigo de estado que brindan informacin acerca de si las peticiones fueron resueltas con xito o si se produjo un error. La peticin inicial y todas sus respuestas constituyen una transaccin.

SIP puede trabajar con cualquier protocolo de transporte aunque la especificacin indica que debe ser sobre TCP o UDP, por lo que otros protocolos son opcionales. Los servidores, por defecto, utilizan el puerto 5060 en TCP y UDP para recibir las peticiones de los clientes SIP.

El protocolo SIP utiliza las funciones aportadas por otros protocolos, las que da por hechas y no vuelve a desarrollarlas. Debido a este concepto SIP funciona en colaboracin con otros muchos protocolos. Se complementa por ejemplo con:

El protocolo SDP (Session Description Protocol), que describe el contenido multimedia de la sesin, por ejemplo qu direcciones IP, puertos y cdecs se usarn durante la comunicacin. El protocolo RTP (Real-time Transport Protocol). RTP es el verdadero portador para el contenido de voz y video que intercambian los participantes en una sesin establecida por SIP.

Pgina 4 de 11

UNIVERSIDAD NACIONAL DE INGENIERA


INSTITUTO NACIONAL DE INVESTIGACIN Y CAPACITACIN DE TELECOMUNICACIONES

Servidores SIP: Registro, Proxy y Redireccin El protocolo SIP permite establecer la ubicacin de un usuario determinado, es decir que establece una relacin entre una cuenta de usuario y su direccin de red. Para esto utiliza un mecanismo de registro que funciona de la siguiente manera:

Cada usuario posee una direccin o cuenta SIP que es de la siguiente forma: nombre_usuario@dominio (utiliza la misma forma que una direccin de correo electrnico), esta direccin es invariable respecto a su ubicacin en la red. Adicionalmente el usuario cuenta con una direccin IP que depende de en qu red se encuentre conectado. Cuando un usuario inicializa un terminal (un telfono IP por hardware o un softphone) el agente SIP del telfono enviara una peticin de registro (REGISTER) al servidor informando que direccin IP posee esta cuenta de usuario. El servidor de registro por lo tanto almacena esta asociacin (el mtodo de almacenamiento es independiente al protocolo SIP) y permanece por un periodo de vigencia

Para encaminar los mensajes entre clientes se utilizan 2 tipos de servidores:

Servidor Proxy, encamina el mensaje hacia destino, Servidor de Redireccin, genera una respuesta que indica la direccin del destino o en todo caso la direccin de otro servidor que pueda llevarlo a su destino.

Un mismo servidor puede actuar como Servidor de Redireccin o como Servidor Proxy dependiendo de la situacin.

Asterisk y el Protocolo SIP.El servidor asterisk posee un mdulo para trabajar con canales que utilizan el protocolo SIP, asterisk puede trabajar de 3 formas:

Cliente SIP: en ste modo el servidor Asterisk se registra como cliente SIP en otro servidor. Puede recibir y hacer llamadas al servidor al que se ha registrado. Las llamadas entrantes se rutean a una extensin dentro de Asterisk. Servidor SIP: en ste modo el servidor Asterisk es quien registra las sesiones de otros clientes SIP (telfonos, software, etc). Gateway SIP: en ste modo el servidor Asterisk acta como un Media Gateway entre diferentes protocolos SIP, IAX, H323, PSTN. Entre otros.

Asterisk por otro lado es un Media Gateway por lo tanto acta como un Back-to-Back User Agent, es decir acta tanto como un servidor (atendiendo peticiones) o como un cliente (enviando peticiones). Por lo tanto cuando un telfono SIP marca una extensin, la llamada es establecida entre el telfono y asterisk directamente. Pgina 5 de 11

UNIVERSIDAD NACIONAL DE INGENIERA


INSTITUTO NACIONAL DE INVESTIGACIN Y CAPACITACIN DE TELECOMUNICACIONES

La configuracin del mdulo SIP de asterisk se lleva a cabo configurando el archivo /etc/asterisk/sip.conf.

Este archivo est dividido en secciones:

La seccin general donde configuraremos los parmetros que sern tomadas por defecto en el resto del archivo sip.conf, a menos que sean especificados en las secciones individuales. Aqu se definen la direccin y puerto de escucha para el servidor, los codecs utilizados y el contexto por defecto. Las secciones individuales donde se configuran individualmente cada cuenta SIP. Aqu se determinan la cuenta SIP, su contrasea, el cdec utilizado, el contexto, etc.

Ejemplo:

[general] bindport=5060 bindaddr=0.0.0.0 context=local language=es disallow=all allow=gsm

[3001] type=friend secret=1234 nat=no host=dynamic disalow=all allow=ulaw allow=gsm context=ventas // aqu se indica que tipo de conexin sip realizara asterisk: peer solo recibe llamadas, user solo enva llamadas, friend acta como ambos.

El plan de discado de Asterisk.El Plan de Discado es la parte central del servidor de comunicaciones asterisk, desde aqu se definen las acciones que sern ejecutadas por asterisk cuando se ingresan dgitos por algn canal. Consiste en un conjunto de instrucciones que sern ejecutadas paso a paso por el ncleo de asterisk. Pgina 6 de 11

UNIVERSIDAD NACIONAL DE INGENIERA


INSTITUTO NACIONAL DE INVESTIGACIN Y CAPACITACIN DE TELECOMUNICACIONES

A diferencia de otros sistemas propietarios, el plan de discado de asterisk es completamente configurable, ya que para asterisk una extensin no se relaciona solo con un equipo telefnico sino mas bien con un conjunto de instrucciones.

El plan de discado de Asterisk est compuesto por:

Contextos: el plan de discado est dividido en secciones llamadas contextos. Un contexto actan como una coleccin de extensiones.

Extensiones: una extensin es una lista de instrucciones que Asterisk ejecutar disparadas por una llamada entrante o por dgitos marcados en un canal.

Prioridades: cada extensin ejecuta mltiples pasos las prioridades indican el orden en que se ejecutarn.

Aplicaciones: las aplicaciones ejecutan acciones especficas en un canal, tales como: contestar un canal, tocar un sonido, espiar un canal, colgar un canal.

Ejemplo:

[ventas] exten => 3001,1,Answer() exten => 3001,2,Playback(bienvenida.wav) exten => 3001,3,Hangup()

exten => 3002,1,Dial(SIP/1002,10) exten => 3002,3,Hangup()

Pgina 7 de 11

UNIVERSIDAD NACIONAL DE INGENIERA


INSTITUTO NACIONAL DE INVESTIGACIN Y CAPACITACIN DE TELECOMUNICACIONES

Aplicaciones del plan de discado.Las aplicaciones que se incluyen en asterisk se utilizan en el plan de discado para cumplir diferentes tareas, aqu mencionaremos algunas de ellas que podemos utilizar para implementar un plan de discado dinmico. Dial Intenta establecer una nueva conexin con un canal y lo enlaza con el canal que est iniciando la llamada. Sintaxis: Donde: type/identifier indican el tipo de canal y el identificador del canal. Ejm: SIP/301, IAX2/salida1, ZAP/1. timeout indica el tiempo en segundos que timbrar el canal antes de pasar a la siguiente prioridad. options indica que opciones ejecutaremos al intentar establecer la conexin. URL si la conexin se estableci se enva la URL especificada si es que el canal destino soporta esta caracterstica. Las opciones son muy variadas aqu mencionamos las principales: t: permite al usuario llamado transferir una llamada presionando las teclas de transferencia desatendida (features.conf) T: permite al usuario llamante transferir una llamada presionando las teclas de transferencia desatendida (features.conf) r: genera un tono de timbrado para el usuario que est llamando. Esta opcin fuerza a Asterisk generar un tono de timbrado incluso en casos que no sea apropiado. m: provee Music On Hold al usuario que est llamando hasta que el canal llamado responda. Es mutuamente exclusiva con la opcin r. Hangup cuelga incondicionalmente un canal. Sintaxis: hangup() Answer Responde un canal que est timbrando. Sintaxis: Answer([delay]) Dial(type/identifier,timeout,options) Dial(type1/identifier1[&type2/identifier2[&type3/identifier3... ] ], timeout, options, URL)

Donde: delay indica el nmero de segundos que asterisk va esperar antes de contestar.

Pgina 8 de 11

UNIVERSIDAD NACIONAL DE INGENIERA


INSTITUTO NACIONAL DE INVESTIGACIN Y CAPACITACIN DE TELECOMUNICACIONES

Protocolo IAX2.El IAX esencialmente provee control y transmisin de flujos de datos multimedia sobre redes IP, IAX es extremadamente flexible y puede ser utilizado con cualquier tipo de dato incluido vdeo. Entre sus principales objetivos, heredados de los principales protocolos de VoIP estn:

Minimizar el uso de ancho de banda para el trfico de los datos del medio y de control. Proveer transparencia a NAT. Tener posibilidad de transmitir informacin sobre el plan de discado. Soportar la implantacin eficiente de recursos de pagin e intercomunicacin.

IAX es un protocolo para medios y sealizacin peer to peer, su sealizacin es parecida a la de SIP.

Multiplexa la sealizacin y el flujo de media de mltiples canales sobre una asociacin nica en UDP entre 2 hosts en Internet. Esta capacidad de enviar la sealizacin y la data en el mismo protocolo le permite atravesar dispositivos que usan NAT sin problemas.

La sintaxis para nombrar canales IAX2 es la siguiente. IAX/[<user>[:<secret>]@]<peer>[:<portno>][/<exten>[@<context>][/<options>]]

Donde: <user> y <secret> son el usuario y el password necesarios para conectarse al host <peer> (son opcionales) <peer> es el host al que nos vamos a conectar. (es opcional)

Pgina 9 de 11

UNIVERSIDAD NACIONAL DE INGENIERA


INSTITUTO NACIONAL DE INVESTIGACIN Y CAPACITACIN DE TELECOMUNICACIONES

<portno> el nmero del puerto al que nos vamos a conectar por defecto es 4569. (es opcional) <exten> la extensin que se est solicitando comunicar. (es opcional) <context> el contexto de la extensin. (es opcional) <options> opciones de conexin, donde solo est definida la opcin a para solicitar auto respuesta. (es opcional)

Ejm: IAX/arodriguez:123456@upc.edu.pe/5000@local

Utilizando el TRUNKING con IAX2 para unir 2 asterisk: La conexin de 2 servidores asterisk puede ser hecha utilizando SIP o IAX2. La ventaja de usar IAX2 radica en que utilizando el modo trunking es posible enviar varias conversaciones de voz utilizando una sola cabecera.

La opcin de configurar las conexiones IAX2 como trunking optimiza el uso del ancho de banda enviando paquetes de voz de diferentes conversaciones al mismo tiempo utilizando la misma cabecera. Esto tiene un efecto pequeo si solo se estn pasando 2 o 3 canales pero si se utilizan decenas de ellos el ahorro de ancho de banda es enorme.

Para poder trabajar en esta opcin es necesario tener instalado un timer, este puede ser utilizado de las tarjetas Digium instaladas o a travs del kernel utilizando el driver ztdummy. Para esto es necesario tener ZAPTEL instalado.

Ejemplo de configuracin:

El archivo iax2.conf est formado por secciones empezaremos por la configuracin de las opciones globales.

[general] bindport=4569 bindaddr=20.0.0.1 bandwidth=low jitterbuffer=yes register =>:123456@192.168.1.107 [japon] type=friend secret=123456 host=dynamic trunk=yes context=internacional deny=0.0.0.0/0.0.0.0 permit=200.48.225.110/255.255.255.0

Pgina 10 de 11

UNIVERSIDAD NACIONAL DE INGENIERA


INSTITUTO NACIONAL DE INVESTIGACIN Y CAPACITACIN DE TELECOMUNICACIONES

Donde: bindport <port_number> nmero de puerto de escuche (por defecto 4569). bindaddr <ip_address> direccin IP de escucha (por defecto la direccin IP local) bandwidth low | medium | high con esta opcin se controlan los codecs que sern utilizados, dependiendo del ancho de banda del enlace. allow y disallow <codec_name> | all Lo mismo que en sip.conf jitterbuffer yes | no activa o desactiva el buffer para controlar el jitter, el buffer es utilizado para maximizar la calidad balanceando la latencia con el nmero de paquetes eliminados. (dropp). register: es utilizado para que el servidor local asterisk se registre en otro servidor asterisk. Esto es necesario generalmente cuando el servidor local tiene configurada una IP dinmica. permit <ip_addr>|<network_addr> Permite llamadas entrantes a una direccin IP o una red. deny <ip_addr>|<network_addr> Niega el acceso para llamadas entrantes a la IP o red. trunk yes | no Si est puesto en yes IAX2 ser utilizado en modo trunking.

Comandos IAX:

iax show peers. iax show channels.

Pgina 11 de 11

You might also like