Informe - Escuela de Ingeniería Eléctrica

Anuncio
Universidad de Costa Rica
Facultad de Ingenierı́a
Escuela de Ingenierı́a Eléctrica
Diseño e implementación de una central
telefónica IP basada en RaspBerry Pi y
Asterisk
Por:
Jose Pablo Fernandez Zamora
Ciudad Universitaria “Rodrigo Facio”, Costa Rica
Diciembre 2013
Diseño e implementación de una central
telefónica IP basada en RaspBerry Pi y
Asterisk
Por:
Jose Pablo Fernandez Zamora
IE-0499 Proyecto eléctrico
Aprobado por el Tribunal:
M.Sc. Teodoro Willink Castro
Profesor guı́a
M.Sc. Geovanny Delgado
Profesor lector
Ph.D. Jaime Cascante Vindas
Profesor lector
Resumen
En este proyecto se busca diseñar e implementar una PBX IP basada en
RaspBerry Pi & Asterisk. A su vez determinar de forma teórica y práctica
las capacidades básicas que podrı́a ofrecer esta plataforma.
Inicialmente se procedió a describir la información existente referente a los
posibles resultados que se podrı́an obtener al realizar la implementación de la
PBX IP mencionada. Se determinó que no existe una forma teórica de definir
esto, debido principalmente al procesador que utiliza RaspBerry Pi.
Posteriormente se realizó la implementación de este sistema sin agregar
servicios extras que eventualmente podrı́an ofrecerse. Se detallaron todos los
pasos seguidos, recolectando información de una amplia variedad de fuentes.
Ademas se brindó información referente a las posibles limitantes que pueden
existir al momento de considerar de forma errónea el uso de dispositivos de
alimentación o almacenamiento.
Se describieron las formas en las que es posible implementar Asterisk y
se determinó que la forma mas rápida y menos compleja de hacer esta implementación es por medio de dos distribuciones en particular, de las cuales
una aún es una versión de prueba. Con base a toda la información consultada
también se concluyó que no existe literatura formal que haga referencia a la
implementación de Asterisk en RaspBerry Pi.
Se hicieron pruebas de desempeño simulando tráfico de llamadas por medio
de clientes dentro y fuera de la red local. Con base en los resultados experimentales obtenidos, se hicieron recomendaciones referentes a la cantidad de
llamadas simultáneas que puede soportar RaspBerry Pi & Asterisk.
Luego se recolectó información referente a servicios adicionales que se podrı́an implementar en esta plataforma. Por último, se implementaron dos de
estos servicios: el uso de troncales inalámbricas y la utilización de teléfonos
R
VoIP marca Cisco.
v
Índice general
Índice de figuras
ix
Índice de cuadros
ix
Nomenclatura
xi
1 Introducción
1.1 Introducción del informe . . . . . . . . . . . . . . . . . . . . . .
1.2 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3 Metodologı́a . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1
1
2
2 Marco teórico
2.1 PBX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Asterisk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3 RaspBerry Pi . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
3
4
9
3 RaspBerryPi y Asterisk
13
3.1 Llamadas simultáneas . . . . . . . . . . . . . . . . . . . . . . . 13
3.2 Tiempos de respuesta . . . . . . . . . . . . . . . . . . . . . . . 14
4 Implementación
4.1 Alimentación . . . . . . . . . .
4.2 Memoria de almacenamiento .
4.3 Instalación Asterisk . . . . . .
4.4 Configuración post-instalación .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
15
16
17
17
19
5 Pruebas de desempeño
21
5.1 SIPP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
5.2 Comunicaciones usuarios red local . . . . . . . . . . . . . . . . 22
5.3 Comunicaciones usuarios red extendida utilizando Internet . . . 23
6 Funciones adicionales
29
6.1 Descripción de funciones adicionales . . . . . . . . . . . . . . . 29
6.2 Implementación de funciones adicionales . . . . . . . . . . . . . 31
7 Conclusiones y recomendaciones
vii
35
8 Anexos
37
8.1 Implementación . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
8.2 Pruebas de desempeño . . . . . . . . . . . . . . . . . . . . . . . 60
8.3 Implementación de funciones adicionales . . . . . . . . . . . . . 68
Bibliografı́a
73
viii
Índice de figuras
2.1
2.2
2.3
2.4
PBX manual . . . . . . . . . . . . . . . . . . . . . . .
Ejemplo escabilidad de Asterisk (Akb77, 2013) . . . .
Estructura modular Asterisk . . . . . . . . . . . . . .
Configuración Puerto GPIO - RaspBerry Pi (Cynthec
2013) . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
y Pimoro,
. . . . . . .
12
4.1
Diagrama de conexion - PBX IP servicios basicos . . . . . . . . . .
15
5.1
5.2
5.3
5.4
5.5
5.6
5.7
Diagrama de conexion - Pruebas de desempeño . . . .
Llamadas generadas simultáneamente - Red local . . .
Llamadas generadas alternadas - Red local . . . . . .
Carga promedio CPU - Red local . . . . . . . . . . . .
Llamadas generadas simultáneamente - Red extendida
Llamadas generadas alternadas - Red extendida . . . .
Carga promedio CPU - Red extendida . . . . . . . . .
.
.
.
.
.
.
.
22
23
24
24
26
26
27
6.1
Cambios en configuración extensión 100 - FreePBX . . . . . . . . .
34
8.1
8.2
8.3
8.4
8.5
8.6
8.7
8.8
8.9
8.10
8.11
8.12
Configuración
Configuración
Configuración
Configuración
Configuración
Configuración
Configuración
Configuración
Configuración
Configuración
Configuración
Configuración
.
.
.
.
.
.
.
.
.
.
.
.
49
50
51
52
54
56
56
58
59
60
69
70
Caracterı́sticas RaspBerry Pi . . . . . . . . . . . . . . . . . . . . .
11
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
avanzada - FreePBX . . . . . . . . . . . . . . .
SIP - FreePBX . . . . . . . . . . . . . . . . . .
IAX - FreePBX . . . . . . . . . . . . . . . . . .
extensión SIP - FreePBX . . . . . . . . . . . .
extensión IAX2 - FreePBX . . . . . . . . . . .
enlace al Servidor 2 Parte 1 - FreePBX . . . .
enlace al Servidor 2 Parte 2 - FreePBX . . . .
ruta de salida al Servidor 2 Parte 1 - FreePBX
ruta de salida al Servidor 2 Parte 2 - FreePBX
ruta de entrada - FreePBX . . . . . . . . . . .
troncal GSM - FreePBX . . . . . . . . . . . . .
ruta de salida GSM - FreePBX . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4
6
9
Índice de cuadros
2.1
ix
3.1
Requerimientos mı́nimos recomendados - Asterisk . . . . . . . . . .
14
8.1
8.2
8.3
8.4
8.5
8.6
Parámetros extensiones SIP . . . . . . . . . . . . .
Parámetros extensiones IAX2 . . . . . . . . . . . .
Parámetros enlaces IAX2 - Configuración saliente .
Parámetros enlaces IAX2 - Configuración entrante
Numeración local de extensiones en cada servidor .
Parámetros de configuración rutas de salida . . . .
53
53
55
55
57
58
x
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Nomenclatura
<x>
Todo texto escrito entre los signos mayor que y menor
que, debe sustituirse por la variable descrita por x.
texto
Texto que debe ser ingresado en la terminal o lı́nea de
comandos de Asterisk.
IP
Por sus siglas en inglés, “Internet Protocol”. Es un protocolo usado para la comunicación de datos a través de una
red.
VoIP
Por sus siglas en inglés, “Voice over IP”. Grupo de recursos
que hacen posible que la señal de voz viaje a través de
Internet empleando un protocolo IP.
PBX
Por sus siglas en inglés, “Private Branch Exchange”. Es
cualquier central telefónica conectada directamente a la
red pública de telefonı́a por medio de lı́neas troncales para
gestionar además de las llamadas internas, las entrantes
y salientes con autonomı́a sobre cualquier otra central
telefónica.
PABX
Por sus siglas en inglés, “Private Automatic Branch Exchange”. Es una PBX automática.
PCI
Por sus siglas en inglés, “Peripheral Component Interconnect”. Es un bus de ordenador estándar para conectar
dispositivos periféricos directamente a su placa base.
PSTN
Por sus siglas en inglés, “Public Switched Telephone Network”. Conjunto de elementos constituido por todos los
medios de transmisión y conmutación necesarios para enlazar a voluntad dos equipos terminales mediante un circuito fı́sico que se establece especı́ficamente para la comunicación y que desaparece una vez que se ha completado
la misma. Se trata por tanto, de una red de telecomunicaciones conmutada.
IRC
Por sus siglas en inglés, “Internet Relay Chat”. Es un protocolo de comunicación en tiempo real basado en texto,
que permite debates entre dos o más personas.
xi
SMS
Por sus siglas en inglés, “Short Message Service”. Servicio
disponible en los teléfonos móviles que permite el envı́o
de mensajes cortos (también conocidos como mensajes de
texto) entre teléfonos móviles .
API
Por sus siglas en inglés, “Application Programming Interface”. Es el conjunto de funciones y procedimientos que
ofrece cierta biblioteca para ser utilizado por otro software como una capa de abstracción.
FXS
Por sus siglas en inglés, “Foreing Exchange Station”. Es
el conector en una central telefónica o en la pared de
nuestro hogar, que permite conectar un teléfono analógico
estándar.
ISDN
Por sus siglas en inglés, “Integrated Services Digital Network”. Red que procede por evolución de la Red Digital
Integrada (RDI) y que facilita conexiones digitales extremo a extremo para proporcionar una amplia gama de
servicios, tanto de voz como de otros tipos, y a la que
los usuarios acceden a través de un conjunto de interfaces
normalizados.
SIP
Por sus siglas en inglés, “Session Initiation Protocol”. Es
un protocolo desarrollado con la intención de ser el estándar para la iniciación, modificación y finalización de sesiones interactivas de usuario donde intervienen elementos
multimedia como el vı́deo, voz, mensajerı́a instantánea,
juegos en lı́nea y realidad virtual.
H.323
Es un conjunto de normas ITU (“International Telecommunication Union”) para comunicaciones multimedia que
hacen referencia a los terminales, equipos y servicios estableciendo una señalización en redes IP.
IAX
Por sus siglas en inglés, “Inter-Asterisk eXchange protocol”. Es uno de los protocolos utilizado por Asterisk para
manejar conexiones VoIP entre servidores Asterisk, y entre servidores y clientes que también utilizan protocolo
IAX.
MGCP
Por sus siglas en inglés, “Media Gateway Control Protocol”. Es un protocolo interno de VoIP cuya arquitectura
se diferencia del resto de los protocolos VoIP por ser del
tipo cliente ? servidor.
xii
RAM
Por sus siglas en inglés, “Random-Access Memory”. Se
utiliza frecuentemente para describir a los módulos de
memoria utilizados en los computadores personales y servidores. .
PoE
Por sus siglas en inglés, “Power over Ethernet”. es una
tecnologı́a que incorpora alimentación eléctrica a una infraestructura LAN estándar. Permite que la alimentación
eléctrica se suministre a un dispositivo de red usando el
mismo cable que se utiliza para la conexión de red.
SD
Por sus siglas en inglés, “Secure Digital”. Formato de tarR
jeta de memoria inventado por Panasonic.
WiFi
Por sus siglas en inglés, “Wireless Fidelity”. Es un mecanismo de conexión de dispositivos electrónicos de forma
inalámbrica.
USB
Por sus siglas en inglés, “Universal Serial Bus”. Estándar
industrial que define los cables, conectores y protocolos
usados en un bus para conectar, comunicar y proveer de
alimentación eléctrica entre ordenadores y periféricos y
dispositivos electrónicos.
ARM
Por sus siglas en inglés, “Advanced RISC Machine”. Es
una familia de microprocesadores producidos por la empresa ARM Holdings.
NTP
Por sus siglas en inglés, “Network Time Protocol”. Es un
protocolo de Internet para sincronizar los relojes de los
sistemas informáticos a través del enrutamiento de paquetes en redes con latencia variable.
SSH
Por sus siglas en inglés, “Secure SHell”. Es el nombre de
un protocolo y del programa que lo implementa, y sirve
para acceder a máquinas remotas a través de una red.
URL
Por sus siglas en inglés, “Uniform Resource Locator”. Es
una secuencia de caracteres, de acuerdo a un formato modélico y estándar, que se usa para nombrar recursos en
Internet para su localización o identificación.
LAN
Por sus siglas en inglés, “Local Area Network”. Son redes
de propiedad privada, de hasta unos cuantos kilómetros
de extensión.
xiii
WAN
Por sus siglas en inglés, “Wide Area Network”. Son redes
que se extienden sobre un área geográfica extensa. Las
WAN pueden abarcar ciudades, estados, paı́ses o continentes.
G.711
Es un estándar de codificación digital para representar
una señal de audio en frecuencias de la voz humana,
mediante palabras de 8 bits de resolución, con una tasa
de 8000 muestras por segundo. Por tanto, el codificador
G.711 proporciona un flujo de datos de 64 Kbit/s.
GSM
Por sus siglas en inglés, “Global System for Mobile communications”. Es un estándar de codificación digital que
consume casi la quinta parte de ancho de banda que
G.711. Este proporciona un flujo de datos de 13kbit/s.
GPIO
Por sus siglas en inglés, “General Purpose Input/Output”.
Es es un pin genérico en un chip, cuyo comportamiento
se puede controlar por el usuario en tiempo de ejecución.
UAC
Por sus siglas en inglés, “User Agent Clients”. En una comunicación SIP, se define como agente de usuario cliente
a los usuarios que realizan una petición de comunicación.
UAS
Por sus siglas en inglés, “User Agent Servers”. En una
comunicación SIP, se define como agentes de usuario servidor cuando se recibe una petición de comunicación.
xiv
1
Introducción
1.1
Introducción del informe
A medida de que pasan los años, el mundo de las telecomunicaciones depende
mayormente de sistemas de comunicación VoIp (voz sobre IP), esto debido
principalmente al elevado costo que conlleva el tráfico internacional por medio
de la telefonı́a convencional. Sin embargo, una de las barreras para la transición
a telefonı́a VoIP es el costo de los dispositivos necesarios para adoptar esta
tecnologı́a.
Con este proyecto se busca desarrollar una central telefónica IP basada
principalmente en software de código abierto (Asterisk 1 ) y hardware de bajo
costo (RaspBerry Pi 2 ), dirigido a micro y pequeñas empresas que necesitan
migrar a dicha tecnologı́a sin que esto involucre gastos excesivos e inclusive
innecesarios.
Para facilitar la comprensión de esta propuesta, en este documento se inicia
describiendo todas las capacidades con las que cuenta el hardware (RaspBerry
Pi), posteriormente se describen los servicios básicos que por sı́ mismo podrı́a
proporcionar el software (Asterisk ) y luego se ajustan las capacidades de estos
servicios con base a las capacidades con las que cuenta el hardware seleccionado
(RaspBerry Pi & Asterisk ).
Luego de esto se describe la forma en la que se implementa esta plataforma y se documentan todas las pruebas realizadas con el fin de analizar la
congruencia con las capacidades teóricas determinadas anteriormente.
Posteriormente se describen capacidades adicionales posibles de implementar y se implementan algunas de estas capacidades adicionales.
Por último, se realizan conclusiones y recomendaciones que se consideren
pertinentes.
1.2
Objetivos
Objetivo general
Diseñar e implementar una central telefónica IP basada en RaspBerry Pi y
Asterisk.
1
2
http://www.asterisk.org/
http://www.raspberrypi.org/
1
2
1 Introducción
Objetivos especı́ficos
Para el desarrollo de este proyecto se establecieron los siguientes objetivos
especı́ficos:
• Determinar las capacidades básicas que puede ofrecer una central telefónica IP basada en una plataforma de RaspBerry PI con [ Asterisk].
• Implementar una central telefónica con las capacidades descritas en el
objetivo anterior.
• Describir capacidades adicionales que se pueden implementar en esta
plataforma.
• Implementar algunas de las capacidades adicionales en esta plataforma.
1.3
Metodologı́a
El desarrollo del trabajo incluyó los siguientes pasos y procedimientos, listados
en secuencia:
1. Identificación de las capacidades del hardware de RaspBerry PI.
2. Descripción de los requerimientos de los servicios básicos proporcionados
por Asterisk.
3. Análisis teórico de la capacidad de los servicios básicos que podrı́a proporcionar Asterisk siendo ejecutado sobre RaspBerry PI.
4. Implementación de los servicios básicos proporcionados por una central
telefónica IP basada en RaspBerryPi & Asterisk
5. Ejecución de pruebas sobre la central telefónica IP implementada.
6. Comparación de resultados del análisis teórico con las pruebas experimentales obtenidas.
7. Identificación de servicios adicionales que se podrı́an incluir en la central
telefónica IP implementada.
8. Implementación de algunos servicios adicionales a la central telefónica
IP implementada originalmente.
2
Marco teórico
En este capı́tulo se describen las principales caracterı́sticas de PBX, RaspBerryPi y Asterisk, esto debido principalmente a que son los temas en los que
se fundamenta este proyecto.
2.1
PBX
Siglas en inglés de Private Branch Exchange. Según Rosa (2009) no es más que
un panel de conexiones que se instalaba en las empresas con el fin de enlazar
manualmente canales de comunicación telefónicos. En la figura 2.1 se muestra
una PBX manual.
Conforme pasaba el tiempo se fueron desarrollando nuevos descubrimientos
tecnológicos y alrededor de 1960 empezaron a aparecer las primeras PBX
automáticas, las cuales en su momento se conocieron como PABX (Private
Automatic Branch Exchange) en donde la conmutación ahora se realizaba por
medio de dispositivos electromecánicos o circuitos integrados. El desarrollo
de la PABX permitió ventajas principalmente en rapidez y regularidad en el
establecimiento de las comunicaciones. Sin embargo, debido a la popularidad
de la PBX se le siguió llamando de esta manera a los sistemas que realizaban
la conmutación de forma automática (PABX).
Posteriormente a esto debido a la intervención del transistor y el de la
electrónica digital nace la telefonı́a digital, las PBX se implementan con electrónica digital haciéndose más complejas.
Actualmente las PBX han dado un paso más allá, a tal grado de llegar
a ser implementadas mediante software y ofrecer servicios como conferencias,
buzón de voz, operadora automática, administración remota, etc.
Actualmente una PBX se define como una central telefónica conectada a
una red pública por medio de lı́neas troncales la cual gestiona además de las
llamadas internas, las llamadas entrantes y salientes. Es importante destacar
que comúnmente se le denomina PBX a cualquier central telefónica, lo cual
es erróneo. Aunque las centrales telefónicas y las PBX administran tráfico
telefónico, la PBX gestiona las llamadas salientes y una central telefónica
únicamente interconectarı́a el terminal con una lı́nea externa.
3
4
2 Marco teórico
Figura 2.1: PBX manual
2.2
Asterisk
Según Bryant et al. (2013), Asterisk es actualmente la PBX más exitosa en el
mundo y ya es una tecnologı́a aceptada en la industria de las telecomunicaciones.
Asterisk es una PBX por software que puede ser ejecutado sobre cualquier ordenador estándar siempre y cuando cumpla con las capacidades de
procesamiento y almacenamiento mı́nimas. Este software además está basado
en el concepto de software libre, lo cual no lo convierte únicamente en una
aplicación gratuita sino también en una aplicación sin restricciones para su
ejecución, distribución e incluso modificación. Fue creada por Mark Spencer y
actualmente su principal desarrollador es Digium 1 . Es una aplicación multiplataforma, sin embargo, la plataforma nativa es Linux, la cual además es en
la que se cuenta con mayor soporte.
La gran diferencia entre Asterisk y otros software propietarios, es que
Asterisk no tiene restricciones en cuanto a la forma en la que debe funcionar
un sistema de telefonı́a o bien que tecnologı́as se deben emplear. Debido a
su estructura modular y la su gran flexibilidad, es posible incorporar casi
cualquier tecnologı́a a esta aplicación. Sin embargo, una de sus desventajas es
que no es simple de configurar, por lo que es necesario contratar a un experto
en el tema al momento de hacer la implementación, o adquirir las habilidades
necesarias para realizar esta tarea.
1
http://www.digium.com/
2.2. Asterisk
5
Principales ventajas
Según Garcia (2008) entre las principales ventajas de Asterisk podemos destacar:
• Reducción de costos: Esto no se refiere únicamente a que la licencia es
de código abierto, sino también en factores determinantes como la unificación de la red, la utilización de plataformas para servidores estándar
(por medio del puerto PCI), etc.
• Funcionalidad: Asterisk ofrece una variedad de servicios inclusive mayor
a la que muchos otros programas propietario ofrecen por lo que es otra
de sus ventajas.
• Escalabilidad: El sistema es tan flexible que ofrece inclusive la posibilidad de paralelizar sus servicios en diversos servidores. Además es posible
conectar cada PBX Asterisk con otras, lo que hace posible implementar cualquier topologı́a de red que sea necesaria (multi-departamental,
multi-sedes, etc). En la figura 2.2 se muestra un ejemplo.
• Inter-operabilidad y Flexibilidad: Esto hace referencia a que soporta una
gran cantidad de estándares telefónicos tanto analógicos como para IP.
Lo que permite una amplia posibilidad de interacción con otros sistemas.
Interfaces
Hasta ahora se ha mencionado a Asterisk como una PBX por software que puede correr sobre cualquier ordenador estándar, sin embargo, parte importante
de las PBX es la posible interactuar con troncales analógicas y está claro que
un ordenador estándar no cuenta con puertos fı́sicos que nos permitan administrar estos canales. Según Bryant et al. (2013), cuando el proyecto Asterisk
nació, habı́an otros posibles proyectos de telefonı́a de código abierto, uno de
esos proyectos era la asociación de Asterisk con Zapata Telephony Project
para el desarrollo de interfaces PSTN (public switched telephone network).
Hoy en dı́a se ha incrementado la cantidad de fabricantes como también la
variedad de tipos de interfaces, entre los más destacados podemos mencionar
a Digium, OpenVox2 , Pika3 , Sangoma4 , Dialogic5 , etc.
2
http://www.openvox.cn/
http://www.pikatechnologies.com/
4
http://www2.sangoma.com/
5
http://www.dialogic.com/
3
6
2 Marco teórico
Figura 2.2: Ejemplo escabilidad de Asterisk (Akb77, 2013)
Comunidad
Bryant et al. (2013) afirman que otra de las indiscutibles ventajas con las
que cuenta Asterisk actualmente es la extensa y apasionada comunidad de
desarrollo y soporte (dirigida por Digium). Lo cual nace a raı́z de la gran
cantidad de usuarios satisfechos. Además la comunidad cuenta diversos medios
de comunicación como listas de correos, sitios wiki, canales IRC, etc. Los cuales
facilitan la interacción con el resto de usuarios.
Servicios
Según Garcia (2008) algunas de las principales servicios que ofrece Asterisk
son:
• Receptor de alarmas
2.2. Asterisk
7
• Asistencia automatizada
• Autentificación
• Lista negra
• Grabación de llamadas
• Monitoreo de llamadas
• Llamadas en espera
• Recuperación de llamadas
• Guı́a de llamadas
• Transferencia de llamadas
• Identificación de usuarios
• Conferencias
• Integración de base de datos
• Marcado por nombre
• Lógica flexible de las extensiones
• Lista de directorio interactivo
• Respuesta de voz interactivo
• Mensajerı́a SMS
• Detección de conversaciones
Módulos
Como se ha mencionado anteriormente la estructura de Asterisk es modular.
Es como una estructura de legos en donde cada lego (modulo) cumple una
función en especı́fico y al unirlos todos obtenemos un sistema con una amplia
diversidad de servicios, desde los más simples hasta los más complejos(Bryant
et al., 2013).
Según Garcia (2008), dependiendo de su función los módulos pueden agruparse en los siguientes grupos:
• Núcleo de PBX: Aquı́ se agrupan todos los módulos relacionados con
un sistema de conmutación de intercambio de rama privada o bien las
capacidades esenciales de una PBX.
8
2 Marco teórico
• Lanzador de aplicaciones: Este grupo contiene aplicaciones que mejoran
servicios y van un poco más allá de los servicios primitivos de una PBX.
Ejemplo de esto puede ser voicemail, lista de directorios, mensajerı́a
SMS, grabación de llamadas, etc.
• Codecs y traductor de codecs: Contiene todos los codificadores y decodificadores con los que dispone la PBX para comunicarse con el resto de
dispositivos. Estos son indispensables para realizar un eficiente uso del
ancho de banda (G723, G729, iLBC, GSM, LPC10).
• Gestor de entra y salida: Contiene organización de tareas de bajo nivel
y sistemas de operación. Su función primordial es mantener un buen
rendimiento ante cambios en la demanda de servicios.
• Cargador de módulos API (Application Programming Interface): Aquı́
se agrupan los módulos que permiten el uso flexible de las aplicaciones
para ejecutar las acciones requeridas. Además permite el desarrollo de
aplicaciones de acuerdo a requerimientos especı́ficos. Se clasifican en 4
tipos:
– Canal API
– Aplicación API
– Traductor de codec API
– Formato de archivo API
• Canales: Contiene todos los módulos necesarios para la utilización de
diversos canales de comunicación (FXS, ISDN, Bluetooth, ITU, PSTN,
etc).
• Protocolos: Contiene información de señalización al momento de establecer comunicación y además determinar punto de destino (SIP, H323,
IAX, MGCP, etc). En ocasiones maneja aspectos relacionados con tono,
tiempo de repique, identificación de llamadas, etc.
En la figura 2.3 se muestra gráficamente la estructura de Asterisk, en donde
PBX Core representa el grupo de módulos con las funciones más primitivas de
Asterisk, todos los rectángulos azules los módulos que conforman el grupo de
protocolos, y los rectángulos morados y rojos el resto de agrupaciones según
su función.
2.3. RaspBerry Pi
9
Figura 2.3: Estructura modular Asterisk
(Asterisk.do, 2013)
2.3
RaspBerry Pi
Según RaspBerryPi-Foundation (2013), RaspBerry Pi es un ordenador de placa reducida de bajo costo, desarrollada en el Reino Unido, cuyo propósito inicialmente era promover la educación de adultos y niños principalmente en el
campo de la informática.
En el cuadro 2.1 se resumen las principales caracterı́sticas de este dispositivo.
Puntos a considerar:
• No es posible iniciar el sistema sin una tarjeta SD.
• No existe ningún interruptor de encendido/apagado.
• No cuenta con un reloj de tiempo real.
• La memoria RAM no es removible ni intercambiable.
• No soporta PoE (Power over Ethernet).
10
2 Marco teórico
• El tamaño mı́nimo recomendado para la tarjeta SD es 2GB. Además
se le han hecho pruebas con memorias de hasta 32GB y ha funcionado
correctamente.
• Ninguno de los modelos cuenta con Wi-Fi (es posible incorporar vı́a
USB).
• Para incrementar la cantidad de puertos USB se recomienda el uso de
un HUB con alimentación independiente.
Además este ordenador puede comunicarse con dispositivos externos mediante el conector GPIO incorporado. En la figura 2.4 se muestra información
recopilada por Cyntech Components6 y Pimoroni7 acerca de la estructura del
conector. En donde es posible observar que este cuenta con 4 pines de alimentación (2 a 5V y 2 a 3.3V), 5 pines a tierra y 17 pines entrada/salida.
Los pines de entrada/salida están divididos en 5 secciones dependiendo de las
capacidades especiales o uso predeterminado para los mismos.
A continuación se describe dicha división y el uso de destinado para cada
uno(Cynthec y Pimoro, 2013):
1. I 2 C(Inter-Integrated Circuit):Es una interfaz de comunicación de baja
velocidad (usualmente de 10kbit/s hasta 100kbit/s) originalmente diseñada para la comunicación entre circuitos integrados. Solo requiere dos
lı́neas para transmitir información, SDA para datos y SCL para el reloj.
2. CLK: Se genera una señal de reloj de onda cuadrada para uso general
con una frecuencia alrededor de 75MHz.
3. SPI(Serial Peripheral Interface Bus): Conector serial sincrónico de dos
vı́as. El tipo de comunicación es entre un dispositivo maestro y otro
esclavo en donde el dispositivo maestro provee la señal de sincronı́a. La
información se transfiere por medio de los puertos MOSI y MISO. Cada
transmisión está sincronizada por el pulso en SCLK.
4. UART(Universal Asynchronous Receiver/Transmitter):Este es un método de transmisión de datos bajo conexión en serie. Cada uno de los
dispositivos de comunicación contiene un registro de desplazamiento que
convierte los bytes de datos que se transmiten en un flujo de bits.
6
http://www.cyntech.co.uk - Proveedor especializado en componentes electromecánicos
para una variedad de fabricantes lideres de la industria.
7
http://shop.pimoroni.com - Distribuidor de RaspBerry Pi y componentes adicionales.
2.3. RaspBerry Pi
11
Cuadro 2.1: Caracterı́sticas RaspBerry Pi
Descripción
M odeloA
M odeloB
Precio
CPU
GPU
RAM
Memoria
Puertos USB
Salida de Video
Salida de Sonido
Red Local
Consumo (tı́pico)
Alimentación
Dimensiones
Sistema operativo
$25
ARM1176JZF-S a 700MHz
Videocore 4
256MB
Puerto SD
1
RCA y HDMI
Jack de 3.5mm y HDMI
No disponible
300mA
5V - puerto MicroUSB
85.60mm x 56mm x 21mm
Fedora, Debian y ArchLinux
$35
ARM1176JZF-S a 700MHz
Videocore 4
512MB
Puerto SD
2
RCA y HDMI
Jack de 3.5mm y HDMI
Ethernet 10/100 (RJ45)
700mA
5V - puerto MicroUSB
85.60mm x 56mm x 21mm
Fedora, Debian y ArchLinux
5. PWM(Pulse-width modulation):Esta es una manera de controlar la cantidad de energı́a entregada a un dispositivo por medio de rápidas interrupciones. Tı́picamente miles de veces por segundo. Este pin puede ser
utilizado para controlar motores, leds, entre otros.
12
2 Marco teórico
Figura 2.4: Configuración Puerto GPIO - RaspBerry Pi (Cynthec y Pimoro,
2013)
3
RaspBerryPi y Asterisk
Este capı́tulo busca determinar las capacidades básicas que puede ofrecer una
central telefónica IP basada en RaspBerry Pi & Asterisk.
A continuación se describe por secciones toda la información recolectada
referente a los posibles resultados y aspectos a considerar luego de ejecutar
Asterisk en RaspBerry Pi.
3.1
Llamadas simultáneas
En cuanto a PBX o centrales telefónicas este aspecto constituye uno de los
parámetros primordiales, dado que determina las capacidades de comunicación
simultáneas que es soportado por el equipo. Este parámetro dependiendo del
tráfico de llamadas simultáneas y total de colaboradores en una empresa puede
ser traducido en el total de usuarios (no simultáneos) para los cuales es posible
brindar una solución de comunicación.
Lo indicado anteriormente significa que la cantidad de llamadas simultáneas que puede administrar una central telefónica no necesariamente equivale
a la cantidad de usuarios que está puede administrar. Pues para una empresa
con 100 usuarios en donde el tráfico estimado es de 7 llamadas simultáneas
significa que una central telefónica que soporte hasta 10 llamadas simultáneas
seria capaz de administrar poco más de 100 usuarios. Sin embargo, para otra
empresa en donde únicamente se cuenta con 10 usuarios y el tráfico de llamadas
sigue siendo 7 llamadas simultáneas, la misma central telefónica descrita anteriormente únicamente podrá brindar una solución adecuada para poco más
de 10 usuarios. La diferencia entre llamadas simultáneas y usuarios adquiere
especial importancia para determinar a que sectores va dirigida la solución en
estudio.
Meggelen et al. (2007) brinda una tabla con requerimientos mı́nimos recomendados y la cantidad llamadas simultáneas soportadas, en donde además
aclaran que los valores son muy conservadores y que no son definitivos. En el
cuadro 3.1 se muestra la información indicada.
En cuanto a las capacidades de RaspBerry Pi comparadas con las del
cuadro 3.1 es importante hacer algunas observaciones:
13
14
3 RaspBerryPi y Asterisk
Cuadro 3.1: Requerimientos mı́nimos recomendados - Asterisk
Propósito
Número de canales
Mı́nimo recomendado
Sistema como hobby
SOHO (pequeña oficina/oficina en casa)
Sistema para una pequeña empresa
Sistema mediano/grande
No más de 5
5 a 10
hasta 25
más de 25
400MHz x86, 256 MB RAM
1 GHz x86, 512 MB RAM
3GHz x86, 1GB RAM
Dual CPUs o múltiples servidores
• Todos los procesadores indicados en la tabla son arquitectura x86 y el
procesador de RaspBerry Pi es ARM.
Según Lyzanor (2012) los procesadores x86 están basados en arquitectura CISC (Complex Instruction Set Computing), lo que significa que son
diseñados para instrucciones complejas, simultáneas y ejecución lenta.
Por otro lado los procesadores ARM son estructura RISC (Reduced Instruction Set Computer) cuyo objetivo es facilitar el paralelismo en la
ejecución de instrucciones y permitir realizar tareas de menor tamaño
con procesos más cortos lo que conlleva a disminución de energı́a empleada.
Dado que la arquitectura x86 tiene ventajas sobre ARM relacionadas
al rendimiento es necesario aplicar alguna equivalencia para hacer compatibles los resultados del cuadro 3.1 a las capacidades de RaspBerry
Pi. Sin embargo, dicha equivalencia no existe por lo que el cuadro 3.1
puede ser utilizado únicamente como referencia. En el capı́tulo siguiente
se busca determinar dicha capacidad de forma experimental.
• La memoria RAM con la que cuenta RaspBerry Pi es la recomendada
para equipos SOHO.
3.2
Tiempos de respuesta
Según Meggelen et al. (2007) las necesidades de Asterisk son similares a las
de una aplicación embebida de tiempo real. Esto debido principalmente a que
debe tener prioridad al momento de acceder al procesador y buses del sistema.
En sistemas pequeños esto no podrı́a causar inconvenientes, sin embargo, para
sistemas de mayor capacidad puede provocar problemas de calidad en el audio.
Debido a esto, independientemente del hardware o sistema operativo en el
que se ejecuta Asterisk es importante determinar adecuadamente los privilegios de ejecución del mismo.
4
Implementación
En esta sección se busca detallar las consideraciones que se hicieron y los
pasos que se siguieron para implementar una central telefónica IP basada en
RaspBerry Pi & Asterisk.
Dispositivos utilizados:
• RaspBerry Pi versión B.
R
• Cargador marca Enercellmodelo
2301775.
R
• Memoria microSDHC de 16GB clase 4 marca Silicon Powercon
un
adaptador microSD-SD de la misma marca.
En la figura 4.1 se muestra el diagrama de conexión utilizado durante la
implementación.
A continuación se describen todos los aspectos relevantes a la implementación, en donde el orden de las secciones representa la secuencia cronológica
realizada:
Figura 4.1: Diagrama de conexion - PBX IP servicios basicos
15
16
4 Implementación
4.1
Alimentación
RaspBerry Pi
Según RaspBerryPi-Foundation (2013) el consumo de corriente es aproximadamente de 300mA y 700mA para las versiones A y B respectivamente, en
donde se consideró el uso del dispositivo de red y periféricos USB. En cuanto
al nivel de tension este debe ser 5V y el tipo de conector debe ser MicroUSB.
Debido a esto es indispensable tener una fuente de alimentación que por lo
menos proporcione la corriente requerida de acuerdo al modelo que tengamos.
De no cumplirse la corriente mı́nima requerida, un error tı́pico es que el dispositivo no encienda o bien que los periféricos como el ratón o teclado no
funcionen adecuadamente.
Para esta implementación se utilizó una RaspBerry Pi versión B por consiR
guiente una fuente de poder marca Enercellmodelo
23017751 con capacidad
de proveer hasta 1.2A a 5V.
Por último es importante agregar que según RaspBerryPi-Foundation (2013),
RaspBerry Pi si puede ser alimentado por medio de baterı́as (4 x AA), sin
embargo, no por PoE2 (por si misma).
Dispositivos externos (USB)
Este es un aspecto de gran relevancia debido principalmente a que normalmente cuando se utiliza dispositivos USB en computadores ordinarios rara
vez se piensa en el consumo de los dispositivos o bien en las limitaciones que
tenga nuestro ordenador para alimentarlos. En ordenadores de placa reducida
como RaspBerry Pi en donde se diseña principalmente con el fin de mantener un consumo energético bajo, existen limitaciones en cuanto a la cantidad
de corriente que este puede transmitir. Todo lo dicho anteriormente se resume principalmente en que cuando se deba conectar dispositivos USB como
módemes o discos duros es indispensable para un correcto funcionamiento del
dispositivo el uso de un hub USB con alimentación independiente, para que de
esta forma el dispositivo se energice por medio del hub y no desde el RaspBerry
Pi.
1
R
Este dispositivo puede ser adquirido en cualquier sucursal de RadioShackcon
un precio
equivalente a $21.
2
Power Over Ethernet
4.2. Memoria de almacenamiento
4.2
17
Memoria de almacenamiento
Como ya se mencionó anteriormente RaspBerry Pi cuenta con un puerto SD
para este propósito. Las memorias SD (en sus siglas en inglés Secure Digital)
R Según SDes un formato de tarjetas de memorias inventado por Panasonic.
Association (2013) las memorias SD se clasifican principalmente de acuerdo
a su capacidad de almacenamiento, velocidad en el bus y la velocidad de
transferencia.
• Capacidad de almacenamiento: Se clasifica en SD, SDHC o SDXD con
una capacidad máxima de 2GB, 32GB y 2TB respectivamente.
• Velocidad en el bus: Se clasifica en normal speed, high speed, UHS-I
y UHS-II con velocidades de bus de 12.5MB/s , 25MB/s y 156MB/s
respectivamente.
• Velocidad de transferencia: Esta clasificación garantiza la velocidad mı́nima de transferencia. Para speed class3 se clasifican en clase 2, 4, 6
y 10 en donde cada una equivale a 2MB/s, 4MB/s, 6MB/s y 10MB/s
respectivamente.
Según RaspBerryPi-Foundation (2013) la capacidad de almacenamiento
mı́nima recomendada es de 4GB, además se han realizado pruebas exitosas
con memorias de hasta 32GB lo cual implica que se debe usar una memoria
SDHC. En cuanto a la velocidad en el bus ninguna representa limitaciones de
desempeño para RaspBerryPi por lo que se recomienda normal speed (menor
precio). Por último, la velocidad de transferencia si puede afectar el desempeño
al momento de que el procesador intente acceder a los datos y dicha velocidad
sea limitada por lo que se recomienda clase 10.
Para esta implementación se utilizó una microSDHC de 16GB clase 4 marR
ca Silicon Powercon
un adaptador microSD-SD de la misma marca.
4.3
Instalación Asterisk
Como ya se mencionó en el capı́tulo 2, Asterisk es una aplicación multiplataforma, lo que significa que puede ser ejecutada sobre diferentes sistemas
operativos. Sin embargo, la plataforma nativa es Linux y se recomienda la
ejecución de esta aplicación en dicha plataforma. Debido a lo anterior, para
esta implementación se utilizó Linux como sistema operativo, en particular la
distribución recomendada para RaspBerry Pi, raspbian.
3
Existe otra clasificación para UHS class.
18
4 Implementación
Hay muchas formas de instalar Asterisk, en esta sección se describen dos.
Una la cual se recomienda para sistemas que necesiten ser implementados de
forma muy rápida y fácil, y otra requiere un mayor tiempo de implementación,
además es un poco más compleja pero es ideal para conocer la estructura y el
funcionamiento primitivo de Asterisk.
Los alcances de esta sección son hasta la instalación de Asterisk. En otras
secciones se detallará la forma de configuración de ciertas funciones, en donde
en dichas etapas se tomará como primicia que la instalación se ha realizado
con base a una distribución de Linux con Asterisk integrado, en particular
RasPBX.
En la implementación se realizó la instalación en RaspBerry Pi utilizando
una distribución de Linux con Asterisk integrado. Sin embargo, también se
realizó la instalación de una distribución de debı́an (cubian4 ) y posteriormente
Asterisk en un ordenador de placa reducida llamado Cubieboard2 5 con el fin
de hacer pruebas de comunicación entre la PBX montada en RaspBerry Pi y
la PBX montada en Cubieboard2.
Instalando una distribución de Linux con Asterisk integrado
Según Bryant et al. (2013) se han creado muchas distribuciones basadas fundamentalmente en la ejecución de Asterisk. Estas distribuciones han ganado
tanta popularidad que las personas suelen incluso confundirlas con el mismo
Asterisk. Normalmente estas distribuciones incluyen Asterisk, las dependencias fundamentales de Asterisk, una interfaz de administración WEB, una
compleja base de datos y un conjunto de instrucciones para que se puedan
realizar cambios en la configuración.
Existen además distribuciones que inclusive ya tienen integrado el sistema
operativo.
Entre las distribuciones más conocidas podemos mencionar:
• Asterisk NOW
• Elastix
• Trixbox
• FreePBX Distro
• PBX in a Flash
4
5
http://cubian.org/
http://cubieboard.org/
4.4. Configuración post-instalación
19
Sin embargo, no todas estas distribuciones están disponibles para RaspBerry Pi, al recopilar información respecto al tema únicamente se encontraron
las siguientes:
• RasPBX
• Trixbox
De las cuales Trixbox aún se encontraba en una versión beta. Debido a ello
para esta implementación se realizó la instalación de RasPBX.
RasPBX está basada en Rasbian (Debian7/Wheezy) e incluye:
• Asterisk 11.5.0
• FreePBX 2.11.0.10
Los pasos seguidos para esta instalación se detallan en los anexos.
Instalando Raspbian y posteriormente Asterisk
Esta es otra alternativa al momento de instalar Asterisk en RaspBerry Pi.
Para la implementación no se considero este método, debido a que por ser una
instalación mas primitiva y requiere mas tiempo. Sin embargo, en la sección
de anexos se detallan los pasos recomendados para realizar esta instalación.
4.4
Configuración post-instalación
Luego de realizar la instalación de RasPBX fue necesario hacer lo siguiente:
• Configuración Raspi-Config.
• Instalar programas relacionados al servidor NTP.
• Asignación IP estática.
• Actualización del sistema.
• Configuración inicial Asterisk.
• Configuración de extensiones.
• Configuración de troncales.
• Configuración de rutas de entrada/salida.
La descripción y los pasos seguidos para realizar las acciones antes indicadas se detallan en los anexos.
5
Pruebas de desempeño
El objetivo de esta sección es determinar el comportamiento de RaspBerry
Pi & Asterisk posteriormente a la generación de tráfico VoIp, en particular
utilizando protocolo SIP.
Para lograr este propósito se utilizó una herramienta llamada SIPP, es de
código libre exclusivo para pruebas y generación de tráfico sobre el protocolo
SIP. Esta incluye un par de escenarios elementales para agentes de usuario
UAC y UAS. Esta herramienta permite establecer y liberar múltiples llamadas
utilizando los métodos INVITE y BYE. Además permite ejecutar escenarios
personalizados a partir de archivos XML, entre ellos escenarios con tráfico
UDP.
Se realizaron pruebas utilizando dos codificadores, G711 y GSM. Se escogieron estos debido a que el primero tiene una buena calidad de audio, requiere
bajo procesamiento y alto ancho de banda, por lo que se recomienda para enlaces dentro de la red local. El segundo por su parte muestra un deterioro en
la calidad del audio, además requiere más procesamiento y un menor ancho
de banda, por lo que es ideal para aplicaciones móviles o bien enlaces desde
la red extendida.
En la figura 5.1 se muestra el diagrama de conexión utilizado durante estas
pruebas.
En las subsección siguiente se indica todo lo referente a la aplicación utilizada para generar tráfico, además se muestra el código utilizado en cada uno
de los escenarios. En las subsecciones siguientes se muestran y analizan los
resultados obtenidos.
5.1
SIPP
Como ya se mencionó anteriormente, SIPP es un generador de tráfico SIP el
cual utiliza agentes de usuario UAC y UAS (esto básicamente hace referencia a
desde donde se está generando el tráfico). En este caso el tráfico se generó desde
un dispositivo cliente (UAC) con linux-debian, por lo que el procedimiento
descrito es aplicable a equipos similares.
En los anexos se describen los pasos seguidos para la instalación y configuración de SIPP.
21
22
5 Pruebas de desempeño
Figura 5.1: Diagrama de conexion - Pruebas de desempeño
5.2
Comunicaciones usuarios red local
Para generar tráfico desde la red local, se accedió a la red en la cual se encontraba la PBX IP y posteriormente se apuntó a dicha PBX IP por medio de la
IP local. Para hacer esto, desde el ordenador en donde se instaló SIPP, se debe
acceder a la carpeta que se creó al momento de la instalación y posteriormente
ejecutar un comando similar al siguiente:
$ sudo ./sipp -sf
uac_pcap_u.xml -s 5005 192.168.12.20 -r 1 -l 1
El comando anterior lo que hace es generar tráfico hacia la extensión 5005, en
donde -sf hace referencia al escenario a ejecutar (para G711 -sf uac pcap u.xml
y para GSM -sf uac pcap g.xml ) , -r la taza de generación de llamadas (llamadas/segundo) y -l la cantidad limite de llamadas simultáneas. Además en
la configuración del escenario se asignó una duración de cada llamada de 9
segundos.
En cada una de las pruebas se efectuó alrededor de 50 llamadas en total, en
donde se vario el limite de llamadas simultáneas desde 1 hasta 27 y obteniendo
ası́ un porcentaje de llamadas perdidas para cada uno de estos valores. Además
se guardó el registro de la carga promedio en el procesador durante la ejecución
de cada prueba.
5.3. Comunicaciones usuarios red extendida utilizando Internet
23
Figura 5.2: Llamadas generadas simultáneamente - Red local
En la figura 5.2 se muestra el resultado obtenido iniciando y finalizando
todas las llamadas simultáneamente cada 9 segundos.
En la figura 5.3 se muestra el resultado obtenido iniciando y finalizando
todas las llamadas en momentos diferentes posteriormente a los 9 segundos
de haber sido ejecutadas, lo cual reduce substancialmente el porcentaje de
llamadas perdidas.
En la figura 5.4 se muestra el aumento en la carga promedio del procesador
de acuerdo a la cantidad de llamadas simultáneas realizadas. Como se puede
observar, el comportamiento es el esperado, dado que al utilizar un codificador
GSM se requiere mayor uso del procesador.
Con base a las figuras 5.2, 5.3 y 5.4 se determinó que la perdida de llamadas
no es un factor determinante en cuanto a comunicaciones locales. Esto debido
a que se requiere generar un tráfico cercano a las 14 llamadas simultáneas (en
el escenario con mayor exigencias) para que se provoque un porcentaje de llamadas perdidas significativo. Sin embargo, la carga promedio en el procesador
si aumenta constantemente, por lo que en este caso es la mayor limitación.
Debido a esto, para no exceder una carga promedio de 0.7 se deben de ejecutar como máximo 6 o 7 llamadas simultáneas para codificadores GSM o
G711(u-law) respectivamente, todas desde la red local.
5.3
Comunicaciones usuarios red extendida
utilizando Internet
Para generar tráfico desde la red extendida, se accedió a una red distinta a
la cual se encontraba la PBX IP y posteriormente se apuntó a dicha PBX
24
5 Pruebas de desempeño
Figura 5.3: Llamadas generadas alternadas - Red local
Figura 5.4: Carga promedio CPU - Red local
5.3. Comunicaciones usuarios red extendida utilizando Internet
25
IP por medio de la IP pública. Para hacer esto, desde el ordenador en donde
se instaló SIPP, se debe acceder a la carpeta que se creó al momento de la
instalación y posteriormente ejecutar un comando similar al siguiente:
$ sudo ./sipp -sf
uac_pcap_u.xml -s 5005 163.178.124.149 -r 1 -l 1
El comando anterior lo que hace es generar tráfico hacia la extensión 5005, en
donde -sf hace referencia al escenario a ejecutar (para G711 -sf uac pcap u.xml
y para GSM -sf uac pcap g.xml ) , -r la taza de generación de llamadas (llamadas/segundo) y -l la cantidad limite de llamadas simultáneas. Además en
la configuración del escenario se asignó una duración de cada llamada de 9
segundos.
En cada una de las pruebas se efectuó alrededor de 50 llamadas en total, en
donde se vario el limite de llamadas simultáneas desde 1 hasta 12 y obteniendo
ası́ un porcentaje de llamadas perdidas para cada uno de estos valores. Además
se guardo el registro de la carga promedio en el procesador durante la ejecución
de cada prueba.
En la figura 5.5 se muestra el resultado obtenido iniciando y finalizando
todas las llamadas simultáneamente cada 9 segundos. En esta figura se puede
observar que al cambiar de codificador no se logró reducir el porcentaje de
llamadas perdidas, esto posiblemente debido a que al momento de terminar e
iniciar las llamadas, se hace simultáneamente, lo cual requiere un mayor ancho
de banda en lapsos muy cortos por lo que esto aumenta considerablemente
dicho porcentaje el cual modifica el comportamiento esperado.
En la figura 5.6 se muestra el resultado obtenido iniciando y finalizando
todas las llamadas en momentos diferentes posteriormente a los 9 segundos de
haber sido ejecutadas, lo cual reduce substancialmente el porcentaje de llamadas perdidas. De esta forma se logró observar el comportamiento esperado
luego de cambiar de codificador, puesto que al utilizando un codificador el cual
requiere un menor ancho de banda, se observó la disminución nuevamente en
el porcentaje de llamadas perdidas.
En la figura 5.7 se muestra el aumento en la carga promedio del procesador de acuerdo a la cantidad de llamadas simultáneas realizadas. Como se
puede observar, al realizar una cantidad inferior a 7 llamadas simultáneas el
comportamiento es el esperado, dado que al utilizar un codificador GSM se
requiere mayor uso del procesador.
De acuerdo a los resultados obtenidos en las figuras 5.5,5.6 y 5.7, se observó
que para no exceder un porcentaje de llamadas perdidas superior al 10 % y
una carga promedio de 0.7 se deben de ejecutar como máximo 3 llamadas
simultáneas (G711 o GSM), todas desde la red extendida (por Internet).
26
5 Pruebas de desempeño
Figura 5.5: Llamadas generadas simultáneamente - Red extendida
Figura 5.6: Llamadas generadas alternadas - Red extendida
5.3. Comunicaciones usuarios red extendida utilizando Internet
Figura 5.7: Carga promedio CPU - Red extendida
27
6
Funciones adicionales
Posteriormente a la implementación y pruebas de desempeño de RaspBerry Pi
& Asterisk funcionando como PBX IP con los servicios básicos, este capı́tulo
busca describir servicios adicionales que podrı́an ser implementados a esta
plataforma. Posteriormente se implementan algunos de estos servicios.
6.1
Descripción de funciones adicionales
Troncal por GSM
Según Raspberry&asterisk-community (2013a) entre las ultimas caracterı́sticas desarrolladas para RaspBerry Pi & Asterisk es la capacidad para hacer
llamadas directamente desde una red GSM/3G por medio de un módem USB
R el modulo chan-dongle de Asterisk. Con esta nueva caractemarca Huaweiy
rı́stica se podrı́a utilizar una ruta externa más económica para aquellos casos
en los que el proveedor de servicios GMS/3G tenga precios más bajos que los
proveedores de servicios de troncales SIP, además en lugares en donde solo
exista cobertura GSM/3G y no por parte del resto de proveedores.
El hecho de contar con una troncal de este tipo incluso podrı́a utilizarse
como respaldo ante problemas de conectividad con el resto de proveedores de
servicios alámbricos.
Por último, es importante hacer indicar que según Raspberry&asteriskcommunity (2013a) el consumo total por parte de RaspBerry Pi y el módem
USB es aproximadamente 5W, por lo que es una solución que sigue contando
con un bajo consumo energético.
Integración con actuadores
Como ya se mencionó en el capı́tulo 2, RaspBerry Pi cuenta con pines GPIO,
por lo que existe la posibilidad de integrar la PBX IP con diferentes actuadores.
Esto cobra principal interés en aquellos casos en los que eventualmente es
necesario realizar acciones de control de forma remota, inclusive cuando no se
cuente con acceso a Internet.
A continuación se describen algunos ejemplos para los cuales se podrı́a
utilizar esta caracterı́stica:
• Permitir acceso a áreas restringidas (puertas con chapas eléctricas, etc)
29
30
6 Funciones adicionales
• Encender o apagar iluminación.
• Abrir o cerrar portón eléctrico (motores).
• Variar la velocidad de un motor.
• Activar alarma.
• Conocer el estado de algún dispositivo (ON/OFF).
• Conocer el valor de algún sensor resistivo.
En donde cada una de las acciones descritas podrı́an realizarse desde una
extensión local o incluso desde una llamada externa.
Debido a que RaspBerry Pi cuenta únicamente con puertos GPIO, es importante resaltar que no cuenta con entradas ni salidas analógicas por lo que
generalmente podrı́a activar dispositivos únicamente de 2 estados (ON/OFF).
Además al utilizar los pines como salidas digitales se manejan tensiones de
3.3V por lo que en la mayorı́a de los casos seria necesario utilizar electrónica
adicional para controlar dispositivos de mayor potencia.
En el ejemplo en donde se menciona la posibilidad de variar la velocidad de
un motor, esto se propone obtener gracias a que RaspBerry Pi cuenta con un
puerto PWM. Sin embargo, se considera importante recalcar que RaspBerry
Pi cuenta únicamente con un puerto PWM.
En el caso del último ejemplo mencionado, en el cual se pretende conocer
el valor de algún sensor, esto podrı́a hacerse por medio de una técnica llamada
RCTIME, en la cual básicamente por medio de un puerto de entrada digital
se determina el tiempo de descarga de un capacitor y posteriormente a esto
se deduce el valor resistivo del sensor. Debido a lo anterior es un requisito
indispensable que el sensor sea de tipo resistivo.
En el mercado existen varias tarjetas que se utilizan como interfaz para
los puertos GPIO, en este apartado se mencionaran las caracterı́sticas de una
R
en particular: PiFace.
R se ajusta fı́sicamente sobre RaspBerry
Según element14 (2013)1 , PiFace
Pi, en especı́fico sobre el puerto GPIO. Cuenta con las siguientes caracterı́sticas:
• Dos reles de hasta 20V y 5A.
• Cuatro interruptores tactiles.
• Ocho entradas digitales.
• Ocho LEDs indicadores.
1
Uno de los principales distribuidores de RaspBerry Pi.
6.2. Implementación de funciones adicionales
31
• Buffers para proteger las entradas y salidas de RaspBerry Pi.
R cuenta con una librerı́a para Python lo que hace su
Además PiFace
implementación menos compleja.
R
Hardphone marca Cisco
Este apartado va dirigido principalmente a aquellas situaciones en las cuales
se requiere migrar desde una solución con Cisco Call Manager2 hacia una
basada en Asterisk. Esto principalmente porque al momento de contemplar
dicha migración, generalmente se desea conservar la mayor cantidad de equipo
instalado originalmente, tal es el caso de los teléfonos y adaptadores VoIP.
R
Los teléfonos Ciscode
gama empresarial son terminales de alta calidad y
fiabilidad, sin embargo, originalmente utilizan un protocolo de comunicación
diferente (SCCP). Por lo que es necesario cambiarles el firmware a uno que
soporte un protocolo SIP3 (si está disponible) para poder utilizarlos con Asterisk. Todo esto a cambio del costo por el nuevo firmware el cual es bastante
inferior al costo del dispositivo.
En el siguiente capı́tulo describen los pasos que se siguieron para actualizar
R
y configurar un teléfono Ciscomodelo
CP-7940, además de las consideraciones adicionales al momento de configurar la extensión para este dispositivo en
una PBX IP basada en Asterisk.
6.2
Implementación de funciones adicionales
En esta sección se busca detallar las consideraciones que se hicieron y los
pasos que se siguieron para implementar algunas de las capacidades adicionales
descritas en el sección anterior utilizando como plataforma una PBX IP basada
en RaspBerry Pi & Asterisk.
Dispositivos utilizados:
R
• Módem GSM marca Huaweimodelo
E1750.
• Chip GSM proveedor Claro.
R
• Telefono VoIP marca Ciscomodelo
CP-7940.
En la figura 5.1 se muestra el diagrama de conexión utilizado durante esta
implementación.
2
R
Software PBX propietario de Cisco
R
El siguiente enlace muestra una lista con algunos modelos de teléfonos Ciscoy
los
firmware disponibles:
http://www.cisco.com/en/US/docs/voice ip comm/cucme/requirements/guide/cme71spc.htm.
3
32
6 Funciones adicionales
A continuación se describen todos los aspectos relevantes a la implementación por medio de subsecciones. En donde además el orden de dichas secciones
representa la secuencia cronológica realizada:
Troncal por GSM
En esta sección se detallan los pasos seguidos para la implementación de troncales GSM una PBX IP basada en RaspBerry Pi & Asterisk.
• Requerimientos del hardware: Primero que nada es importante indicar que existe una tabla recopilada por Raspberry&asterisk-community
(2013b) en la que se indican los modelos que han sido probados y el soporte que ofrece cada uno (transmitir voz, SMS y USSD). Siendo todos
R
los modelos soportados marca Huawei.
Debido a lo anterior esta implementación se realizó con un módem GSM,
R modelo E1750.
marca Huawei,
• Alimentación: Según Raspberry&asterisk-community (2013a) el consumo de energético de RaspBerry Pi y un módem GSM es de 5W, por lo
que seria necesario una fuente de alimentación que proporcione una corriente igual o superior a 1A. Sin embargo, se recomienda para el módem
GSM la utilización de un hub USB con alimentación independiente.
• Instalación y Configuración: Estos se detallan en los anexos.
Debido a que al configurar las rutas de entrada en el capitulo 4, ya se
habı́an redireccionado todas las llamadas entrantes a la extensión 100, no fue
necesario configurar una ruta de entrada diferente para la troncal GSM.
Para enviar SMSs desde cualquier equipo conectado a la red, basta con
abrir el explorador e ingresar a la direccion http://<IP de la PBX>/sms.
Para enviar USSDs se debe instalar un paquete llamado “ussd-webpage”. Para
instalarlo, en la terminal:
$ apt-get install ussd-webpage
Posteriormente a la instalación, se pueden enviar USSDs desde cualquier equipo conectado a la red, abrir el explorador e ingresar a la dirección http://<IP
de la PBX>/ussd.
Durante la instalación del controlador del módem GSM, se ingresó un número de teléfono y un correo electrónico. Al momento de recibir algún mensaje
de texto por medio del módem GSM, RaspBerry Pi enviara una copia de ese
mensaje al número telefónico y correo electrónico indicados. En dado de que
6.2. Implementación de funciones adicionales
33
existan problemas al momento de recibir mensajes de texto, un posible problema es que la memoria del chip GSM este llena. Para eliminar la información
contenida en el chip GSM, en la terminal:
$ asterisk -r
El código ingresado anteriormente nos dará acceso a la lı́nea de comandos
de Asterisk, accediendo al mismo en modo de segundo plano, lo que significa
que aunque posteriormente cerremos la lı́nea de comandos, Asterisk seguirá
ejecutándose.
Para borrar la información en el chip GSM es necesario conocer el nombre
que se le asignó a el módem GSM, para esto; ejecutar en la lı́nea de comandos
de Asterisk :
dongle show devices
Posteriormente en la lı́nea de comandos de Asterisk :
dongle cmd <nombre del dongle> AT+CPMS=\"SM\",\"SM\",\"SM\"
dongle cmd <nombre del dongle> AT+CMGD=1,4
Por último, para salir de la lı́nea de comandos de Asterisk :
exit
R
Hardphone marca Cisco
En esta sección se detallan los pasos seguidos para actualización y configuraR
ción de un teléfono marca Ciscomodelo
CP-7940, además de las consideraciones adicionales al momento de configurar la extensión para este dispositivo
en una PBX IP basada en RaspBerry Pi & Asterisk.
• Actualización y configuración Teléfono VoIP: Algunos teléfonos VoIP
R en particular este modelo, durante el proceso de arranque exCiscoy
traen información de actualización y configuración desde algún servidor
tftp dentro de la red. Por lo que para este proceso se asumirá que se
cuenta con dicho servidor funcionando adecuadamente.
En los anexos se indican los pasos seguidos para configurar los parámetros de red, la actualización del firmware, configuración general y
configuración de identificación SIP.
• Configuración extensión SIP en Asterisk : Al momento de configurar exR
tensiones SIP para dispositivos marca Ciscose
debe prestar especial
atención a dos parámetros. El primero es el de “NAT”, el cual debe estar
34
6 Funciones adicionales
Figura 6.1: Cambios en configuración extensión 100 - FreePBX
configurado para que nunca sea tomado en cuenta. El segundo es “Qualify”, el cual debe estar desactivado. De no configurar de esta manera las
extensiones es posible que el teléfono no se registre correctamente o que
presente algún otro tipo de problema.
En las figuras 6.1 se muestra la sección FreePBX Administration→
Applications→Extensions de FreePBX con las modificaciones en la
configuración de la extensión 100 para un correcto funcionamiento con
R
un teléfono VoIP marca Cisco.
7
Conclusiones y recomendaciones
Conclusiones
Se enumeran las principales conclusiones derivadas de este proyecto.
1. No es posible determinar de forma teórica las capacidades básicas que
podrı́a proporcionar una PBX IP basada en RaspBerry Pi & Asterisk.
Esto porque además de que son muchos los factores que intervienen, los
principales desarrolladores de Asterisk ofrecen parámetros de referencia
en los cuales no se consideran procesadores ARM. Por lo que a pesar de
que lo que se brinda es solo una referencia poco exacta, no está referida
a equipos con capacidades parecidas al utilizado en este documento.
2. La implementación de una PBX IP basada en RaspBerry Pi & Asterisk
puede llevarse acabo de muchas formas, desde las más simples y rápidas,
hasta las más complejas y lentas. Sin embargo, las que suelen ser más
rápidas tienden a limitar la flexibilidad natural de Asterisk.
3. Factores de alimentación y dispositivos de almacenamiento pueden limitar considerablemente las capacidades ofrecidas por el hardware utilizado.
4. Actualmente existen únicamente dos distribuciones que incluyen el sistema operativo, Asterisk y el resto de paquetes complementarios, en donde
una de estas distribuciones aún se encuentra en una versión de prueba.
5. Para realizar una instalación de Asterisk sin utilizar ninguna de las distribuciones recomendadas en este proyecto, es necesario tener un amplio
conocimiento sobre dicha aplicación.
6. Existe mucha literatura muy completa y extensas sobre Asterisk. Sin
embargo, es muy poca la documentación formal para su aplicación en
ordenadores de placa reducida como RaspBerry Pi.
7. Existen muchas herramientas que facilitan la realización de pruebas de
desempeño en sistemas de telecomunicaciones como el implementado.
En cada uno de estos programas se pueden simular diversos escenarios
dependiendo de el nivel de estrés al que se desea garantizar que el equipo
responda adecuadamente. Sin embargo, los resultados obtenidos no dejan
35
36
7 Conclusiones y recomendaciones
de ser simulaciones y contienen un margen de error con respecto a los
resultados obtenidos ante un tráfico de llamadas real.
8. Los resultados obtenidos posteriormente a la generación de tráfico desde
la red extendida manifiesta un comportamiento no constante debido a
que depende del ancho de banda proporcionado por los proveedores de
Internet.
9. Debido a la diversidad de puertos con los que cuenta RaspBerry Pi, es
posible implementar servicios adicionales acorde a necesidades comunes.
Recomendaciones
Se enumeran las principales recomendaciones derivadas de este proyecto.
1. De acuerdo a los resultados experimentales obtenidos en el capı́tulo referente a las pruebas de desempeño, se recomienda el uso de PBX IP
basados en RaspBerry Pi & Asterisk para situaciones en las cuales no
se requiera un tráfico superior a 6 o 7 llamadas simultáneas utilizando
codificadores GSM o G711(u-law) respectivamente entre usuarios en la
red local y 3 llamadas simultáneas por Internet utilizando codificadores
GSM o G711(u-law) entre usuarios en la red extendida.
2. De acuerdo a las capacidades de procesamiento requeridas en troncales
GSM, no se recomienda la utilización de más de 1 módemes.
3. Debido a los tiempos de respuesta manifestados por el servidor apache
durante esta implementación. Para situaciones en las que es indispensable un acceso continuo a la administración WEB de Asterisk por más
de un usuario simultáneamente, se recomienda paralelismo este servicio
por medio de otro ordenador (posiblemente otro RaspBerry Pi dedicado
únicamente a dicho servicio).
8
Anexos
8.1
Implementación
Instalando una distribución de Linux con Asterisk integrado
A continuación se detallan los pasos seguidos para la instalación de una distribución de Linux con Asterisk integrado, en particular RasPBX.
1. Se descargó la imagen de RasPBX (comprimida en un archivo .zip). Esto
puede hacerse desde: http://www.raspberry-asterisk.org/download/raspbx12-08-2013.zip
2. Se extrajo la imagen del archivo .zip descargado.
3. Posteriormente a esto fue necesario quemar la imagen en la tarjeta SD
indicada en secciones anteriores. El procedimiento a seguir depende del
sistema operativo que utilice el equipo en donde se desea quemar la memoria SD.
A continuación se describe este procedimiento para usuarios de Windows y posteriormente Linux.
Para Windows:
a) Descargar el programa Win32Manager, esto puede hacerse desde:
http://sourceforge.net/projects/win32diskimager/
b) Extraer el archivo ejecutable del archivo .zip descargado y ejecutar
como administrador el archivo Win32DiskImager.
c) Seleccionar la ubicación de la imagen de RasPBX descargada al
inicio y luego definir la letra asignada la memoria SD.
Atención: El siguiente paso eliminará toda la información actual
en la memoria SD o en su defecto la del dispositivo asociado a la
letra indicada anteriormente.
d) Hacer click en “Write” y esperar a que el proceso finalice.
Para Linux (con lı́nea de comandos):
37
38
8 Anexos
a) Primero fue necesario determinar que dispositivos están actualmente montados, para ello, antes de insertar la tarjeta SD se ejecuto en
la terminal:
$ df-h
Posteriormente se insertó la tarjeta SD y se ejecutó la lı́nea anterior
nuevamente:
$ df-h
b) Se identificó la diferencia entre la primer y segunda lista para determinar a que archivo del sistema se asoció la memoria SD.
c) Se desmontó la memoria SD utilizando el archivo del sistema asociado a la memoria SD (filesystem). En la terminal:
$ umount <filesystem>
d) Se escribió en la memoria SD bloques de 4MB provenientes del
archivo que contiene la imagen de RasPBX.
En la terminal:
$ dd bs=4M if=<fuente:ubicacion imagen RasPBX> of=<destino:filesystem>
Es importante tomar en consideración lo siguiente:
• Es posible utilizar bloques de 1MB, sin embargo, el proceso
será considerablemente más lento.
• La instrucción anterior debe ejecutarse como superusuario.
• Este proceso puede ser lento.
• No existe indicador del avance del mismo, para conocerlo es
necesario abrir otra terminal y ejecutar:
$ pkill -USR1 -n -x dd
Luego de esto se consideró como terminada la instalación. Para la implementación en RaspBerry Pi posteriormente a esta subsección se realizaron
los pasos indicados en la sección denominada “Configuración post-instalación”
ubicada más adelante.
Para acceder al sistema por SSH:
• Nombre de usuario root.
• Contraseña raspberry.
Para acceder a FreePBX (administrador web):
• Nombre de usuario admin.
8.1. Implementación
39
• Contraseña admin.
Contraseña de administrador Mysql: raspberry.
Instalando Raspbian y posteriormente Asterisk
En esta subsección primero se indican dos posibles formas de instalar Raspbian, posteriormente a ello se instala Asterisk de acuerdo a la forma recomendada por Bryant et al. (2013).
Instalando Raspbian:
Existen principalmente dos formas de realizar esta instalación. Una es muy
semejante a la forma en la que se realiza la instalación de RasPBX indicada
en la subsección anterior, la cual consiste en quemar en la memoria SD una
imagen descargada desde Internet. Otra de las formas es la que recomienda
RaspBerryPi-Foundation (2013) para usuarios principiantes la cual consiste en
copiar en la memoria SD un paquete de archivos descargado desde Internet,
posteriormente a ello insertar la memoria SD en el RaspBerry Pi y continuar
la instalación desde allı́.
A continuación se describen los pasos seguidos para cada una de las formas
de instalación descritas anteriormente:
1. Instalando Raspbian desde imagen
a) Se descargó la imagen de Raspbian (comprimida en un archivo .zip).
Esto puede hacerse desde:
http://downloads.raspberrypi.org/raspbian latest
b) Seguir los pasos 2 y 3 de la subsección anterior. Modificando únicamente la ubicación de la imagen de RasPBX por la ubicación de
la imagen de Raspbian en donde corresponda.
2. Instalando Raspbian desde NOOBS (New Out of Box Software)
a) Se formateó la memoria SD, posteriormente se creó una partición
FAT32 que abarque todo el espacio de la memoria.
Para usuarios de Windows una alternativa puede ser Formatter 4.
Puede descargarse desde:
https://www.sdcard.org/downloads/formatter 4/
Para usuarios de Linux una alternativa puede ser GParted. Para
instalar, en terminal:
$ sudo apt-get install gparted
40
8 Anexos
b) Se descargó la versión off-line de Noobs. Esto puede hacerse desde:
http://downloads.raspberrypi.org/NOOBS latest
c) Se extrajo el contenido del archivo .zip descargado.
d) Se copiaron todos los archivos descomprimidos en el paso anterior
y se pegaron en la memoria SD.
e) Se extrajo la memoria SD del computador y se inserto en el RaspBerry Pi.
f) Se conectó periféricos: ratón, teclado y monitor.
g) Se conectó el cable de red.
h) Se conectó el cable de alimentación.
Cuando NOOBS inició por primera vez redimensionó la partición
FAT32 al mı́nimo para que posteriormente sea utilizado como partición de recuperación. Posteriormente a esto se mostró una lista
de distribuciones de Linux.
i) Se seleccionó Rasbian, se hizo click en “Install” y se esperó a que
proceso finalizara.
Luego de esto se consideró como terminada la instalación de Raspbian. Para
acceder al sistema por SSH:
• Nombre de usuario pi.
• Contraseña raspberry.
Instalando Asterisk:
Para realizar esta instalación es indispensable que el RaspBerry Pi tenga acceso a Internet.
A continuación se describen los pasos necesarios para la instalación de
Asterisk en Debian sugeridos por Bryant et al. (2013):
1. Actualizar y reiniciar sistema. En la terminal:
$ sudo apt-get update && sudo apt-get upgrade && sudo reboot
2. Instalando dependencias. En la terminal:
$ sudo apt-get install build-essential subversion libncurses5-dev
libssl-dev libxml2-dev libsqlite3-dev uuid-dev vim-nox
3. Creando estructura de directorios. En la terminal:
8.1. Implementación
41
$ mkdir -p ~/src/asterisk-complete/asterisk
$ cd ~/src/asterisk-complete/asterisk
4. Descargando ultima versión de Asterisk 11. En la terminal:
$ wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk
-11-current.tar.gz
5. Descomprimiendo archivo descargado. En la terminal:
$ tar xvzf asterisk-11-current.tar.gz
6. Construyendo e instalando aplicación. En la terminal:
$ cd <nombre carpeta descomprimida>
$ ./configure
7. Compilando e instalando Asterisk. En la terminal:
$ make
$ sudo make install
$ sudo make config
8. Modificación de permisos en donde fue instalado Asterisk. En la terminal:
$
$
$
$
sudo
sudo
sudo
sudo
chown
chown
chown
chown
-R
-R
-R
-R
pi:pi
pi:pi
pi:pi
pi:pi
/var/lib/asterisk/
/var/spool/asterisk/
/var/log/asterisk/
/var/run/asterisk/
9. Crear directorio /etc/asterisk y copiar en su interior archivo muestra
indications.conf. En la terminal:
$
$
$
$
sudo mkdir -p /etc/asterisk
sudo chown pi:pi /etc/asterisk
cd /etc/asterisk/
cp ~/src/asterisk-complete/asterisk/<nombre carpeta descomprimida>/
configs/indications.conf.sample ./indications.conf
10. Copiar archivo muestra asterisk.conf en /etc/asterisk. En la terminal:
42
8 Anexos
$ cp ~/src/asterisk-complete/asterisk/<nombre carpeta descomprimida>/
configs/asterisk.conf.sample /etc/asterisk/asterisk.conf
$ vim /etc/asterisk/asterisk.conf
11. Crear archivo modules.conf en /etc/asterisk. En la terminal:
$ sudo nano /etc/asterisk/modules.conf
12. Ingresar la siguientes información dentro del archivo modules.conf y
guardar los cambios:
; The modules.conffile, used to define which modules Asterisk should
; load (or not load).
;
[modules]
autoload=yes
; Resource modules currently not needed
noload => res_speech.so
noload => res_phoneprov.so
noload => res_ael_share.so
noload => res_clialiases.so
noload => res_adsi.so
; PBX modules currently not needed
noload => pbx_ael.so
noload => pbx_dundi.so
; Channel modules currently not needed
noload => chan_oss.so
noload => chan_mgcp.so
noload => chan_skinny.so
noload => chan_phone.so
noload => chan_agent.so
noload => chan_unistim.so
noload => chan_alsa.so
; Application modules currently not needed
noload => app_nbscat.so
noload => app_amd.so
noload => app_minivm.so
noload => app_zapateller.so
noload => app_ices.so
noload => app_sendtext.so
noload => app_speech_utils.so
noload => app_mp3.so
8.1. Implementación
noload
noload
noload
noload
noload
noload
noload
noload
noload
noload
noload
noload
noload
noload
noload
noload
noload
noload
noload
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
43
app_flash.so
app_getcpeid.so
app_setcallerid.so
app_adsiprog.so
app_forkcdr.so
app_sms.so
app_morsecode.so
app_followme.so
app_url.so
app_alarmreceiver.so
app_disa.so
app_dahdiras.so
app_senddtmf.so
app_sayunixtime.so
app_test.so
app_externalivr.so
app_image.so
app_dictate.so
app_festival.so
Luego de esto se consideró como terminada la instalación de Asterisk. Es
importante recordar que por este método se instaló Asterisk en su forma más
primitiva. Para ponerlo en funcionamiento es necesario dedicarle más tiempo
a su implementación. Dado que esto se escapa de los alcances de este proyecto,
para la implementación del mismo se utiliza una distribución más completa y
adaptada a RaspBerry Pi (RasPBX).
Configuración post-instalación
En esta sección se busca indicar los procedimientos que se siguieron posterior a
la instalación de una distribución de linux con Asterisk integrado (RasPBX).
Luego de realizar la instalación de RasPBX se extrajo la memoria SD del
dispositivo en donde fue quemada, se insertó en RaspBerry Pi, se conectó
ratón, teclado, cable de red, monitor y por último, el cable de alimentación.
Las luces de la placa de RaspBerry Pi se encendieron y el monitor mostró el
arranque de Rasbian. Después se accedió con el nombre de usuario y contraseña
por defecto (root/raspberry).
Posteriormente se realizaron los procedimientos contemplados en cada una
de las siguientes secciones:
44
8 Anexos
Raspi-Config
Esta es una herramienta de configuración de Rasbian la cual se recomienda ejecutarse posteriormente a la instalación de dicho sistema. Para acceder
únicamente es necesario ejecutar la siguiente lı́nea:
$ raspi-config
Raspi-config cuenta con las siguientes opciones:
• Expandir sistema de archivos
• Cambiar contraseña usuario root
• Activar o desactivar escritorio al inicio
• Opciones de internacionalización
• Activar cámara
• Adicionar a Rastrack
• Overclocking
• Opciones avanzadas
– Overscan
– Hostname
– Memory Split
– SSH
– SPI
– Update
Es importante recordar que en el caso de RasPBX, Asterisk se ejecuta sobre
Raspbian, debido a esto se cuentan con opciones de configuración generales
a pesar de haber instalado una distribución dirigida a la ejecución de Asterisk principalmente. Debido a lo anterior, únicamente las siguientes opciones
obtienen especial interés:
• Expandir sistema de archivos: Al momento en el que fue quemada la
imagen de RasPBX sobre nuestra tarjeta SD se creó una partición con
un tamaño limitado inferior a la capacidad de almacenamiento de la
memoria, debido a esto fue indispensable expandir el sistema de archivos
antes de iniciar con el proceso de actualización del sistema.
8.1. Implementación
45
• Cambiar contraseña usuario root: Por cuestiones de seguridad se recomienda realizar este cambio.
• Opciones de internacionalización: Esta opción permite modificar el lenguaje del sistema operativo, la zona horaria y la distribución de su teclado. Para la implementación se consideró como lenguaje del sistema
operativo el inglés (en GB), zona horaria Costa Rica y distribución en
el teclado también en inglés (UK).
• Overclocking: Esta opción permite aumentar la velocidad del procesador. Lo cual eventualmente podrı́a ser una alternativa para aumentar la
capacidad de comunicaciones simultáneas requeridas. Sin embargo, hay
que tomar en consideración que el aumento de la velocidad del procesador implica disminuir la vida del dispositivo, aumentar el calor disipado
(instalación necesaria de disipadores) y por último, aumentar los requerimientos energéticos, por lo que se va a requerir de una fuente más
potente. Para la implementación se utilizó la velocidad del procesador
recomendada (por defecto, 700MHz).
• Opciones avanzadas:
– Hostname: Con el fin de identificar adecuadamente las PBX dentro
de la red local, se recomienda nombrar de diferente manera cada
de estas.
– SSH: Esta opción nos permite activar o desactivar el acceso remoto
por SSH (Secure SHell). Está activado por defecto, sin embargo, de
ser necesario es posible desactivar este servicio desde aquı́.
– Update: Esta opción permite actualizar raspi-config a su versión
más reciente.
Servidor NTP
RaspBerry Pi no cuenta con un RTC (Real Time Clock). Esto significa que
cada vez que el sistema inicia, la hora actual se obtiene por medio de un servidor NTP (Network Time Protocol). De no contar con acceso a Internet, el
sistema iniciara con la hora y fecha de referencia de unix epoch1 (01/01/1970)
y Asterisk no arrancará puesto que el sistema interpreta que retrocedió en el
tiempo. Para evitar esto se instala una aplicación llamada fake-hwclock la cual
consiste en un conjunto de comandos que periódicamente almacenan en un archivo la hora y fecha actual del sistema. Si el sistema arrancará nuevamente
1
Descripción instantánea del tiempo utilizada por UNIX, la cual representa la cantidad
de segundos transcurridos a partir de la media noche del 1 de enero de 1970.
46
8 Anexos
y no detectara el servidor NTP, fake-hwclock ajustarı́a la hora del sistema a
la ultima fecha y hora almacenada.
Para instalar, en la terminal:
$ sudo apt-get install fake-hwclock
Asignación de IP estática
Esta subsección es muy importante debido a que es necesario conocer siempre
la ubicación de la PBX ya sea por medio de la dirección IP o bien algún URL.
Hay varias formas de conocer siempre dicha ubicación. Para la implementación
se utilizó la asignación de una IP estática desde el RaspBerry Pi por lo que
únicamente se modifico el archivo /etc/network/interfaces. A continuación se
muestran los pasos realizados:
1. En la terminal:
$ nano /etc/network/interfaces
2. Posteriormente se modifica el documento con la siguiente información:
auto lo
auto eth0
iface lo inet loopback
iface eth0 inet dhcp
address <dirección ip>
netmask <mascara de red>
network <red>
broadcast <difusión>
gateway <puerta de enlace>
Para la implementación se consideraron los siguientes parámetros:
auto lo
#auto eth0
iface lo inet loopback
#iface eth0 inet static
#
address 192.168.1.2
#
netmask 255.255.255.0
8.1. Implementación
#
#
#
47
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
iface vlan91 inet static # Acceso red área extensa
address 163.178.124.149
netmask 255.255.255.192
gateway 163.178.124.129
network 163.178.124.128
broadcast 163.178.124.191
vlan_raw_device eth0
auto vlan2052 #Acceso red local
iface vlan2052 inet static
address 192.168.12.20
netmask 255.255.255.0
network 192.168.12.0
broadcast 192.168.12.255
#ntp 192.168.12.11
vlan_raw_device eth0
El formato en la implementación difiere al indicado inicialmente esto debido a que por disposición de la administración de la red de la Escuela de
Ingenierı́a Eléctrica fue necesario crear dos redes virtuales. Una para el acceso
a la PBX desde de la red local (LAN) y otra para el acceso desde la red de
área extensa (WAN).
Actualizaciones
Luego haber realizado las configuraciones básicas descritas anteriormente es
necesario actualizar todo el sistema, este proceso se dividió en 3 partes:
1. Actualización de dependencias de Asterisk : Esta parte de la actualización se refiere a todas los paquetes instaladas sobre Raspbian. Por lo
general estos paquetes son herramientas que utiliza Asterisk y FreePBX
para funcionar adecuadamente.
En la terminal:
$ apt-get update
$ apt-get upgrade
En donde la primer lı́nea se encarga de actualizar la lista de paquetes
disponibles y sus versiones pero no instala ni actualiza ningún paque-
48
8 Anexos
te. La segunda lı́nea se encarga recorrer la lista de paquetes instalados
con su versión actual y compararla con las versiones disponibles. Luego
actualiza todos los paquetes que no se encuentren en su ultima versión
disponible.
2. Actualización de RasPBX: Esta parte de la actualización instala las ultimas incorporaciones y mejoras de RasPBX.
En la terminal:
$ raspbx-upgrade
3. Actualización de Módulos - FreePBX:
Como ya se mencionó anteriormente, FreePBX es la interfaz web que
utiliza RasPBX para Asterisk. Esta parte de la actualización instala las
ultimas versiones de los módulos que conforman FreePBX. Para esto es
necesario seguir los siguientes pasos:
a) Acceder a la administración web de Asterisk (FreePBX): Para esto es necesario acceder desde cualquier equipo conectado a la red
por medio del explorador web a la dirección IP estática asignada
anteriormente al RaspBerry Pi.
b) Ingresar a “FreePBX Administration”: Utilizar acceso por defecto:
admin/admin.
c) Dirigirse a la pestaña “Admin” y posteriormente a “Module Admin”.
d) Hacer clic en el botón “Check online”, posteriormente se mostrarán
en color rojo todos los módulos para los cuales existen versiones
más nuevas disponibles. Se debe hacer clic en todos estos módulos,
seleccionar la opción “Download and Install” y por último, hacer
clic en el botón “Process” que aparece en la parte superior derecha
de la ventana.
e) Posteriormente el sistema descargara e instalara todos los módulos
indicados.
Configuración inicial Asterisk
Hasta el momento aún no se ha realizado ninguna configuración en Asterisk, en
esta sección se explica como se configuró inicialmente esta aplicación por medio
de FreePBX para posteriormente hacer las pruebas de rendimiento mostradas
en el siguiente capı́tulo.
1. Configuración avanzada:
8.1. Implementación
49
Figura 8.1: Configuración avanzada - FreePBX
a) Se accedió a la administración web de Asterisk (FreePBX).
b) Se ingresó a FreePBX Administration→Settings→Advanced
Settings.
c) Se cambió el código de administrador.
d) Se cambiaron los todos de indicación para Costa Rica.
e) Se cambió el código de acceso para ARI (Asterisk Recording Interface).
f) El resto de parámetros se dejan por defecto.
Mientras se fueron realizando los cambios en la configuración, FreePBX
automáticamente fue modificando la información en el sistema.
En la figura 8.1 se muestra la sección FreePBX Administration→
Settings→ Advanced Settings de FreePBX.
2. Configuración SIP:
a) Se accedió a la administración web de Asterisk (FreePBX).
b) Se ingresó a FreePBX Administration→Settings→Asterisk
SIP Settings.
50
8 Anexos
Figura 8.2: Configuración SIP - FreePBX
c) Parámetros NAT: Estos se ajustaron por medio de la autoconfiguración (botón “Auto Configure”).
d) Se activaron los siguientes Codecs:
• G722
• GSM
• G729
e) El resto de parámetros se dejan por defecto.
f) Se guardaron y aplicaron los cambios: Hacer clic en el botón “Submit Changes”, posteriormente clic en el botón rojo que aparece en
la parte superior con el nombre “Apply Config”.
En la figura 8.2 se muestra la sección FreePBX Administration→
Settings→Asterisk SIP Settings de FreePBX.
3. Configuración IAX:
a) Se accedió a la administración web de Asterisk (FreePBX).
b) Se ingresó a FreePBX Administration→Settings→Asterisk
IAX Settings.
c) Se activaron los siguientes Codecs:
8.1. Implementación
51
Figura 8.3: Configuración IAX - FreePBX
• G722
• GSM
• G729
d) El resto de parámetros se dejan por defecto.
e) Se guardaron y aplicaron los cambios: Hacer clic en el botón “Submit Changes”, posteriormente clic en el botón rojo que aparece en
la parte superior con el nombre “Apply Config”.
En la figura 8.3 se muestra la sección FreePBX Administration→Settings→
Asterisk IAX Settings de FreePBX.
Configuración de extensiones
1. Extensiones SIP:
a) Se accedió a la administración web de Asterisk (FreePBX).
b) Se ingresó a FreePBX Administration→Applications→Extensions.
c) Se indicó que la extensión era tipo SIP y posteriormente se hizo
clic en “Submit”.
d) Luego se configuraron únicamente los siguientes parámetros:
52
8 Anexos
Figura 8.4: Configuración extensión SIP - FreePBX
• Extensión del usuario (User Extension)
• Nombre a mostrar (Display Name)
• Contraseña de acceso cliente SIP (secret)
• Se activó la configuración NAT (nat = Yes)
• Se activó el correo de voz (Voicemail status = Enabled)
• Contraseña de acceso correo de voz (Voicemail Password)
e) Se guardaron y aplicaron los cambios: Hacer clic en el botón “Submit”, posteriormente clic en el botón rojo que aparece en la parte
superior con el nombre “Apply Config”.
En la figura 8.4 se muestra la sección FreePBX Administration→
Applications→Extensions→SIP de FreePBX.
Para la implementación se configuraron 5 extensiones de este tipo. En
la tabla 8.1 se indican los valores para cada uno de los parámetros antes
mencionados.
2. Extensiones IAX2:
a) Se accedió a la administración web de Asterisk (FreePBX).
8.1. Implementación
53
Cuadro 8.1: Parámetros extensiones SIP
Extensión del
usuario
Nombre a mostrar
Contraseña
SIP
Contraseña
Correo de Voz
100
101
102
103
104
User11
User12
User13
User14
User15
User11
User12
User13
User14
User15
100
101
102
103
104
Cuadro 8.2: Parámetros extensiones IAX2
Extensión del
usuario
Nombre a mostrar
Contraseña
IAX2
Contraseña
Correo de Voz
105
106
User16
User17
User16
User17
105
106
b) Se ingresó a FreePBX Administration→Applications→
Extensions.
c) Se indicó que la extensión era tipo IAX2 y posteriormente se hizo
clic en “Submit”.
d) Luego se configuraron únicamente los siguientes parámetros:
• Extensión del usuario (User Extension)
• Nombre a mostrar (Display Name)
• Contraseña de acceso cliente IAX2 (secret)
• Se activó el correo de voz (Voicemail status = Enabled)
• Contraseña de acceso correo de voz (Voicemail Password)
e) Se guardaron y aplicaron los cambios: Hacer clic en el botón “Submit”, posteriormente clic en el botón rojo que aparece en la parte
superior con el nombre “Apply Config”.
En la figura 8.5 se muestra la sección FreePBX Administration→
Applications→Extensions→IAX2 de FreePBX.
Para la implementación se configuraron 2 extensiones de este tipo. En
la tabla 8.2 se indican los valores para cada uno de los parámetros antes
mencionados.
54
8 Anexos
Figura 8.5: Configuración extensión IAX2 - FreePBX
Configuración de troncales
Con el fin de hacer también pruebas externas a la red local en la implementación, se hicieron 3 enlaces IAX a otras PBX IP ejecutándose también sobre
RaspBerry Pi & Asterisk. A continuación se describen los pasos que se siguieron para su configuración:
1. Se accedió a la administración web de Asterisk (FreePBX).
2. Se ingresó a FreePBX Administration→Connectivity→Trunks.
3. Luego se seleccionó el protocolo del enlace, en este caso IAX2.
4. Luego se configuraron únicamente los siguientes parámetros:
• Nombre de la troncal (Trunk Name)
• Identificación llamada saliente (Outbound CallerID)
• Configuración saliente (Outgoing Settings)
– Nombre de la troncal (Trunk Name)
– Detalles PEER (PEER Details)
8.1. Implementación
55
Cuadro 8.3: Parámetros enlaces IAX2 - Configuración saliente
Nombre de
la troncal
Identificación
llamada entrante
IAX2 Trunk S2
IAX2 Trunk S3
IAX2 Trunk S4
Servidor2
Servidor3
Servidor4
Configuración saliente
Host
Username
afranpe.sytes.net
200.6.234.140
edwinbasto.no-ip.biz
Servidor1
Servidor1
Servidor1
Secret
SeRvidor1Pf
SeRvidor1Pf
SeRvidor1Pf
Cuadro 8.4: Parámetros enlaces IAX2 - Configuración entrante
Nombre de
la troncal
Identificación
llamada entrante
IAX2 Trunk S2
IAX2 Trunk S3
IAX2 Trunk S4
Servidor2
Servidor3
Servidor4
Configuración entrante
Contenido del usuario
Secret
Servidor2
Servidor3
Servidor4
SeRViDoR2TRK
SeRvidor3GT
SeRvidoR4
host=<host>
username=<Username>
secret=<Secret>
type=peer
• Configuración entrante (Incoming Settings)
– Contenido del usuario (USER Context = <Contenido del usuario>)
– Detalles USUARIO (USER Details)
secret=<Secret>
type=user
context=from-trunk
5. Se guardaron y aplicaron los cambios: Hacer clic en el botón “Submit
Changes”, posteriormente clic en el botón rojo que aparece en la parte
superior con el nombre “Apply Config”.
En las tablas 8.3 y 8.4 se indican los valores para cada uno de los enlaces
antes mencionados.
En las figuras 8.6 y 8.7 se muestra la sección FreePBX Administration→
Connectivity→Trunks de FreePBX con la configuración del enlace al servidor 2.
56
8 Anexos
Figura 8.6: Configuración enlace al Servidor 2 Parte 1 - FreePBX
Figura 8.7: Configuración enlace al Servidor 2 Parte 2 - FreePBX
8.1. Implementación
57
Cuadro 8.5: Numeración local de extensiones en cada servidor
Nombre PBX IP
Servidor1
Servidor2
Servidor3
Servidor4
Rango de extensiones
100
200
300
400
-
199
299
399
499
Configuración de rutas de salida
Posteriormente a la creación de las troncales, se configuró una ruta de salida
para cada una de las mismas.
Antes de mostrar como se hizo esa configuración es importante tomar
en consideración la tabla 8.5 la cual muestra la numeración asignadas a las
extensiones de forma local para cada uno de los servidores. Debido a que se
buscaba hacer los enlaces de una manera transparente, el contenido de la tabla
8.5 es importante para definir la regla de marcación requerida para acceder a
cada troncal.
A continuación se indican los pasos seguidos para la configuración de las
rutas de salida:
1. Se accedió a la administración web de Asterisk (FreePBX).
2. Se ingresó a FreePBX Administration→Connectivity→
Outbound Routes.
3. Luego se configuraron únicamente los siguientes parámetros:
• Nombre de la ruta (Route Name)
• En el tipo de ruta se seleccionó interno a la empresa (Route Type
= Intra-Company): Esto significa que la extensión que utilice esta
troncal se va a identificar con la otra PBX IP con el número de
extensión local.
• Regla de marcación (Dial Patterns that will use this Route→match
pattern)
• Secuencia de ocupación de troncales
4. Se guardaron y aplicaron los cambios: Hacer clic en el botón “Submit
Changes”, posteriormente clic en el botón rojo que aparece en la parte
superior con el nombre “Apply Config”.
En la tabla 8.6 se indican los parámetros de configuración para cada uno
de las rutas.
58
8 Anexos
Cuadro 8.6: Parámetros de configuración rutas de salida
Nombre de la ruta
Regla de marcación
Secuencia de ocupación
IAX2 Route to Servidor2
IAX2 Route to Servidor3
IAX2 Route to Servidor4
2XX
3XX
4XX
IAX2 Trunk S2
IAX2 Trunk S3
IAX2 Trunk S4
Figura 8.8: Configuración ruta de salida al Servidor 2 Parte 1 - FreePBX
El hecho de que en la regla de marcación se coloque únicamente en el
patrón de encuentro (match pattern) significa que el patrón de encuentro no
únicamente va a contener información de la extensión con la que se desea
realizar la comunicación sino también indicará la troncal por la que se debe de
establecer la comunicación para llegar al destino deseado. Lo anterior implica
que posteriormente a crear las troncales y los enlaces de salida en cada una
de las PBX IP, los usuarios locales de cada PBX IP podrán comunicarse entre
ellos como si se comunicaran con extensiones dentro de la misma PBX IP.
En las figuras 8.8 y 8.9 se muestra la sección FreePBX Administration→
Connectivity→Outbound Routes de FreePBX con la configuración de la
ruta de salida al servidor 2.
8.1. Implementación
59
Figura 8.9: Configuración ruta de salida al Servidor 2 Parte 2 - FreePBX
Configuración de rutas de entrada
Para la implementación todas las llamadas entrantes (any DID) se redireccionaron a la extensión 100. Para esto se realizaron los siguientes pasos:
1. Se accedió a la administración web de Asterisk (FreePBX).
2. Se ingresó a FreePBX Administration→Connectivity→Inbound
Routes.
3. Luego se seleccionó la plantilla que redirecciona todas las llamadas entrantes: Para esto se seleccionó la opción “All DIDs” ubicado en un cuadro en la parte superior derecha de la pantalla.
4. Luego se configuraron únicamente los siguientes parámetros:
• Descripción de la ruta de entrada (Description).
• Se definió la extensión 100 como destino (Set Destination = Extensions <100>User11).
5. Se guardaron y aplicaron los cambios: Hacer clic en el botón “Submit
Changes”, posteriormente clic en el botón rojo que aparece en la parte
superior con el nombre “Apply Config”.
60
8 Anexos
Figura 8.10: Configuración ruta de entrada - FreePBX
En la figura 8.10 se muestra la sección FreePBX Administration→
Connectivity→Inbound Routes de FreePBX.
8.2
Pruebas de desempeño
SIPP
A continuación se describen los pasos seguidos para la instalación y configuración de SIPP :
1. Primero se instalaron los paquetes necesarios para la compilación. En la
terminal:
$ apt-get install make gcc g++ automake autoconf
libncurses5-dev python build-essential openssl libpcap-dev
libssl-dev libnet1-dev libgsl0-dev gsl-bin libgsl0ldbl
2. Posteriormente se descargó la aplicación SIPP. En la terminal:
$ wget http://sourceforge.net/projects/sipp/files/sipp/3.2/sipp.svn.tar.gz
8.2. Pruebas de desempeño
61
3. A continuación se procedió a descomprimir el archivo descargado y posteriormente compilar la información descomprimida. En la terminal:
$ tar -xzf sipp.svn.tar.gz
$ cd sipp.svn
$ make pcapplay_ossl
4. Posteriormente de haber completado la instalación fue necesario crear
una extensión con una configuración en especı́fico, para luego generar
las llamadas desde dicha extensión. Debido a que FreePBX no permite
modificar ciertos parámetros necesarios, la creación de esta extensión
se realizó por código. Para esto se accedió a RaspBerry Pi & Asterisk,
posteriormente en la terminal:
$ sudo nano /etc/asterisk/sip.conf
Se agregó la siguiente información al final del documento:
[sipp]
type=friend
context=sipp
host=dynamic
user=sipp
canreinvite=no
disallow=all
allow=ulaw ; Al momento de realizar pruebas con otro codec
se debe modificar este parámetro.
5. Posteriormente se le creó una regla de marcación a la extensión creada
anteriormente. Desde RaspBerry Pi & Asterisk ; en la consola:
$ sudo nano /etc/asterisk/extensions.conf
Se agregó la siguiente información al final del documento:
[sipp]
exten =>
exten =>
exten =>
exten =>
5005,1,Answer
5005,n,SetMusicOnHold(default)
5005,n,WaitMusicOnHold(20)
5005,n,Hangup
62
8 Anexos
6. Para que las modificaciones anteriores tengan efecto es necesario acceder
a la lı́nea de comandos en Asterisk y recargar todos los archivos. Para
esto, desde RaspBerry Pi & Asterisk ; en la consola:
$ asterisk -r
En la lı́nea de comandos de Asterisk :
reload
7. Por último, se crearon dos escenarios, ambos que simulan el tráfico RTP
en donde la única variación en cada uno es el codificador utilizado (como
ya se mencionó, uno para G711 y otro para GSM).
a) Se creó un archivo de texto con el nombre uac pcap u.xml, en donde
se simula una codificación G711, de tipo u-law. Dentro de dicho
archivo se incluyó el siguiente código:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE scenario SYSTEM "sipp.dtd">
<!-<!-<!-<!-<!-<!-<!-<!-<!-<!-<!-<!-<!-<!-<!-<!-<!--
This program is free software; you can redistribute it and/or
-->
modify it under the terms of the GNU General Public License as
-->
published by the Free Software Foundation; either version 2 of the -->
License, or (at your option) any later version.
-->
-->
This program is distributed in the hope that it will be useful,
-->
but WITHOUT ANY WARRANTY; without even the implied warranty of
-->
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-->
GNU General Public License for more details.
-->
-->
You should have received a copy of the GNU General Public License -->
along with this program; if not, write to the
-->
Free Software Foundation, Inc.,
-->
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-->
-->
Sipp ’uac’ scenario with pcap (rtp) play
-->
-->
<scenario name="UAC with media">
<!-- In client mode (sipp placing calls), the Call-ID MUST be
<!-- generated by sipp. To do so, use [call_id] keyword.
<send retrans="500">
<![CDATA[
INVITE sip:[service]@[remote_ip]:[remote_port] SIP/2.0
-->
-->
8.2. Pruebas de desempeño
63
Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
From: sipp <sip:sipp@[local_ip]:[local_port]>;tag=[call_number]
To: sut <sip:[service]@[remote_ip]:[remote_port]>
Call-ID: [call_id]
CSeq: 1 INVITE
Contact: sip:sipp@[local_ip]:[local_port]
Max-Forwards: 70
Subject: Performance Test
Content-Type: application/sdp
Content-Length: [len]
v=0
o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip]
s=c=IN IP[local_ip_type] [local_ip]
t=0 0
m=audio [auto_media_port] RTP/AVP 0
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-11,16
]]>
</send>
<recv response="100" optional="true">
</recv>
<recv response="180" optional="true">
</recv>
<!-- By adding rrs="true" (Record Route Sets), the route sets
<!-- are saved and used for following messages sent. Useful to test
<!-- against stateful SIP proxies/B2BUAs.
<recv response="200" rtd="true" crlf="true">
</recv>
-->
-->
-->
<!-- Packet lost can be simulated in any send/recv message by
<!-- by adding the ’lost = "10"’. Value can be [1-100] percent.
<send>
<![CDATA[
-->
-->
ACK sip:[service]@[remote_ip]:[remote_port] SIP/2.0
Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
From: sipp <sip:sipp@[local_ip]:[local_port]>;tag=[call_number]
To: sut <sip:[service]@[remote_ip]:[remote_port]>[peer_tag_param]
Call-ID: [call_id]
CSeq: 1 ACK
64
8 Anexos
Contact: sip:sipp@[local_ip]:[local_port]
Max-Forwards: 70
Subject: Performance Test
Content-Length: 0
]]>
</send>
<!-- Play a pre-recorded PCAP file (RTP stream)
<nop>
<action>
<exec play_pcap_audio="pcap/g711a.pcap"/>
</action>
</nop>
-->
<!-- Pause 8 seconds, which is approximately the duration of the
<!-- PCAP file
<pause milliseconds="8000"/>
-->
-->
<!-- Play an out of band DTMF ’1’
<nop>
<action>
<exec play_pcap_audio="pcap/dtmf_2833_1.pcap"/>
</action>
</nop>
-->
<pause milliseconds="1000"/>
<!-- The ’crlf’ option inserts a blank line in the statistics report. -->
<send retrans="500">
<![CDATA[
BYE sip:[service]@[remote_ip]:[remote_port] SIP/2.0
Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
From: sipp <sip:sipp@[local_ip]:[local_port]>;tag=[call_number]
To: sut <sip:[service]@[remote_ip]:[remote_port]>[peer_tag_param]
Call-ID: [call_id]
CSeq: 2 BYE
Contact: sip:sipp@[local_ip]:[local_port]
Max-Forwards: 70
Subject: Performance Test
Content-Length: 0
]]>
</send>
<recv response="200" crlf="true">
8.2. Pruebas de desempeño
65
</recv>
<!-- definition of the response time repartition table (unit is ms)
<ResponseTimeRepartition value="10, 20, 30, 40, 50, 100, 150, 200"/>
-->
<!-- definition of the call length repartition table (unit is ms)
<CallLengthRepartition value="10, 50, 100, 500, 1000, 5000, 10000"/>
-->
</scenario>
b) Se creó un archivo de texto con el nombre uac pcap g.xml, en donde
se simula una codificación GSM. Dentro de dicho archivo se incluyó
el siguiente código:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE scenario SYSTEM "sipp.dtd">
<!-<!-<!-<!-<!-<!-<!-<!-<!-<!-<!-<!-<!-<!-<!-<!-<!--
This program is free software; you can redistribute it and/or
-->
modify it under the terms of the GNU General Public License as
-->
published by the Free Software Foundation; either version 2 of the -->
License, or (at your option) any later version.
-->
-->
This program is distributed in the hope that it will be useful,
-->
but WITHOUT ANY WARRANTY; without even the implied warranty of
-->
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-->
GNU General Public License for more details.
-->
-->
You should have received a copy of the GNU General Public License -->
along with this program; if not, write to the
-->
Free Software Foundation, Inc.,
-->
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-->
-->
Sipp ’uac’ scenario with pcap (rtp) play
-->
-->
<scenario name="UAC with media">
<!-- In client mode (sipp placing calls), the Call-ID MUST be
<!-- generated by sipp. To do so, use [call_id] keyword.
<send retrans="500">
<![CDATA[
INVITE sip:[service]@[remote_ip]:[remote_port] SIP/2.0
Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
From: sipp <sip:sipp@[local_ip]:[local_port]>;tag=[call_number]
To: sut <sip:[service]@[remote_ip]:[remote_port]>
Call-ID: [call_id]
CSeq: 1 INVITE
Contact: sip:sipp@[local_ip]:[local_port]
-->
-->
66
8 Anexos
Max-Forwards: 70
Subject: Performance Test
Content-Type: application/sdp
Content-Length: [len]
v=0
o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip]
s=c=IN IP[local_ip_type] [local_ip]
t=0 0
m=audio [media_port] RTP/AVP 0 3
a=rtpmap:3 gsm/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-11,16
]]>
</send>
<recv response="100" optional="true">
</recv>
<recv response="180" optional="true">
</recv>
<!-- By adding rrs="true" (Record Route Sets), the route sets
<!-- are saved and used for following messages sent. Useful to test
<!-- against stateful SIP proxies/B2BUAs.
<recv response="200" rtd="true" crlf="true">
</recv>
-->
-->
-->
<!-- Packet lost can be simulated in any send/recv message by
<!-- by adding the ’lost = "10"’. Value can be [1-100] percent.
<send>
<![CDATA[
-->
-->
ACK sip:[service]@[remote_ip]:[remote_port] SIP/2.0
Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
From: sipp <sip:sipp@[local_ip]:[local_port]>;tag=[call_number]
To: sut <sip:[service]@[remote_ip]:[remote_port]>[peer_tag_param]
Call-ID: [call_id]
CSeq: 1 ACK
Contact: sip:sipp@[local_ip]:[local_port]
Max-Forwards: 70
Subject: Performance Test
Content-Length: 0
]]>
8.2. Pruebas de desempeño
67
</send>
<!-- Play a pre-recorded PCAP file (RTP stream)
<nop>
<action>
<exec play_pcap_audio="pcap/g711a.pcap"/>
</action>
</nop>
-->
<!-- Pause 8 seconds, which is approximately the duration of the
<!-- PCAP file
<pause milliseconds="8000"/>
-->
-->
<!-- Play an out of band DTMF ’1’
<nop>
<action>
<exec play_pcap_audio="pcap/dtmf_2833_1.pcap"/>
</action>
</nop>
-->
<pause milliseconds="1000"/>
<!-- The ’crlf’ option inserts a blank line in the statistics report. -->
<send retrans="500">
<![CDATA[
BYE sip:[service]@[remote_ip]:[remote_port] SIP/2.0
Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
From: sipp <sip:sipp@[local_ip]:[local_port]>;tag=[call_number]
To: sut <sip:[service]@[remote_ip]:[remote_port]>[peer_tag_param]
Call-ID: [call_id]
CSeq: 2 BYE
Contact: sip:sipp@[local_ip]:[local_port]
Max-Forwards: 70
Subject: Performance Test
Content-Length: 0
]]>
</send>
<recv response="200" crlf="true">
</recv>
<!-- definition of the response time repartition table (unit is ms)
<ResponseTimeRepartition value="10, 20, 30, 40, 50, 100, 150, 200"/>
-->
<!-- definition of the call length repartition table (unit is ms)
-->
68
8 Anexos
<CallLengthRepartition value="10, 50, 100, 500, 1000, 5000, 10000"/>
</scenario>
8.3
Implementación de funciones adicionales
Troncal por GSM
A continuación se detallan los pasos seguidos para la instalación del módem
GSM.
1. Se desactivó el pin de chip GSM utilizado.
2. Se introdujo el chip GSM en el módem.
3. Antes de conectar al módem al RaspBerry Pi, se instaló el controlador
del módem GSM. En la terminal:
$ install-dongle
4. Posteriormente a la instalación se procedió a conectar el módem GSM.
5. Se accedió a la administración web de Asterisk (FreePBX).
6. Se ingresó a FreePBX Administration→Connectivity→Trunks.
7. Se seleccionó el protocolo del enlace, en este caso “Custom Trunk”.
8. Luego se configuraron únicamente los siguientes parámetros:
• Nombre de la troncal (Trunk Name = GSM CLARO)
• Identificación llamada saliente (Outbound CallerID = <número telefónico>)
• Opciones CID (Opciones CID = Allow any CID)
• Cadena de marcado personalizada
dongle/dongle0/$OUTNUM$
9. Se guardaron y aplicaron los cambios: Hacer clic en el botón “Submit
Changes”, posteriormente clic en el botón rojo que aparece en la parte
superior con el nombre “Apply Config”.
10. Se ingresó a FreePBX Administration→Connectivity→
Outbound Routes.
8.3. Implementación de funciones adicionales
69
Figura 8.11: Configuración troncal GSM - FreePBX
11. Luego se configuraron únicamente los siguientes parámetros:
• Nombre de la ruta (Route Name = Gsm)
• Regla de marcación (Dial Patterns that will use this Route→prefix
= 9 y Route→match pattern = XXXXXXXX)
• Secuencia de ocupación de troncales (Trunk Sequence for Matched
Routes 0 = GSM CLARO)
12. Se guardaron y aplicaron los cambios: Hacer clic en el botón “Submit
Changes”, posteriormente clic en el botón rojo que aparece en la parte
superior con el nombre “Apply Config”.
En las figuras 8.11 y 8.12 se muestra la sección FreePBX Administration→
Connectivity→Trunks y FreePBX Administration→Connectivity→
Outbound Routes de FreePBX con la configuración indicada anteriormente.
R
Hardphone marca Ciscomodelo
CP-7940
A continuación se indican los pasos seguidos para configurar los parámetros
de red:
1. Se conectó el teléfono a la alimentación eléctrica.
70
8 Anexos
Figura 8.12: Configuración ruta de salida GSM - FreePBX
2. Posteriormente a que el teléfono iniciara, se presiono el botón “Settings”
y se accedió a “Unlock Changes”, luego se ingreso la contraseña de administración (la cual para este modelo en particular es “cisco”). Lo anterior
nos da acceso a modificar los parámetros de configuración, de no hacerlo
únicamente nos va a permitir observar dichos parámetros.
3. Luego se ingresó a “Network Settings”, se activo DHCP y además el uso
de un servidor TFTP alternativo.
4. Posteriormente se guardaron los cambios y dentro de “Network Settings”
se ajusto la direccion IP del servidor TFTP.
Posteriormente a la configuración de los parámetros de red, se procedió
a descargar una versión de firmware que soporte SIP. Por lo general son 4
archivos y para una versión de firmware 12.0, los nombres de los archivos
deben ser similares a los siguientes:
• P0S3-12-0-00.loads
• P0S3-12-0-00.sb2
• P003-12-0-00.bin
8.3. Implementación de funciones adicionales
71
• P003-12-0-00.sbn
Dichos archivos deben almacenarse en el servidor TFTP para que el teléfono
VoIP tenga acceso a los mismos y pueda actualizarse.
Luego se crearon los archivos que contienen la configuración general y
configuración de identificación SIP. Estos deben ser nombrados se la siguiente
forma:
• SIPDefault.cnf
• SIP<MAC>.cnf
A continuación se brinda una descripción de la función de cada uno de los
archivos antes mencionados y el contenido de los mismos:
1. SIPDefault.cnf: Este archivo cuenta con información de configuración general, y a este acceden todos los teléfonos VoIP que lo requieran durante
su inicio.
El contenido de este archivo debe ser el siguiente:
image_version: P0S3-12-00-00
proxy1_address: "<IP de la PBX>"
proxy2_address: ""
proxy3_address: ""
proxy4_address: ""
proxy5_address: ""
proxy6_address: ""
proxy_register: 1
messages_uri:
"1"
phone_password: "cisco" ; (Default - cisco)
time_zone: "GMT"
time_format_24hr: 1 ; Muestra la hora en formato 24 horas
date_format: "Y/M/D" ; Formato en el que se muestra la fecha
dial_template: dialplan
2. SIP<MAC>.cnf: Este archivo contiene información referente a la identificación SIP. A este archivo únicamente accede el teléfono con la dirección
MAC respectiva. Por lo que que debe existir un archivo de estos por cada
teléfono que lo requiera durante su inicio.
El contenido de este archivo debe ser el siguiente:
image_version: P0S3-12-00-00
# Configuración lı́nea 1
72
8 Anexos
line1_name: 100 ; nombre de la extensión
line1_authname: "100"
line1_shortname: "100" ; Identificación botón de lı́nea.
line1_password: "User11"
line1_displayname: "100"; Identificación del usuario
proxy1_port: 5060 ; Puerto SIP
proxy1_address: <IP de la PBX>
# Configuración lı́nea 2
line2_name: 103
line2_authname: "103"
line2_shortname: "103"
line2_password: "User14"
line2_displayname: "103";
# Configuración adicional
phone_label: "" ; Texto a mostrar en pantalla.
phone_password: "cisco"
user_info: none
telnet_level: 2
logo_url: "" ; URL de la imagen a mostrar, BMP.
Posteriormente se debe reiniciar el teléfono presionando los botones “*”,“6”
y “Settings” simultáneamente, hasta que los LEDs en los botones “Headset”,
“Mute” y “Speaker” empiecen a parpadear secuencialmente. El teléfono iniciara
nuevamente cargando el nuevo firmware y la configuración respectiva.
Bibliografı́a
Akb77 (2013). Asterisk high availabilty - ejemplo escabilidad de asterisk.
http://akb77.com/g/asterisk/asterisk-high-availabilty/.
Asterisk.do
(2013).
Asterisk.do:
Arquitectura
de
asterisk.
http://rdasterisk.blogspot.com/2012/01/arquitectura-de-asterisk-desdeun-punto.html.
Bryant, R., Madsen, L., y Maggelen, J. V. (2013). Asterisk the definitive guide.
O’Reilly Media.
Cynthec
y
Pimoro
(2013).
GPIO
Cheat
https://www.modmypi.com/blog/raspberry-pi-gpio-cheat-sheet.
Sheet.
element14
(2013).
Piface
digital
for
raspberry
pi.
http://www.element14.com/community/docs/DOC-52857/l/piface-digitalfor-raspberry-pi.
Garcia, R. (2008). Integración de PBX analógica/digital con PBX IP por
software del ministerio del poder popular para la cultura e interconexión con
la red PSTN de CANTV. PhD thesis, Universidad Central de Venezuela.
Lyzanor (2012). X86 y arm: Diferencias, ventajas y para que sirve cada
uno. http://www.omicrono.com/2012/12/te-explicamos-todo-sobre-x86-yarm-diferencias-ventajas-y-para-que-sirve-cada-uno/.
Meggelen, J. V., Madsen, L., y Smith, J. (2007). The Future of Telephony.
O’Reilly Media.
Raspberry&asterisk-community (2013a).
http://www.raspberry-asterisk.org/.
Asterisk for raspberry pi.
Raspberry&asterisk-community (2013b). Gsm voip gateway with chan dongle.
http://wiki.e1550.mobi/doku.php?id=requirements.
RaspBerryPi-Foundation (2013).
http://www.raspberrypi.org.
Raspberry
pi
official
web
page.
Rosa, F. S. (2009). Manual de Asterisk y otras hierbas. GNU Free Documentation License.
SD-Association (2013). Sd standard overview. https://www.sdcard.org/.
73
Descargar