Universidad Autónoma de Querétaro Facultad de Informática Ingeniería en Telecomunicaciones Conmutador Asterisk en FreeBSD Voz sobre IP ERICK GABRIEL CHAN LÓPEZ ENRIQUE GUDIÑO FRANCO MARCIA ASTRID CASTILLA PELAYO ING. JORGE VÁZQUEZ MARTÍNEZ Querétaro, Querétaro a 24 de Mayo del 2012
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Los sistemas de comunicación han jugado un papel muy importante en el
desarrollo de cualquier empresa .Actualmente es difícil imaginar algún plan de
negocio, en el que no se incluya una pequeña inversión en la implementación
de una infraestructura de telecomunicaciones, que facilite la comunicación
tanto con el exterior como internamente.
Gracias a la aparición de las primeras centralitas telefónicas, más conocidas
como PBX (Private Branch eXchange), las empresas evitan conectar todos los
teléfonos de manera separada a la red de telefonía pública conmutada (PSTN,
por sus siglas en inglés), consiguiendo una infraestructura local de voz
independiente de cualquier proveedor de telefonía, pudiendo realizar las
llamadas internas de manera gratuita, evidentemente ahorrando costos.
Con la mejora de las tecnologías que nos rodean día a día, el fuerte
crecimiento de las redes IP y la aparición de nuevos protocolos de transmisión
en tiempo real se crean nuevos entornos en la voz sobre ip (VoIP).
La VoIP es un grupo de recursos que hacen posible que la señal de voz viaje a
través de Internet empleando un protocolo IP. Esto quiere decir que se envía la
señal de voz en forma digital, en lugar de enviarla en forma analógica a través
de circuitos de telefonía convencional como las redes PSTN.
El objetivo principal de este proyecto se basa en la implementación del PBX
Asterisk en una PC con el sistema operativo FreeBSD 8.2 que sea capaz de
sustituir a las costosas PBX.
4 | P á g i n a
Topología
La siguiente topología ilustra cómo se considera la utilización del servidor
FreeBSD con el PBX Asterisk instalado y los clientes.
Workstation1, Workstation2 y Cellphone son los clientes y FreeBSD es el
servidor con el PBX Asterisk instalado.
Workstation1, Workstation2 y Cellphone deben ser capaces de realizar
llamadas entre ellos.
Cellphone se encuentra conectado al access point para tener conectividad con
el servidor.
PBX Asterisk
Asterisk es una aplicación que controla y gestiona comunicaciones de cualquier
tipo, ya sean analógicas, digitales o VoIP mediante todos los protocolos VoIP
que implementa.
Asterisk es Open Source basada en GPL y por lo tanto con las ventajas que
ello representa, lo que lo hace libre para desarrollar sistemas de
comunicaciones profesionales de gran calidad, seguridad y versatilidad.
Funciona como una central telefónica (PBX), es decir que permite conectar
terminales telefónicas de forma independiente al proveedor de telefonía. De
esta forma se consigue que todas las llamadas internas de una misma empresa
sean conmutadas directamente sin necesidad de salir al exterior por la red
pública de telefonía.
- PBX
FreeBSD
Workstation1
Workstation2
IP Cellphone
5 | P á g i n a
Lo más interesante de Asterisk es que soporta muchos protocolos VoIP como
pueden ser SIP, H.323, IAX y MGCP, entre otros.
Características
Asterisk pese a ser una aplicación software ofrece las mismas características
que un PBX hardware:
Reducción de costos no solo por realizar las llamadas sobre la misma
red de datos, si no por ser una aplicación de código abierto.
Facilita la integración y desarrollo de nuevos servicios.
Compatible con una gran cantidad de protocolos VoIP y códecs.
Existe una gran cantidad de información disponible de Asterisk en línea
debido al interés cada vez mayor de las empresas.
Asterisk está formado por un núcleo principal encargado de gestionar todo el
sistema PBX. Sus funciones principales son:
Interconectar de forma automática cada llamada entre los usuarios
tomando en cuenta el tipo de protocolo utilizado por cada terminal.
Lanzar los servicios cuando sean necesarios.
Traducir y adaptar cada códec a cada terminal involucrado en la
comunicación.
Codificadores de audio
La señal de audio ha de ser digitalizada, comprimida y codificada antes de ser
transmitida por la red IP. Para ello se utilizan algoritmos matemáticos
implementados en software llamados códecs.
Existen diferentes modelos de códecs de audio utilizados en VoIP, y
dependiendo del algoritmo escogido en la transmisión, variara la calidad de la
voz.
Algunos de los códecs más utilizados son los siguientes:
Códec Ancho de banda (kbps) Retardo (ms) Patentado
G.711 64 20-30 No
G.726 16,24,32 20-30 No
G.723.1 6.3,5.3 37.5 Si
G.729 8 15 Si
GSM 13 20 No
6 | P á g i n a
Protocolo de señalización
La señalización en VoIP tiene un papel muy importante en la red, ya que es la
encargada de establecer, mantener, administrar y finalizar una conversación
entre dos puntos. Además de ofrecer funciones de supervisión, marcado y QoS
en cada canal de transmisión. A continuación se describen los protocolos de
señalización más usados actualmente.
Protocolo Característica
H.323 Su principal característica es ofrecer servicios multimedia sobre redes que no garantizan QoS. A lo largo de los años se han hecho modificaciones para que cubra todas las necesidades de la VoIP. Pese a ser un protocolo bastante maduro y potente, el interés por utilizarlo es muy poco debido a su complejidad y a ciertas ineficiencias detectadas en conferencias con un número elevado de terminales.
SIP Protocolo para el control de llamas multimedia y la implementación de servicios telefónicos avanzados. Está basado en HTTP adoptando las características más importantes de este estándar como son la sencillez de sus sintaxis y una estructura cliente/servidor. El gran potencial de SIP reside en su flexibilidad.
IAX Fue desarrollado por Digium para la comunicación entre centralitas Asterisk aunque actualmente se ha implementado clientes que también soportan este protocolo. Su principal objetivo es minimizar el ancho de banda utilizado en la transmisión de voz y video a través de la red IP.
Requerimientos
Se espera contar con lo siguiente:
Una dirección IP estática en el servidor.
Tener conectividad con las estaciones de trabajo o terminales IP en la
red.
Seleccionar un protocolo de señalización VoIP (SIP, H.323, etc.)
Para la realización de este proyecto se utilizará Asterisk 1.8.6.0, esta versión
de Asterisk es una versión LTS (Long Term Support).
Se descarga el archivo Asterisk 1.8.6.0 desde la página de descargas de
Asterisk.
http://downloads.asterisk.org/pub/telephony/
7 | P á g i n a
Para instalar Asterisk se necesita el GNU make, por default FreeBSD utiliza
una versión de make para FreeBSD el BSD make, por tal motivo se necesita
descargar e instalar el GNU make.
Se descarga de http://ftp.gnu.org/gnu/make/
Todos los archivos que se descargan desde un servidor externo se guardan
automáticamente en /root/Desktop/Downloads/.
Instalación del GNU make
Para tener una mejor administración de los programas que se instalan
podríamos copiar de la carpeta Downloads a root´s home y descomprimir.
Nos situamos en la carpeta descomprimida y ejecutamos los comandos para compilar
e instalar el Asterisk:
cd /usr/scr/asterisk-1.8.6.0
./configure
make
10 | P á g i n a
make install
make samples
11 | P á g i n a
make clean
Hay que recordar que el compilador que se utiliza ya no es BSD make, ahora
estamos utilizando el GNU make.
Archivos de configuración
Todos los archivos de configuración de Asterisk se encuentran en
/usr/local/etc/asterisk/.
Para la realización de este proyecto se utilizara el protocolo de señalización
SIP.
12 | P á g i n a
Dirección IP Servidor VoIP: 10.0.0.254
Dirección IP Workstation1: 10.0.0.100
Dirección IP Workstation2: 10.0.0.101
Dirección IP Cellphone: 10.0.0.102
sip.conf
El archivo sip.conf es el archivo del canal SIP, en este archivo se configura
todo lo relacionado con el protocolo SIP, como la creación de las cuentas de
los usuarios SIP.
Así que lo editamos.
ee /usr/local/etc/asterisk/sip.conf
El archivo inicia con la sección [general] que contiene toda la información por
defecto de todos los usuarios. Por lo tanto escribiremos o editaremos las
siguientes configuraciones:
[general] localnet=10.0.0.0/255.255.255.0 ; Red y mascara de red local bindport=5060 ; Puerto SIP 5060 bindaddr=0.0.0.0 ; Dirección IP a utilizar, todas la posibles (0.0.0.0) allow =all ; Permitir todo tipo de codecs context=default ; Contexto por default (contestadora)
Donde:
bindaddr=0.0.0.0 significa que nuestro servidor VoIP puede tener cualquier
dirección IP.
context=default es el contexto que está por default en el archivo
extensions.conf, se sugiere dejar ese contexto en general y especificar
contextos en cada usuario.
Nota: En [general] existen opciones que deben ser comentadas o generarían
conflictos en la autenticación de los usuarios, por ejemplo, se comento el
udpbindaddr, y el tcpbindaddr.
Se crean usuarios SIP al final del archivo.
[0001] ; Usuario type=friend ; Tipo de conexión definida
13 | P á g i n a
callerid= “workstation1”<0001> ; Información de identificación de llamada secret=a0001b ; Contraseña de registro host=dynamic ; Dirección IP dinámica context=freebsd-phones ; Las llamadas entrantes van a freebsd-phones [0002] ; Usuario type=friend ; Tipo de conexión definida callerid= “workstation2”<0002> ; Información de identificación de llamada secret=a0002b ; Contraseña de registro host=dynamic ; Dirección IP dinámica context=freebsd-phones ; Las llamadas entrantes van a freebsd-phones [0003] ; Usuario type=friend ; Tipo de conexión definida callerid= “cellphone”<0003> ; Información de identificación de llamada secret=a0003b ; Contraseña de registro host=dynamic ; Dirección IP dinámica context=freebsd-phones ; Las llamadas entrantes van a freebsd-phones
Existen 3 tipos de conexiones:
peer: Autentica llamadas salientes.
user: Autentica llamadas entrantes.
friend: Autentica tanto entrantes como salientes.
host=dynamic significa que este usuario puede tener cualquier dirección IP en
su estación de trabajo o teléfono IP.
context=freebsd-phones es un contexto que se crea en el archivo
extensions.conf.
extensions.conf
El archivo extensions.conf es el más importante en Asterisk y tiene como
misión principal definir el dialplan o plan de numeración que seguirá la
centralita para cada contexto y por tanto para cada usuario, sin importar el
protocolo de señalización que utilizan.
Un contexto es una colección de extensiones, existen para poder diferenciar el
lugar en donde se encuentra una llamada para aplicar políticas de seguridad.
Por ejemplo, si una llamada se encuentra en el contexto [security] podemos
hacer que esa llamada se realice, desvié o definir que usuarios únicamente
pueden llamar a esa extensión.
14 | P á g i n a
Este archivo, al igual que el archivo sip.conf, se compone de secciones o en
este caso de contextos identificados entre corchetes [ ], hay dos contextos muy
importantes que siempre están presentes en todas las versiones de Asterisk
[general] y [globals].
En [general] se configuran pocas opciones generales, las cuales no son muy
importantes, así que se pueden dejar las opciones por defecto, no obstante una
opción que siempre se debe asegurar que este habilitada es static=yes para
poder ejecutar el comando dialplan desde la consola.
En [globals] se definen variables globales, por ejemplo marcar al 066 podría
declararse como:
EMERGENCY = Dial(SIP/066)
En este caso no utilizaremos variables globales, por lo tanto dejamos este
contexto tal cual esta.
Editamos el archivo extensions.conf.
ee /usr/local/etc/asterisk/extensions.conf
[general] static=yes ; Se hace caso al comando dialplan desde la consola
Se crean las extensiones para el contexto [freebsd-phones].
Este es el contexto que vamos a utilizar, y las declaraciones de las extensiones
siguen un mismo formato:
exten => número de extensión ,prioridad ,comando(parámetros).
Donde:
número de extensión hace referencia al número que se marca.
prioridad al orden de ejecución de las instrucciones cuando se realiza la
marcación, por ejemplo primero hace la llamada, si después de un
determinado tiempo no se contesta entonces se cuelga la llamada con la
segunda prioridad.
comando (parámetros) es la acción que realiza cuando se marca a esa
extensión.
Así que creamos y editamos el siguiente contexto al final del archivo:
15 | P á g i n a
[freebsd-phones] exten => 0001,1,Dial(SIP/0001) ; Responder a la extensión 0001 exten => 0001,2,Hangup() ; Colgar si 0001 no contesta exten => 0002,1,Dial(SIP/0002) ; Responder a la extensión 0002 exten => 0002,2,Hangup() ; Colgar si 0001 no contesta exten => 0003,1,Dial(SIP/0003) ; Responder a la extensión 0003 exten => 0003,2,Hangup() ; Colgar si 0003 no contesta
Iniciar el servicio
Editamos el archivo rc.conf para iniciar el Asterisk al arrancar el sistema
FreeBSD.
ee /etc/rc.conf
Y escribimos lo siguiente:
asterisk_enable=“YES”
Arrancamos el Asterisk manualmente con el comando de Asterisk.
asterisk
Configuración clientes SIP y pruebas
Para realizar las llamadas en Workstation1 y Worstation2 se utilizará el
softphone X-Lite 3.0, esta es una aplicación que funciona como terminal IP
además de permitir el uso del protocolo SIP.
Para el caso del Cellphone se utilizara la aplicación CsipSimple, la cual es una
aplicación para android.
En cualquier cliente con X-lite solo escribimos los parámetros necesarios para
realizar el registro:
Usuario
Contraseña
Servidor VoIP
16 | P á g i n a
En el caso del CsipSimple una vez que haya
conectividad con el servidor, y el resto de los clientes,
escribimos los datos de la cuenta SIP y la dirección del
servidor FreeBSD.
No hay que olvidar probar antes de realizar el registro que haya conectividad
con el servidor, un ping al servidor sería suficiente.
17 | P á g i n a
Conclusión
Las comunicaciones en una empresa son importantes, no solo por los
empleados, sino también por los clientes externos que en ocasiones necesitan
hacer consultas remotamente.
El servicio VoIP ahorra costos significativos en una empresa que cuenta con un
número extenso de usuarios que requiere una línea telefónica. Con un PBX
instalado y funcionando en una red empresarial, clientes o en este caso
empleados con sus terminales IP configuradas y sabiendo que la VoIP puede
trabajar en conjunto con la red de datos, se produce un ahorro aun más en
infraestructura; porque se evita la contratación de líneas telefónicas dedicadas
para cada empleado y/o usuarios de la red con un proveedor de telefonía. Si se
utiliza una aplicación como el X-lite se evita la compra de teléfonos para cada
usuario de la red empresarial y si se tienen teléfonos celulares que acepten
aplicaciones como el CsipSimple se aprovecharían más aun las tecnologías
existentes y la empresa ahorraría más aun en costos.
Después de conocer las características de la VoIP y como se convierte en un
factor importante para una empresa podemos concluir que con la posibilidad
de realizar las llamadas internas gratuitamente, se convierte en el mejor
beneficio que ofrece la VoIP.
18 | P á g i n a
Bibliografía
Digium, Inc. (2010). Asterisk. Recuperado el 14 de Mayo del 2012, de http://www.asterisk.org/
FreeBSD. (2011). FreeBSD Handbook. Recuperado el 14 de Mayo del 2012, de