Vous êtes sur la page 1sur 88

Universidad de Costa Rica

Facultad de Ingeniera
Escuela de Ingeniera Electrica

Diseno e implementacion de una central


telefonica IP basada en RaspBerry Pi y
Asterisk

Por:

Jose Pablo Fernandez Zamora

Ciudad Universitaria Rodrigo Facio, Costa Rica

Diciembre 2013
Diseno e implementacion de una central
telefonica IP basada en RaspBerry Pi y
Asterisk

Por:
Jose Pablo Fernandez Zamora

IE-0499 Proyecto electrico


Aprobado por el Tribunal:

M.Sc. Teodoro Willink Castro


Profesor gua

M.Sc. Geovanny Delgado Ph.D. Jaime Cascante Vindas


Profesor lector Profesor lector
Resumen
En este proyecto se busca disenar e implementar una PBX IP basada en
RaspBerry Pi & Asterisk. A su vez determinar de forma teorica y practica
las capacidades basicas que podra ofrecer esta plataforma.
Inicialmente se procedio a describir la informacion existente referente a los
posibles resultados que se podran obtener al realizar la implementacion de la
PBX IP mencionada. Se determino que no existe una forma teorica de definir
esto, debido principalmente al procesador que utiliza RaspBerry Pi.
Posteriormente se realizo la implementacion de este sistema sin agregar
servicios extras que eventualmente podran ofrecerse. Se detallaron todos los
pasos seguidos, recolectando informacion de una amplia variedad de fuentes.
Ademas se brindo informacion referente a las posibles limitantes que pueden
existir al momento de considerar de forma erronea el uso de dispositivos de
alimentacion o almacenamiento.
Se describieron las formas en las que es posible implementar Asterisk y
se determino que la forma mas rapida y menos compleja de hacer esta im-
plementacion es por medio de dos distribuciones en particular, de las cuales
una aun es una version de prueba. Con base a toda la informacion consultada
tambien se concluyo que no existe literatura formal que haga referencia a la
implementacion de Asterisk en RaspBerry Pi.
Se hicieron pruebas de desempeno simulando trafico de llamadas por medio
de clientes dentro y fuera de la red local. Con base en los resultados experi-
mentales obtenidos, se hicieron recomendaciones referentes a la cantidad de
llamadas simultaneas que puede soportar RaspBerry Pi & Asterisk.
Luego se recolecto informacion referente a servicios adicionales que se po-
dran implementar en esta plataforma. Por ultimo, se implementaron dos de
estos servicios: el uso de troncales inalambricas y la utilizacion de telefonos
VoIP marca Cisco . R

v
Indice general

Indice de figuras ix

Indice de cuadros ix

Nomenclatura xi

1 Introduccion 1
1.1 Introduccion del informe . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3 Metodologa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

2 Marco teorico 3
2.1 PBX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2 Asterisk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.3 RaspBerry Pi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

3 RaspBerryPi y Asterisk 13
3.1 Llamadas simultaneas . . . . . . . . . . . . . . . . . . . . . . . 13
3.2 Tiempos de respuesta . . . . . . . . . . . . . . . . . . . . . . . 14

4 Implementacion 15
4.1 Alimentacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.2 Memoria de almacenamiento . . . . . . . . . . . . . . . . . . . 17
4.3 Instalacion Asterisk . . . . . . . . . . . . . . . . . . . . . . . . 17
4.4 Configuracion post-instalacion . . . . . . . . . . . . . . . . . . . 19

5 Pruebas de desempeno 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 Descripcion de funciones adicionales . . . . . . . . . . . . . . . 29
6.2 Implementacion de funciones adicionales . . . . . . . . . . . . . 31

7 Conclusiones y recomendaciones 35

vii
8 Anexos 37
8.1 Implementacion . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
8.2 Pruebas de desempeno . . . . . . . . . . . . . . . . . . . . . . . 60
8.3 Implementacion de funciones adicionales . . . . . . . . . . . . . 68

Bibliografa 73

viii
Indice de figuras

2.1 PBX manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4


2.2 Ejemplo escabilidad de Asterisk (Akb77, 2013) . . . . . . . . . . . 6
2.3 Estructura modular Asterisk . . . . . . . . . . . . . . . . . . . . . 9
2.4 Configuracion Puerto GPIO - RaspBerry Pi (Cynthec y Pimoro,
2013) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

4.1 Diagrama de conexion - PBX IP servicios basicos . . . . . . . . . . 15

5.1 Diagrama de conexion - Pruebas de desempeno . . . . . . . . . . . 22


5.2 Llamadas generadas simultaneamente - Red local . . . . . . . . . . 23
5.3 Llamadas generadas alternadas - Red local . . . . . . . . . . . . . 24
5.4 Carga promedio CPU - Red local . . . . . . . . . . . . . . . . . . . 24
5.5 Llamadas generadas simultaneamente - Red extendida . . . . . . . 26
5.6 Llamadas generadas alternadas - Red extendida . . . . . . . . . . . 26
5.7 Carga promedio CPU - Red extendida . . . . . . . . . . . . . . . . 27

6.1 Cambios en configuracion extension 100 - FreePBX . . . . . . . . . 34

8.1 Configuracion avanzada - FreePBX . . . . . . . . . . . . . . . . . . 49


8.2 Configuracion SIP - FreePBX . . . . . . . . . . . . . . . . . . . . . 50
8.3 Configuracion IAX - FreePBX . . . . . . . . . . . . . . . . . . . . . 51
8.4 Configuracion extension SIP - FreePBX . . . . . . . . . . . . . . . 52
8.5 Configuracion extension IAX2 - FreePBX . . . . . . . . . . . . . . 54
8.6 Configuracion enlace al Servidor 2 Parte 1 - FreePBX . . . . . . . 56
8.7 Configuracion enlace al Servidor 2 Parte 2 - FreePBX . . . . . . . 56
8.8 Configuracion ruta de salida al Servidor 2 Parte 1 - FreePBX . . . 58
8.9 Configuracion ruta de salida al Servidor 2 Parte 2 - FreePBX . . . 59
8.10 Configuracion ruta de entrada - FreePBX . . . . . . . . . . . . . . 60
8.11 Configuracion troncal GSM - FreePBX . . . . . . . . . . . . . . . . 69
8.12 Configuracion ruta de salida GSM - FreePBX . . . . . . . . . . . . 70

Indice de cuadros

2.1 Caractersticas RaspBerry Pi . . . . . . . . . . . . . . . . . . . . . 11

ix
3.1 Requerimientos mnimos recomendados - Asterisk . . . . . . . . . . 14

8.1 Parametros extensiones SIP . . . . . . . . . . . . . . . . . . . . . . 53


8.2 Parametros extensiones IAX2 . . . . . . . . . . . . . . . . . . . . . 53
8.3 Parametros enlaces IAX2 - Configuracion saliente . . . . . . . . . . 55
8.4 Parametros enlaces IAX2 - Configuracion entrante . . . . . . . . . 55
8.5 Numeracion local de extensiones en cada servidor . . . . . . . . . . 57
8.6 Parametros de configuracion rutas de salida . . . . . . . . . . . . . 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 lnea de
comandos de Asterisk.
IP Por sus siglas en ingles, Internet Protocol. Es un proto-
colo usado para la comunicacion de datos a traves de una
red.
VoIP Por sus siglas en ingles, Voice over IP. Grupo de recursos
que hacen posible que la senal de voz viaje a traves de
Internet empleando un protocolo IP.
PBX Por sus siglas en ingles, Private Branch Exchange. Es
cualquier central telefonica conectada directamente a la
red publica de telefona por medio de lneas troncales para
gestionar ademas de las llamadas internas, las entrantes
y salientes con autonoma sobre cualquier otra central
telefonica.
PABX Por sus siglas en ingles, Private Automatic Branch Ex-
change. Es una PBX automatica.
PCI Por sus siglas en ingles, Peripheral Component Intercon-
nect. Es un bus de ordenador estandar para conectar
dispositivos perifericos directamente a su placa base.
PSTN Por sus siglas en ingles, Public Switched Telephone Net-
work. Conjunto de elementos constituido por todos los
medios de transmision y conmutacion necesarios para en-
lazar a voluntad dos equipos terminales mediante un cir-
cuito fsico que se establece especficamente para la comu-
nicacion y que desaparece una vez que se ha completado
la misma. Se trata por tanto, de una red de telecomuni-
caciones conmutada.
IRC Por sus siglas en ingles, Internet Relay Chat. Es un pro-
tocolo de comunicacion en tiempo real basado en texto,
que permite debates entre dos o mas personas.

xi
SMS Por sus siglas en ingles, Short Message Service. Servicio
disponible en los telefonos moviles que permite el envo
de mensajes cortos (tambien conocidos como mensajes de
texto) entre telefonos moviles .
API Por sus siglas en ingles, Application Programming Inter-
face. Es el conjunto de funciones y procedimientos que
ofrece cierta biblioteca para ser utilizado por otro softwa-
re como una capa de abstraccion.
FXS Por sus siglas en ingles, Foreing Exchange Station. Es
el conector en una central telefonica o en la pared de
nuestro hogar, que permite conectar un telefono analogico
estandar.
ISDN Por sus siglas en ingles, Integrated Services Digital Net-
work. Red que procede por evolucion de la Red Digital
Integrada (RDI) y que facilita conexiones digitales ex-
tremo a extremo para proporcionar una amplia gama de
servicios, tanto de voz como de otros tipos, y a la que
los usuarios acceden a traves de un conjunto de interfaces
normalizados.
SIP Por sus siglas en ingles, Session Initiation Protocol. Es
un protocolo desarrollado con la intencion de ser el estan-
dar para la iniciacion, modificacion y finalizacion de sesio-
nes interactivas de usuario donde intervienen elementos
multimedia como el vdeo, voz, mensajera instantanea,
juegos en lnea y realidad virtual.
H.323 Es un conjunto de normas ITU (International Telecom-
munication Union) para comunicaciones multimedia que
hacen referencia a los terminales, equipos y servicios es-
tableciendo una senalizacion en redes IP.
IAX Por sus siglas en ingles, Inter-Asterisk eXchange proto-
col. Es uno de los protocolos utilizado por Asterisk para
manejar conexiones VoIP entre servidores Asterisk, y en-
tre servidores y clientes que tambien utilizan protocolo
IAX.
MGCP Por sus siglas en ingles, Media Gateway Control Proto-
col. 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 ingles, Random-Access Memory. Se
utiliza frecuentemente para describir a los modulos de
memoria utilizados en los computadores personales y ser-
vidores. .

PoE Por sus siglas en ingles, Power over Ethernet. es una


tecnologa que incorpora alimentacion electrica a una in-
fraestructura LAN estandar. Permite que la alimentacion
electrica se suministre a un dispositivo de red usando el
mismo cable que se utiliza para la conexion de red.

SD Por sus siglas en ingles, Secure Digital. Formato de tar-


jeta de memoria inventado por Panasonic . R

WiFi Por sus siglas en ingles, Wireless Fidelity. Es un meca-


nismo de conexion de dispositivos electronicos de forma
inalambrica.

USB Por sus siglas en ingles, Universal Serial Bus. Estandar


industrial que define los cables, conectores y protocolos
usados en un bus para conectar, comunicar y proveer de
alimentacion electrica entre ordenadores y perifericos y
dispositivos electronicos.

ARM Por sus siglas en ingles, Advanced RISC Machine. Es


una familia de microprocesadores producidos por la em-
presa ARM Holdings.

NTP Por sus siglas en ingles, Network Time Protocol. Es un


protocolo de Internet para sincronizar los relojes de los
sistemas informaticos a traves del enrutamiento de pa-
quetes en redes con latencia variable.

SSH Por sus siglas en ingles, Secure SHell. Es el nombre de


un protocolo y del programa que lo implementa, y sirve
para acceder a maquinas remotas a traves de una red.

URL Por sus siglas en ingles, Uniform Resource Locator. Es


una secuencia de caracteres, de acuerdo a un formato mo-
delico y estandar, que se usa para nombrar recursos en
Internet para su localizacion o identificacion.

LAN Por sus siglas en ingles, Local Area Network. Son redes
de propiedad privada, de hasta unos cuantos kilometros
de extension.

xiii
WAN Por sus siglas en ingles, Wide Area Network. Son redes
que se extienden sobre un area geografica extensa. Las
WAN pueden abarcar ciudades, estados, pases o conti-
nentes.

G.711 Es un estandar de codificacion digital para representar


una senal de audio en frecuencias de la voz humana,
mediante palabras de 8 bits de resolucion, 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 ingles, Global System for Mobile com-
munications. Es un estandar de codificacion 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 ingles, General Purpose Input/Output.


Es es un pin generico en un chip, cuyo comportamiento
se puede controlar por el usuario en tiempo de ejecucion.

UAC Por sus siglas en ingles, User Agent Clients. En una co-
municacion SIP, se define como agente de usuario cliente
a los usuarios que realizan una peticion de comunicacion.

UAS Por sus siglas en ingles, User Agent Servers. En una


comunicacion SIP, se define como agentes de usuario ser-
vidor cuando se recibe una peticion de comunicacion.

xiv
1 Introduccion

1.1 Introduccion del informe


A medida de que pasan los anos, el mundo de las telecomunicaciones depende
mayormente de sistemas de comunicacion VoIp (voz sobre IP), esto debido
principalmente al elevado costo que conlleva el trafico internacional por medio
de la telefona convencional. Sin embargo, una de las barreras para la transicion
a telefona VoIP es el costo de los dispositivos necesarios para adoptar esta
tecnologa.
Con este proyecto se busca desarrollar una central telefonica IP basada
principalmente en software de codigo abierto (Asterisk 1 ) y hardware de bajo
costo (RaspBerry Pi 2 ), dirigido a micro y pequenas empresas que necesitan
migrar a dicha tecnologa sin que esto involucre gastos excesivos e inclusive
innecesarios.
Para facilitar la comprension 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 basicos que por s mismo podra
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 plata-
forma y se documentan todas las pruebas realizadas con el fin de analizar la
congruencia con las capacidades teoricas determinadas anteriormente.
Posteriormente se describen capacidades adicionales posibles de implemen-
tar y se implementan algunas de estas capacidades adicionales.
Por ultimo, se realizan conclusiones y recomendaciones que se consideren
pertinentes.

1.2 Objetivos
Objetivo general
Disenar e implementar una central telefonica IP basada en RaspBerry Pi y
Asterisk.
1
http://www.asterisk.org/
2
http://www.raspberrypi.org/

1
2 1 Introduccion

Objetivos especficos
Para el desarrollo de este proyecto se establecieron los siguientes objetivos
especficos:

Determinar las capacidades basicas que puede ofrecer una central tele-
fonica IP basada en una plataforma de RaspBerry PI con [ Asterisk].

Implementar una central telefonica 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 Metodologa
El desarrollo del trabajo incluyo los siguientes pasos y procedimientos, listados
en secuencia:

1. Identificacion de las capacidades del hardware de RaspBerry PI.

2. Descripcion de los requerimientos de los servicios basicos proporcionados


por Asterisk.

3. Analisis teorico de la capacidad de los servicios basicos que podra pro-


porcionar Asterisk siendo ejecutado sobre RaspBerry PI.

4. Implementacion de los servicios basicos proporcionados por una central


telefonica IP basada en RaspBerryPi & Asterisk

5. Ejecucion de pruebas sobre la central telefonica IP implementada.

6. Comparacion de resultados del analisis teorico con las pruebas experi-


mentales obtenidas.

7. Identificacion de servicios adicionales que se podran incluir en la central


telefonica IP implementada.

8. Implementacion de algunos servicios adicionales a la central telefonica


IP implementada originalmente.
2 Marco teorico

En este captulo se describen las principales caractersticas de PBX, Rasp-


BerryPi y Asterisk, esto debido principalmente a que son los temas en los que
se fundamenta este proyecto.

2.1 PBX
Siglas en ingles de Private Branch Exchange. Segun Rosa (2009) no es mas que
un panel de conexiones que se instalaba en las empresas con el fin de enlazar
manualmente canales de comunicacion telefonicos. En la figura 2.1 se muestra
una PBX manual.
Conforme pasaba el tiempo se fueron desarrollando nuevos descubrimientos
tecnologicos y alrededor de 1960 empezaron a aparecer las primeras PBX
automaticas, las cuales en su momento se conocieron como PABX (Private
Automatic Branch Exchange) en donde la conmutacion ahora se realizaba por
medio de dispositivos electromecanicos o circuitos integrados. El desarrollo
de la PABX permitio ventajas principalmente en rapidez y regularidad en el
establecimiento de las comunicaciones. Sin embargo, debido a la popularidad
de la PBX se le siguio llamando de esta manera a los sistemas que realizaban
la conmutacion de forma automatica (PABX).
Posteriormente a esto debido a la intervencion del transistor y el de la
electronica digital nace la telefona digital, las PBX se implementan con elec-
tronica digital haciendose mas complejas.
Actualmente las PBX han dado un paso mas alla, a tal grado de llegar
a ser implementadas mediante software y ofrecer servicios como conferencias,
buzon de voz, operadora automatica, administracion remota, etc.
Actualmente una PBX se define como una central telefonica conectada a
una red publica por medio de lneas troncales la cual gestiona ademas de las
llamadas internas, las llamadas entrantes y salientes. Es importante destacar
que comunmente se le denomina PBX a cualquier central telefonica, lo cual
es erroneo. Aunque las centrales telefonicas y las PBX administran trafico
telefonico, la PBX gestiona las llamadas salientes y una central telefonica
unicamente interconectara el terminal con una lnea externa.

3
4 2 Marco teorico

Figura 2.1: PBX manual

2.2 Asterisk
Segun Bryant et al. (2013), Asterisk es actualmente la PBX mas exitosa en el
mundo y ya es una tecnologa aceptada en la industria de las telecomunica-
ciones.
Asterisk es una PBX por software que puede ser ejecutado sobre cual-
quier ordenador estandar siempre y cuando cumpla con las capacidades de
procesamiento y almacenamiento mnimas. Este software ademas esta basado
en el concepto de software libre, lo cual no lo convierte unicamente en una
aplicacion gratuita sino tambien en una aplicacion sin restricciones para su
ejecucion, distribucion e incluso modificacion. Fue creada por Mark Spencer y
actualmente su principal desarrollador es Digium 1 . Es una aplicacion multi-
plataforma, sin embargo, la plataforma nativa es Linux, la cual ademas 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 telefona o bien que tecnologas se deben emplear. Debido a
su estructura modular y la su gran flexibilidad, es posible incorporar casi
cualquier tecnologa a esta aplicacion. 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 implementacion, o adquirir las habilidades
necesarias para realizar esta tarea.

1
http://www.digium.com/
2.2. Asterisk 5

Principales ventajas
Segun Garcia (2008) entre las principales ventajas de Asterisk podemos des-
tacar:

Reduccion de costos: Esto no se refiere unicamente a que la licencia es


de codigo abierto, sino tambien en factores determinantes como la uni-
ficacion de la red, la utilizacion de plataformas para servidores estandar
(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 posibili-


dad de paralelizar sus servicios en diversos servidores. Ademas es posible
conectar cada PBX Asterisk con otras, lo que hace posible implemen-
tar cualquier topologa 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 estandares telefonicos tanto analogicos como para IP.
Lo que permite una amplia posibilidad de interaccion con otros sistemas.

Interfaces
Hasta ahora se ha mencionado a Asterisk como una PBX por software que pue-
de correr sobre cualquier ordenador estandar, sin embargo, parte importante
de las PBX es la posible interactuar con troncales analogicas y esta claro que
un ordenador estandar no cuenta con puertos fsicos que nos permitan admi-
nistrar estos canales. Segun Bryant et al. (2013), cuando el proyecto Asterisk
nacio, haban otros posibles proyectos de telefona de codigo abierto, uno de
esos proyectos era la asociacion de Asterisk con Zapata Telephony Project
para el desarrollo de interfaces PSTN (public switched telephone network).
Hoy en da se ha incrementado la cantidad de fabricantes como tambien la
variedad de tipos de interfaces, entre los mas destacados podemos mencionar
a Digium, OpenVox2 , Pika3 , Sangoma4 , Dialogic5 , etc.
2
http://www.openvox.cn/
3
http://www.pikatechnologies.com/
4
http://www2.sangoma.com/
5
http://www.dialogic.com/
6 2 Marco teorico

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 raz de la gran
cantidad de usuarios satisfechos. Ademas la comunidad cuenta diversos medios
de comunicacion como listas de correos, sitios wiki, canales IRC, etc. Los cuales
facilitan la interaccion con el resto de usuarios.

Servicios
Segun Garcia (2008) algunas de las principales servicios que ofrece Asterisk
son:

Receptor de alarmas
2.2. Asterisk 7

Asistencia automatizada

Autentificacion

Lista negra

Grabacion de llamadas

Monitoreo de llamadas

Llamadas en espera

Recuperacion de llamadas

Gua de llamadas

Transferencia de llamadas

Identificacion de usuarios

Conferencias

Integracion de base de datos

Marcado por nombre

Logica flexible de las extensiones

Lista de directorio interactivo

Respuesta de voz interactivo

Mensajera SMS

Deteccion de conversaciones

Modulos
Como se ha mencionado anteriormente la estructura de Asterisk es modular.
Es como una estructura de legos en donde cada lego (modulo) cumple una
funcion en especfico y al unirlos todos obtenemos un sistema con una amplia
diversidad de servicios, desde los mas simples hasta los mas complejos(Bryant
et al., 2013).
Segun Garcia (2008), dependiendo de su funcion los modulos pueden agru-
parse en los siguientes grupos:

Nucleo de PBX: Aqu se agrupan todos los modulos relacionados con


un sistema de conmutacion de intercambio de rama privada o bien las
capacidades esenciales de una PBX.
8 2 Marco teorico

Lanzador de aplicaciones: Este grupo contiene aplicaciones que mejoran


servicios y van un poco mas alla de los servicios primitivos de una PBX.
Ejemplo de esto puede ser voicemail, lista de directorios, mensajera
SMS, grabacion de llamadas, etc.

Codecs y traductor de codecs: Contiene todos los codificadores y deco-


dificadores 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 organizacion de tareas de bajo nivel


y sistemas de operacion. Su funcion primordial es mantener un buen
rendimiento ante cambios en la demanda de servicios.

Cargador de modulos API (Application Programming Interface): Aqu


se agrupan los modulos que permiten el uso flexible de las aplicaciones
para ejecutar las acciones requeridas. Ademas permite el desarrollo de
aplicaciones de acuerdo a requerimientos especficos. Se clasifican en 4
tipos:

Canal API
Aplicacion API
Traductor de codec API
Formato de archivo API

Canales: Contiene todos los modulos necesarios para la utilizacion de


diversos canales de comunicacion (FXS, ISDN, Bluetooth, ITU, PSTN,
etc).

Protocolos: Contiene informacion de senalizacion al momento de esta-


blecer comunicacion y ademas determinar punto de destino (SIP, H323,
IAX, MGCP, etc). En ocasiones maneja aspectos relacionados con tono,
tiempo de repique, identificacion de llamadas, etc.

En la figura 2.3 se muestra graficamente la estructura de Asterisk, en donde


PBX Core representa el grupo de modulos con las funciones mas primitivas de
Asterisk, todos los rectangulos azules los modulos que conforman el grupo de
protocolos, y los rectangulos morados y rojos el resto de agrupaciones segun
su funcion.
2.3. RaspBerry Pi 9

Figura 2.3: Estructura modular Asterisk


(Asterisk.do, 2013)

2.3 RaspBerry Pi
Segun RaspBerryPi-Foundation (2013), RaspBerry Pi es un ordenador de pla-
ca reducida de bajo costo, desarrollada en el Reino Unido, cuyo proposito ini-
cialmente era promover la educacion de adultos y ninos principalmente en el
campo de la informatica.

En el cuadro 2.1 se resumen las principales caractersticas de este disposi-


tivo.

Puntos a considerar:

No es posible iniciar el sistema sin una tarjeta SD.

No existe ningun 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 teorico

El tamano mnimo recomendado para la tarjeta SD es 2GB. Ademas


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 va


USB).

Para incrementar la cantidad de puertos USB se recomienda el uso de


un HUB con alimentacion independiente.

Ademas este ordenador puede comunicarse con dispositivos externos me-


diante el conector GPIO incorporado. En la figura 2.4 se muestra informacion
recopilada por Cyntech Components6 y Pimoroni7 acerca de la estructura del
conector. En donde es posible observar que este cuenta con 4 pines de ali-
mentacion (2 a 5V y 2 a 3.3V), 5 pines a tierra y 17 pines entrada/salida.
Los pines de entrada/salida estan divididos en 5 secciones dependiendo de las
capacidades especiales o uso predeterminado para los mismos.

A continuacion se describe dicha division y el uso de destinado para cada


uno(Cynthec y Pimoro, 2013):

1. I 2 C(Inter-Integrated Circuit):Es una interfaz de comunicacion de baja


velocidad (usualmente de 10kbit/s hasta 100kbit/s) originalmente dise-
nada para la comunicacion entre circuitos integrados. Solo requiere dos
lneas para transmitir informacion, SDA para datos y SCL para el reloj.

2. CLK: Se genera una senal de reloj de onda cuadrada para uso general
con una frecuencia alrededor de 75MHz.

3. SPI(Serial Peripheral Interface Bus): Conector serial sincronico de dos


vas. El tipo de comunicacion es entre un dispositivo maestro y otro
esclavo en donde el dispositivo maestro provee la senal de sincrona. La
informacion se transfiere por medio de los puertos MOSI y MISO. Cada
transmision esta sincronizada por el pulso en SCLK.

4. UART(Universal Asynchronous Receiver/Transmitter):Este es un me-


todo de transmision de datos bajo conexion en serie. Cada uno de los
dispositivos de comunicacion 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 electromecanicos
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: Caractersticas RaspBerry Pi

Descripcion M odeloA M odeloB


Precio $25 $35
CPU ARM1176JZF-S a 700MHz ARM1176JZF-S a 700MHz
GPU Videocore 4 Videocore 4
RAM 256MB 512MB
Memoria Puerto SD Puerto SD
Puertos USB 1 2
Salida de Video RCA y HDMI RCA y HDMI
Salida de Sonido Jack de 3.5mm y HDMI Jack de 3.5mm y HDMI
Red Local No disponible Ethernet 10/100 (RJ45)
Consumo (tpico) 300mA 700mA
Alimentacion 5V - puerto MicroUSB 5V - puerto MicroUSB
Dimensiones 85.60mm x 56mm x 21mm 85.60mm x 56mm x 21mm
Sistema operativo Fedora, Debian y ArchLinux Fedora, Debian y ArchLinux

5. PWM(Pulse-width modulation):Esta es una manera de controlar la can-


tidad de energa entregada a un dispositivo por medio de rapidas inte-
rrupciones. Tpicamente miles de veces por segundo. Este pin puede ser
utilizado para controlar motores, leds, entre otros.
12 2 Marco teorico

Figura 2.4: Configuracion Puerto GPIO - RaspBerry Pi (Cynthec y Pimoro,


2013)
3 RaspBerryPi y Asterisk

Este captulo busca determinar las capacidades basicas que puede ofrecer una
central telefonica IP basada en RaspBerry Pi & Asterisk.
A continuacion se describe por secciones toda la informacion recolectada
referente a los posibles resultados y aspectos a considerar luego de ejecutar
Asterisk en RaspBerry Pi.

3.1 Llamadas simultaneas


En cuanto a PBX o centrales telefonicas este aspecto constituye uno de los
parametros primordiales, dado que determina las capacidades de comunicacion
simultaneas que es soportado por el equipo. Este parametro dependiendo del
trafico de llamadas simultaneas y total de colaboradores en una empresa puede
ser traducido en el total de usuarios (no simultaneos) para los cuales es posible
brindar una solucion de comunicacion.
Lo indicado anteriormente significa que la cantidad de llamadas simulta-
neas que puede administrar una central telefonica no necesariamente equivale
a la cantidad de usuarios que esta puede administrar. Pues para una empresa
con 100 usuarios en donde el trafico estimado es de 7 llamadas simultaneas
significa que una central telefonica que soporte hasta 10 llamadas simultaneas
seria capaz de administrar poco mas de 100 usuarios. Sin embargo, para otra
empresa en donde unicamente se cuenta con 10 usuarios y el trafico de llamadas
sigue siendo 7 llamadas simultaneas, la misma central telefonica descrita an-
teriormente unicamente podra brindar una solucion adecuada para poco mas
de 10 usuarios. La diferencia entre llamadas simultaneas y usuarios adquiere
especial importancia para determinar a que sectores va dirigida la solucion en
estudio.

Meggelen et al. (2007) brinda una tabla con requerimientos mnimos reco-
mendados y la cantidad llamadas simultaneas soportadas, en donde ademas
aclaran que los valores son muy conservadores y que no son definitivos. En el
cuadro 3.1 se muestra la informacion 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 mnimos recomendados - Asterisk

Proposito Numero de canales Mnimo recomendado


Sistema como hobby No mas de 5 400MHz x86, 256 MB RAM
SOHO (pequena oficina/oficina en casa) 5 a 10 1 GHz x86, 512 MB RAM
Sistema para una pequena empresa hasta 25 3GHz x86, 1GB RAM
Sistema mediano/grande mas de 25 Dual CPUs o multiples servidores

Todos los procesadores indicados en la tabla son arquitectura x86 y el


procesador de RaspBerry Pi es ARM.
Segun Lyzanor (2012) los procesadores x86 estan basados en arquitectu-
ra CISC (Complex Instruction Set Computing), lo que significa que son
disenados para instrucciones complejas, simultaneas y ejecucion lenta.
Por otro lado los procesadores ARM son estructura RISC (Reduced Ins-
truction Set Computer) cuyo objetivo es facilitar el paralelismo en la
ejecucion de instrucciones y permitir realizar tareas de menor tamano
con procesos mas cortos lo que conlleva a disminucion de energa em-
pleada.
Dado que la arquitectura x86 tiene ventajas sobre ARM relacionadas
al rendimiento es necesario aplicar alguna equivalencia para hacer com-
patibles 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 unicamente como referencia. En el captulo 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


Segun Meggelen et al. (2007) las necesidades de Asterisk son similares a las
de una aplicacion embebida de tiempo real. Esto debido principalmente a que
debe tener prioridad al momento de acceder al procesador y buses del sistema.
En sistemas pequenos esto no podra 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 privile-
gios de ejecucion del mismo.
4 Implementacion
En esta seccion se busca detallar las consideraciones que se hicieron y los
pasos que se siguieron para implementar una central telefonica IP basada en
RaspBerry Pi & Asterisk.
Dispositivos utilizados:

RaspBerry Pi version B.

Cargador marca Enercell modelo


R 2301775.

Memoria microSDHC de 16GB clase 4 marca Silicon Power con


R un
adaptador microSD-SD de la misma marca.

En la figura 4.1 se muestra el diagrama de conexion utilizado durante la


implementacion.
A continuacion se describen todos los aspectos relevantes a la implemen-
tacion, en donde el orden de las secciones representa la secuencia cronologica
realizada:

Figura 4.1: Diagrama de conexion - PBX IP servicios basicos

15
16 4 Implementacion

4.1 Alimentacion

RaspBerry Pi

Segun RaspBerryPi-Foundation (2013) el consumo de corriente es aproxima-


damente de 300mA y 700mA para las versiones A y B respectivamente, en
donde se considero el uso del dispositivo de red y perifericos 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 alimentacion que por lo
menos proporcione la corriente requerida de acuerdo al modelo que tengamos.
De no cumplirse la corriente mnima requerida, un error tpico es que el dis-
positivo no encienda o bien que los perifericos como el raton o teclado no
funcionen adecuadamente.

Para esta implementacion se utilizo una RaspBerry Pi version B por consi-


guiente una fuente de poder marca Enercell modelo
R 23017751 con capacidad
de proveer hasta 1.2A a 5V.
Por ultimo es importante agregar que segun RaspBerryPi-Foundation (2013),
RaspBerry Pi si puede ser alimentado por medio de bateras (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 normal-


mente 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 disena principalmente con el fin de mante-
ner un consumo energetico bajo, existen limitaciones en cuanto a la cantidad
de corriente que este puede transmitir. Todo lo dicho anteriormente se resu-
me principalmente en que cuando se deba conectar dispositivos USB como
modemes o discos duros es indispensable para un correcto funcionamiento del
dispositivo el uso de un hub USB con alimentacion independiente, para que de
esta forma el dispositivo se energice por medio del hub y no desde el RaspBerry
Pi.

1
Este dispositivo puede ser adquirido en cualquier sucursal de RadioShack con
R un precio
equivalente a $21.
2
Power Over Ethernet
4.2. Memoria de almacenamiento 17

4.2 Memoria de almacenamiento


Como ya se menciono anteriormente RaspBerry Pi cuenta con un puerto SD
para este proposito. Las memorias SD (en sus siglas en ingles Secure Digital)
es un formato de tarjetas de memorias inventado por Panasonic . R Segun SD-
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 maxima 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 clasificacion 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.

Segun RaspBerryPi-Foundation (2013) la capacidad de almacenamiento


mnima recomendada es de 4GB, ademas 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
desempeno para RaspBerryPi por lo que se recomienda normal speed (menor
precio). Por ultimo, la velocidad de transferencia si puede afectar el desempeno
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 implementacion se utilizo una microSDHC de 16GB clase 4 mar-
ca Silicon Power con
R un adaptador microSD-SD de la misma marca.

4.3 Instalacion Asterisk


Como ya se menciono en el captulo 2, Asterisk es una aplicacion multipla-
taforma, lo que significa que puede ser ejecutada sobre diferentes sistemas
operativos. Sin embargo, la plataforma nativa es Linux y se recomienda la
ejecucion de esta aplicacion en dicha plataforma. Debido a lo anterior, para
esta implementacion se utilizo Linux como sistema operativo, en particular la
distribucion recomendada para RaspBerry Pi, raspbian.
3
Existe otra clasificacion para UHS class.
18 4 Implementacion

Hay muchas formas de instalar Asterisk, en esta seccion se describen dos.


Una la cual se recomienda para sistemas que necesiten ser implementados de
forma muy rapida y facil, y otra requiere un mayor tiempo de implementacion,
ademas es un poco mas compleja pero es ideal para conocer la estructura y el
funcionamiento primitivo de Asterisk.
Los alcances de esta seccion son hasta la instalacion de Asterisk. En otras
secciones se detallara la forma de configuracion de ciertas funciones, en donde
en dichas etapas se tomara como primicia que la instalacion se ha realizado
con base a una distribucion de Linux con Asterisk integrado, en particular
RasPBX.
En la implementacion se realizo la instalacion en RaspBerry Pi utilizando
una distribucion de Linux con Asterisk integrado. Sin embargo, tambien se
realizo la instalacion de una distribucion de deban (cubian4 ) y posteriormente
Asterisk en un ordenador de placa reducida llamado Cubieboard2 5 con el fin
de hacer pruebas de comunicacion entre la PBX montada en RaspBerry Pi y
la PBX montada en Cubieboard2.

Instalando una distribucion de Linux con Asterisk integrado


Segun Bryant et al. (2013) se han creado muchas distribuciones basadas fun-
damentalmente en la ejecucion de Asterisk. Estas distribuciones han ganado
tanta popularidad que las personas suelen incluso confundirlas con el mismo
Asterisk. Normalmente estas distribuciones incluyen Asterisk, las dependen-
cias fundamentales de Asterisk, una interfaz de administracion WEB, una
compleja base de datos y un conjunto de instrucciones para que se puedan
realizar cambios en la configuracion.
Existen ademas distribuciones que inclusive ya tienen integrado el sistema
operativo.
Entre las distribuciones mas conocidas podemos mencionar:

Asterisk NOW

Elastix

Trixbox

FreePBX Distro

PBX in a Flash
4
http://cubian.org/
5
http://cubieboard.org/
4.4. Configuracion post-instalacion 19

Sin embargo, no todas estas distribuciones estan disponibles para Rasp-


Berry Pi, al recopilar informacion respecto al tema unicamente se encontraron
las siguientes:
RasPBX
Trixbox
De las cuales Trixbox aun se encontraba en una version beta. Debido a ello
para esta implementacion se realizo la instalacion de RasPBX.

RasPBX esta basada en Rasbian (Debian7/Wheezy) e incluye:


Asterisk 11.5.0
FreePBX 2.11.0.10
Los pasos seguidos para esta instalacion se detallan en los anexos.

Instalando Raspbian y posteriormente Asterisk


Esta es otra alternativa al momento de instalar Asterisk en RaspBerry Pi.
Para la implementacion no se considero este metodo, debido a que por ser una
instalacion mas primitiva y requiere mas tiempo. Sin embargo, en la seccion
de anexos se detallan los pasos recomendados para realizar esta instalacion.

4.4 Configuracion post-instalacion


Luego de realizar la instalacion de RasPBX fue necesario hacer lo siguiente:
Configuracion Raspi-Config.
Instalar programas relacionados al servidor NTP.
Asignacion IP estatica.
Actualizacion del sistema.
Configuracion inicial Asterisk.
Configuracion de extensiones.
Configuracion de troncales.
Configuracion de rutas de entrada/salida.
La descripcion y los pasos seguidos para realizar las acciones antes indica-
das se detallan en los anexos.
5 Pruebas de desempeno

El objetivo de esta seccion es determinar el comportamiento de RaspBerry


Pi & Asterisk posteriormente a la generacion de trafico VoIp, en particular
utilizando protocolo SIP.
Para lograr este proposito se utilizo una herramienta llamada SIPP, es de
codigo libre exclusivo para pruebas y generacion de trafico sobre el protocolo
SIP. Esta incluye un par de escenarios elementales para agentes de usuario
UAC y UAS. Esta herramienta permite establecer y liberar multiples llamadas
utilizando los metodos INVITE y BYE. Ademas permite ejecutar escenarios
personalizados a partir de archivos XML, entre ellos escenarios con trafico
UDP.
Se realizaron pruebas utilizando dos codificadores, G711 y GSM. Se esco-
gieron 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 en-
laces dentro de la red local. El segundo por su parte muestra un deterioro en
la calidad del audio, ademas requiere mas procesamiento y un menor ancho
de banda, por lo que es ideal para aplicaciones moviles o bien enlaces desde
la red extendida.
En la figura 5.1 se muestra el diagrama de conexion utilizado durante estas
pruebas.
En las subseccion siguiente se indica todo lo referente a la aplicacion utili-
zada para generar trafico, ademas se muestra el codigo utilizado en cada uno
de los escenarios. En las subsecciones siguientes se muestran y analizan los
resultados obtenidos.

5.1 SIPP
Como ya se menciono anteriormente, SIPP es un generador de trafico SIP el
cual utiliza agentes de usuario UAC y UAS (esto basicamente hace referencia a
desde donde se esta generando el trafico). En este caso el trafico se genero 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 instalacion y confi-
guracion de SIPP.

21
22 5 Pruebas de desempeno

Figura 5.1: Diagrama de conexion - Pruebas de desempeno

5.2 Comunicaciones usuarios red local


Para generar trafico desde la red local, se accedio a la red en la cual se encon-
traba la PBX IP y posteriormente se apunto a dicha PBX IP por medio de la
IP local. Para hacer esto, desde el ordenador en donde se instalo SIPP, se debe
acceder a la carpeta que se creo al momento de la instalacion 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 trafico hacia la extension 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 generacion de llamadas (lla-
madas/segundo) y -l la cantidad limite de llamadas simultaneas. Ademas en
la configuracion del escenario se asigno una duracion de cada llamada de 9
segundos.
En cada una de las pruebas se efectuo alrededor de 50 llamadas en total, en
donde se vario el limite de llamadas simultaneas desde 1 hasta 27 y obteniendo
as un porcentaje de llamadas perdidas para cada uno de estos valores. Ademas
se guardo el registro de la carga promedio en el procesador durante la ejecucion
de cada prueba.
5.3. Comunicaciones usuarios red extendida utilizando Internet 23

Figura 5.2: Llamadas generadas simultaneamente - Red local

En la figura 5.2 se muestra el resultado obtenido iniciando y finalizando


todas las llamadas simultaneamente 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 simultaneas 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 determino que la perdida de llamadas
no es un factor determinante en cuanto a comunicaciones locales. Esto debido
a que se requiere generar un trafico cercano a las 14 llamadas simultaneas (en
el escenario con mayor exigencias) para que se provoque un porcentaje de lla-
madas perdidas significativo. Sin embargo, la carga promedio en el procesador
si aumenta constantemente, por lo que en este caso es la mayor limitacion.
Debido a esto, para no exceder una carga promedio de 0.7 se deben de eje-
cutar como maximo 6 o 7 llamadas simultaneas para codificadores GSM o
G711(u-law) respectivamente, todas desde la red local.

5.3 Comunicaciones usuarios red extendida


utilizando Internet
Para generar trafico desde la red extendida, se accedio a una red distinta a
la cual se encontraba la PBX IP y posteriormente se apunto a dicha PBX
24 5 Pruebas de desempeno

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 publica. Para hacer esto, desde el ordenador en donde


se instalo SIPP, se debe acceder a la carpeta que se creo al momento de la
instalacion 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 trafico hacia la extension 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 generacion de llamadas (lla-
madas/segundo) y -l la cantidad limite de llamadas simultaneas. Ademas en
la configuracion del escenario se asigno una duracion de cada llamada de 9
segundos.
En cada una de las pruebas se efectuo alrededor de 50 llamadas en total, en
donde se vario el limite de llamadas simultaneas desde 1 hasta 12 y obteniendo
as un porcentaje de llamadas perdidas para cada uno de estos valores. Ademas
se guardo el registro de la carga promedio en el procesador durante la ejecucion
de cada prueba.
En la figura 5.5 se muestra el resultado obtenido iniciando y finalizando
todas las llamadas simultaneamente cada 9 segundos. En esta figura se puede
observar que al cambiar de codificador no se logro reducir el porcentaje de
llamadas perdidas, esto posiblemente debido a que al momento de terminar e
iniciar las llamadas, se hace simultaneamente, 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 lla-
madas perdidas. De esta forma se logro observar el comportamiento esperado
luego de cambiar de codificador, puesto que al utilizando un codificador el cual
requiere un menor ancho de banda, se observo la disminucion nuevamente en
el porcentaje de llamadas perdidas.
En la figura 5.7 se muestra el aumento en la carga promedio del proce-
sador de acuerdo a la cantidad de llamadas simultaneas realizadas. Como se
puede observar, al realizar una cantidad inferior a 7 llamadas simultaneas 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 observo
que para no exceder un porcentaje de llamadas perdidas superior al 10 % y
una carga promedio de 0.7 se deben de ejecutar como maximo 3 llamadas
simultaneas (G711 o GSM), todas desde la red extendida (por Internet).
26 5 Pruebas de desempeno

Figura 5.5: Llamadas generadas simultaneamente - Red extendida

Figura 5.6: Llamadas generadas alternadas - Red extendida


5.3. Comunicaciones usuarios red extendida utilizando Internet 27

Figura 5.7: Carga promedio CPU - Red extendida


6 Funciones adicionales

Posteriormente a la implementacion y pruebas de desempeno de RaspBerry Pi


& Asterisk funcionando como PBX IP con los servicios basicos, este captulo
busca describir servicios adicionales que podran ser implementados a esta
plataforma. Posteriormente se implementan algunos de estos servicios.

6.1 Descripcion de funciones adicionales


Troncal por GSM
Segun Raspberry&asterisk-community (2013a) entre las ultimas caractersti-
cas desarrolladas para RaspBerry Pi & Asterisk es la capacidad para hacer
llamadas directamente desde una red GSM/3G por medio de un modem USB
marca Huawei y R el modulo chan-dongle de Asterisk. Con esta nueva caracte-
rstica se podra utilizar una ruta externa mas economica para aquellos casos
en los que el proveedor de servicios GMS/3G tenga precios mas bajos que los
proveedores de servicios de troncales SIP, ademas 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 podra utilizarse
como respaldo ante problemas de conectividad con el resto de proveedores de
servicios alambricos.
Por ultimo, es importante hacer indicar que segun Raspberry&asterisk-
community (2013a) el consumo total por parte de RaspBerry Pi y el modem
USB es aproximadamente 5W, por lo que es una solucion que sigue contando
con un bajo consumo energetico.

Integracion con actuadores


Como ya se menciono en el captulo 2, RaspBerry Pi cuenta con pines GPIO,
por lo que existe la posibilidad de integrar la PBX IP con diferentes actuadores.
Esto cobra principal interes 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 continuacion se describen algunos ejemplos para los cuales se podra
utilizar esta caracterstica:

Permitir acceso a areas restringidas (puertas con chapas electricas, etc)

29
30 6 Funciones adicionales

Encender o apagar iluminacion.

Abrir o cerrar porton electrico (motores).

Variar la velocidad de un motor.

Activar alarma.

Conocer el estado de algun dispositivo (ON/OFF).

Conocer el valor de algun sensor resistivo.

En donde cada una de las acciones descritas podran realizarse desde una
extension local o incluso desde una llamada externa.
Debido a que RaspBerry Pi cuenta unicamente con puertos GPIO, es im-
portante resaltar que no cuenta con entradas ni salidas analogicas por lo que
generalmente podra activar dispositivos unicamente de 2 estados (ON/OFF).
Ademas al utilizar los pines como salidas digitales se manejan tensiones de
3.3V por lo que en la mayora de los casos seria necesario utilizar electronica
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 unicamente con un puerto PWM.
En el caso del ultimo ejemplo mencionado, en el cual se pretende conocer
el valor de algun sensor, esto podra hacerse por medio de una tecnica llamada
RCTIME, en la cual basicamente 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 caractersticas de una
en particular: PiFace . R
Segun element14 (2013)1 , PiFace R se ajusta fsicamente sobre RaspBerry
Pi, en especfico sobre el puerto GPIO. Cuenta con las siguientes caractersti-
cas:

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. Implementacion de funciones adicionales 31

Buffers para proteger las entradas y salidas de RaspBerry Pi.

Ademas PiFace R cuenta con una librera para Python lo que hace su
implementacion menos compleja.

Hardphone marca Cisco


R

Este apartado va dirigido principalmente a aquellas situaciones en las cuales


se requiere migrar desde una solucion con Cisco Call Manager2 hacia una
basada en Asterisk. Esto principalmente porque al momento de contemplar
dicha migracion, generalmente se desea conservar la mayor cantidad de equipo
instalado originalmente, tal es el caso de los telefonos y adaptadores VoIP.
Los telefonos Cisco de
R gama empresarial son terminales de alta calidad y
fiabilidad, sin embargo, originalmente utilizan un protocolo de comunicacion
diferente (SCCP). Por lo que es necesario cambiarles el firmware a uno que
soporte un protocolo SIP3 (si esta disponible) para poder utilizarlos con Aste-
risk. Todo esto a cambio del costo por el nuevo firmware el cual es bastante
inferior al costo del dispositivo.
En el siguiente captulo describen los pasos que se siguieron para actualizar
y configurar un telefono Cisco modelo
R CP-7940, ademas de las consideracio-
nes adicionales al momento de configurar la extension para este dispositivo en
una PBX IP basada en Asterisk.

6.2 Implementacion de funciones adicionales


En esta seccion se busca detallar las consideraciones que se hicieron y los
pasos que se siguieron para implementar algunas de las capacidades adicionales
descritas en el seccion anterior utilizando como plataforma una PBX IP basada
en RaspBerry Pi & Asterisk.
Dispositivos utilizados:

Modem GSM marca Huawei modelo


R E1750.

Chip GSM proveedor Claro.

Telefono VoIP marca Cisco modelo


R CP-7940.

En la figura 5.1 se muestra el diagrama de conexion utilizado durante esta


implementacion.
2
Software PBX propietario de Cisco R
3
El siguiente enlace muestra una lista con algunos modelos de telefonos Cisco y
R los
firmware disponibles:
http://www.cisco.com/en/US/docs/voice ip comm/cucme/requirements/guide/cme71spc.htm.
32 6 Funciones adicionales

A continuacion se describen todos los aspectos relevantes a la implementa-


cion por medio de subsecciones. En donde ademas el orden de dichas secciones
representa la secuencia cronologica realizada:

Troncal por GSM


En esta seccion se detallan los pasos seguidos para la implementacion de tron-
cales GSM una PBX IP basada en RaspBerry Pi & Asterisk.

Requerimientos del hardware: Primero que nada es importante indi-


car que existe una tabla recopilada por Raspberry&asterisk-community
(2013b) en la que se indican los modelos que han sido probados y el so-
porte que ofrece cada uno (transmitir voz, SMS y USSD). Siendo todos
los modelos soportados marca Huawei . R

Debido a lo anterior esta implementacion se realizo con un modem GSM,


marca Huawei , R modelo E1750.

Alimentacion: Segun Raspberry&asterisk-community (2013a) el consu-


mo de energetico de RaspBerry Pi y un modem GSM es de 5W, por lo
que seria necesario una fuente de alimentacion que proporcione una co-
rriente igual o superior a 1A. Sin embargo, se recomienda para el modem
GSM la utilizacion de un hub USB con alimentacion independiente.

Instalacion y Configuracion: Estos se detallan en los anexos.

Debido a que al configurar las rutas de entrada en el capitulo 4, ya se


haban redireccionado todas las llamadas entrantes a la extension 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 instalacion, se pueden enviar USSDs desde cualquier equi-


po conectado a la red, abrir el explorador e ingresar a la direccion http://<IP
de la PBX>/ussd.
Durante la instalacion del controlador del modem GSM, se ingreso un nu-
mero de telefono y un correo electronico. Al momento de recibir algun mensaje
de texto por medio del modem GSM, RaspBerry Pi enviara una copia de ese
mensaje al numero telefonico y correo electronico indicados. En dado de que
6.2. Implementacion de funciones adicionales 33

existan problemas al momento de recibir mensajes de texto, un posible proble-


ma es que la memoria del chip GSM este llena. Para eliminar la informacion
contenida en el chip GSM, en la terminal:

$ asterisk -r

El codigo ingresado anteriormente nos dara acceso a la lnea de comandos


de Asterisk, accediendo al mismo en modo de segundo plano, lo que significa
que aunque posteriormente cerremos la lnea de comandos, Asterisk seguira
ejecutandose.
Para borrar la informacion en el chip GSM es necesario conocer el nombre
que se le asigno a el modem GSM, para esto; ejecutar en la lnea de comandos
de Asterisk :

dongle show devices

Posteriormente en la lnea de comandos de Asterisk :

dongle cmd <nombre del dongle> AT+CPMS=\"SM\",\"SM\",\"SM\"


dongle cmd <nombre del dongle> AT+CMGD=1,4

Por ultimo, para salir de la lnea de comandos de Asterisk :

exit

Hardphone marca Cisco


R

En esta seccion se detallan los pasos seguidos para actualizacion y configura-


cion de un telefono marca Cisco modelo
R CP-7940, ademas de las considera-
ciones adicionales al momento de configurar la extension para este dispositivo
en una PBX IP basada en RaspBerry Pi & Asterisk.

Actualizacion y configuracion Telefono VoIP: Algunos telefonos VoIP


Cisco y
R en particular este modelo, durante el proceso de arranque ex-
traen informacion de actualizacion y configuracion desde algun servidor
tftp dentro de la red. Por lo que para este proceso se asumira que se
cuenta con dicho servidor funcionando adecuadamente.
En los anexos se indican los pasos seguidos para configurar los para-
metros de red, la actualizacion del firmware, configuracion general y
configuracion de identificacion SIP.

Configuracion extension SIP en Asterisk : Al momento de configurar ex-


tensiones SIP para dispositivos marca Cisco se R debe prestar especial
atencion a dos parametros. El primero es el de NAT, el cual debe estar
34 6 Funciones adicionales

Figura 6.1: Cambios en configuracion extension 100 - FreePBX

configurado para que nunca sea tomado en cuenta. El segundo es Qua-


lify, el cual debe estar desactivado. De no configurar de esta manera las
extensiones es posible que el telefono no se registre correctamente o que
presente algun otro tipo de problema.
En las figuras 6.1 se muestra la seccion FreePBX Administration
ApplicationsExtensions de FreePBX con las modificaciones en la
configuracion de la extension 100 para un correcto funcionamiento con
un telefono VoIP marca Cisco . R
7 Conclusiones y recomendaciones

Conclusiones
Se enumeran las principales conclusiones derivadas de este proyecto.

1. No es posible determinar de forma teorica las capacidades basicas que


podra proporcionar una PBX IP basada en RaspBerry Pi & Asterisk.
Esto porque ademas de que son muchos los factores que intervienen, los
principales desarrolladores de Asterisk ofrecen parametros 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 esta referida
a equipos con capacidades parecidas al utilizado en este documento.

2. La implementacion de una PBX IP basada en RaspBerry Pi & Asterisk


puede llevarse acabo de muchas formas, desde las mas simples y rapidas,
hasta las mas complejas y lentas. Sin embargo, las que suelen ser mas
rapidas tienden a limitar la flexibilidad natural de Asterisk.

3. Factores de alimentacion y dispositivos de almacenamiento pueden limi-


tar considerablemente las capacidades ofrecidas por el hardware utiliza-
do.

4. Actualmente existen unicamente dos distribuciones que incluyen el siste-


ma operativo, Asterisk y el resto de paquetes complementarios, en donde
una de estas distribuciones aun se encuentra en una version de prueba.

5. Para realizar una instalacion de Asterisk sin utilizar ninguna de las dis-
tribuciones recomendadas en este proyecto, es necesario tener un amplio
conocimiento sobre dicha aplicacion.

6. Existe mucha literatura muy completa y extensas sobre Asterisk. Sin


embargo, es muy poca la documentacion formal para su aplicacion en
ordenadores de placa reducida como RaspBerry Pi.

7. Existen muchas herramientas que facilitan la realizacion de pruebas de


desempeno en sistemas de telecomunicaciones como el implementado.
En cada uno de estos programas se pueden simular diversos escenarios
dependiendo de el nivel de estres 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 trafico de llamadas real.

8. Los resultados obtenidos posteriormente a la generacion de trafico 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 captulo re-


ferente a las pruebas de desempeno, se recomienda el uso de PBX IP
basados en RaspBerry Pi & Asterisk para situaciones en las cuales no
se requiera un trafico superior a 6 o 7 llamadas simultaneas utilizando
codificadores GSM o G711(u-law) respectivamente entre usuarios en la
red local y 3 llamadas simultaneas 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 utilizacion de mas de 1 modemes.

3. Debido a los tiempos de respuesta manifestados por el servidor apache


durante esta implementacion. Para situaciones en las que es indispensa-
ble un acceso continuo a la administracion WEB de Asterisk por mas
de un usuario simultaneamente, se recomienda paralelismo este servicio
por medio de otro ordenador (posiblemente otro RaspBerry Pi dedicado
unicamente a dicho servicio).
8 Anexos

8.1 Implementacion
Instalando una distribucion de Linux con Asterisk integrado
A continuacion se detallan los pasos seguidos para la instalacion de una dis-
tribucion de Linux con Asterisk integrado, en particular RasPBX.

1. Se descargo la imagen de RasPBX (comprimida en un archivo .zip). Esto


puede hacerse desde: http://www.raspberry-asterisk.org/download/raspbx-
12-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 me-
moria SD.

A continuacion se describe este procedimiento para usuarios de Win-


dows 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 ubicacion de la imagen de RasPBX descargada al
inicio y luego definir la letra asignada la memoria SD.

Atencion: El siguiente paso eliminara toda la informacion 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 lnea de comandos):

37
38 8 Anexos

a) Primero fue necesario determinar que dispositivos estan actualmen-


te montados, para ello, antes de insertar la tarjeta SD se ejecuto en
la terminal:
$ df-h
Posteriormente se inserto la tarjeta SD y se ejecuto la lnea anterior
nuevamente:
$ df-h
b) Se identifico la diferencia entre la primer y segunda lista para de-
terminar a que archivo del sistema se asocio la memoria SD.
c) Se desmonto la memoria SD utilizando el archivo del sistema aso-
ciado a la memoria SD (filesystem). En la terminal:
$ umount <filesystem>
d) Se escribio 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 consideracion lo siguiente:
Es posible utilizar bloques de 1MB, sin embargo, el proceso
sera considerablemente mas lento.
La instruccion 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 considero como terminada la instalacion. Para la imple-


mentacion en RaspBerry Pi posteriormente a esta subseccion se realizaron
los pasos indicados en la seccion denominada Configuracion post-instalacion
ubicada mas adelante.
Para acceder al sistema por SSH:

Nombre de usuario root.

Contrasena raspberry.

Para acceder a FreePBX (administrador web):

Nombre de usuario admin.


8.1. Implementacion 39

Contrasena admin.

Contrasena de administrador Mysql: raspberry.

Instalando Raspbian y posteriormente Asterisk


En esta subseccion primero se indican dos posibles formas de instalar Rasp-
bian, posteriormente a ello se instala Asterisk de acuerdo a la forma recomen-
dada por Bryant et al. (2013).

Instalando Raspbian:

Existen principalmente dos formas de realizar esta instalacion. Una es muy


semejante a la forma en la que se realiza la instalacion de RasPBX indicada
en la subseccion 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 instalacion desde all.

A continuacion se describen los pasos seguidos para cada una de las formas
de instalacion descritas anteriormente:

1. Instalando Raspbian desde imagen

a) Se descargo 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 subseccion anterior. Modificando uni-
camente la ubicacion de la imagen de RasPBX por la ubicacion de
la imagen de Raspbian en donde corresponda.

2. Instalando Raspbian desde NOOBS (New Out of Box Software)

a) Se formateo la memoria SD, posteriormente se creo una particion


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 descargo la version 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 Rasp-
Berry Pi.
f) Se conecto perifericos: raton, teclado y monitor.
g) Se conecto el cable de red.
h) Se conecto el cable de alimentacion.

Cuando NOOBS inicio por primera vez redimensiono la particion


FAT32 al mnimo para que posteriormente sea utilizado como par-
ticion de recuperacion. Posteriormente a esto se mostro una lista
de distribuciones de Linux.
i) Se selecciono Rasbian, se hizo click en Install y se espero a que
proceso finalizara.

Luego de esto se considero como terminada la instalacion de Raspbian. Para


acceder al sistema por SSH:

Nombre de usuario pi.

Contrasena raspberry.

Instalando Asterisk:

Para realizar esta instalacion es indispensable que el RaspBerry Pi tenga ac-


ceso a Internet.
A continuacion se describen los pasos necesarios para la instalacion 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. Implementacion 41

$ mkdir -p ~/src/asterisk-complete/asterisk
$ cd ~/src/asterisk-complete/asterisk

4. Descargando ultima version 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 aplicacion. En la terminal:

$ cd <nombre carpeta descomprimida>


$ ./configure

7. Compilando e instalando Asterisk. En la terminal:

$ make
$ sudo make install
$ sudo make config

8. Modificacion de permisos en donde fue instalado Asterisk. En la termi-


nal:

$ sudo chown -R pi:pi /var/lib/asterisk/


$ sudo chown -R pi:pi /var/spool/asterisk/
$ sudo chown -R pi:pi /var/log/asterisk/
$ sudo chown -R pi:pi /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 informacion 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. Implementacion 43

noload => app_flash.so


noload => app_getcpeid.so
noload => app_setcallerid.so
noload => app_adsiprog.so
noload => app_forkcdr.so
noload => app_sms.so
noload => app_morsecode.so
noload => app_followme.so
noload => app_url.so
noload => app_alarmreceiver.so
noload => app_disa.so
noload => app_dahdiras.so
noload => app_senddtmf.so
noload => app_sayunixtime.so
noload => app_test.so
noload => app_externalivr.so
noload => app_image.so
noload => app_dictate.so
noload => app_festival.so

Luego de esto se considero como terminada la instalacion de Asterisk. Es


importante recordar que por este metodo se instalo Asterisk en su forma mas
primitiva. Para ponerlo en funcionamiento es necesario dedicarle mas tiempo
a su implementacion. Dado que esto se escapa de los alcances de este proyecto,
para la implementacion del mismo se utiliza una distribucion mas completa y
adaptada a RaspBerry Pi (RasPBX).

Configuracion post-instalacion
En esta seccion se busca indicar los procedimientos que se siguieron posterior a
la instalacion de una distribucion de linux con Asterisk integrado (RasPBX).
Luego de realizar la instalacion de RasPBX se extrajo la memoria SD del
dispositivo en donde fue quemada, se inserto en RaspBerry Pi, se conecto
raton, teclado, cable de red, monitor y por ultimo, el cable de alimentacion.
Las luces de la placa de RaspBerry Pi se encendieron y el monitor mostro el
arranque de Rasbian. Despues se accedio con el nombre de usuario y contrasena
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 configuracion de Rasbian la cual se recomien-
da ejecutarse posteriormente a la instalacion de dicho sistema. Para acceder
unicamente es necesario ejecutar la siguiente lnea:

$ raspi-config

Raspi-config cuenta con las siguientes opciones:

Expandir sistema de archivos

Cambiar contrasena usuario root

Activar o desactivar escritorio al inicio

Opciones de internacionalizacion

Activar camara

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 configuracion generales
a pesar de haber instalado una distribucion dirigida a la ejecucion de Aste-
risk principalmente. Debido a lo anterior, unicamente las siguientes opciones
obtienen especial interes:

Expandir sistema de archivos: Al momento en el que fue quemada la


imagen de RasPBX sobre nuestra tarjeta SD se creo una particion con
un tamano 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 actualizacion del sistema.
8.1. Implementacion 45

Cambiar contrasena usuario root: Por cuestiones de seguridad se reco-


mienda realizar este cambio.

Opciones de internacionalizacion: Esta opcion permite modificar el len-


guaje del sistema operativo, la zona horaria y la distribucion de su te-
clado. Para la implementacion se considero como lenguaje del sistema
operativo el ingles (en GB), zona horaria Costa Rica y distribucion en
el teclado tambien en ingles (UK).

Overclocking: Esta opcion permite aumentar la velocidad del procesa-


dor. Lo cual eventualmente podra ser una alternativa para aumentar la
capacidad de comunicaciones simultaneas requeridas. Sin embargo, hay
que tomar en consideracion que el aumento de la velocidad del procesa-
dor implica disminuir la vida del dispositivo, aumentar el calor disipado
(instalacion necesaria de disipadores) y por ultimo, aumentar los reque-
rimientos energeticos, por lo que se va a requerir de una fuente mas
potente. Para la implementacion se utilizo 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 opcion nos permite activar o desactivar el acceso remoto
por SSH (Secure SHell). Esta activado por defecto, sin embargo, de
ser necesario es posible desactivar este servicio desde aqu.
Update: Esta opcion permite actualizar raspi-config a su version
mas 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 ser-
vidor 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 arrancara puesto que el sistema interpreta que retrocedio en el
tiempo. Para evitar esto se instala una aplicacion llamada fake-hwclock la cual
consiste en un conjunto de comandos que periodicamente almacenan en un ar-
chivo la hora y fecha actual del sistema. Si el sistema arrancara nuevamente
1
Descripcion instantanea 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 ajustara la hora del sistema a


la ultima fecha y hora almacenada.

Para instalar, en la terminal:

$ sudo apt-get install fake-hwclock

Asignacion de IP estatica
Esta subseccion es muy importante debido a que es necesario conocer siempre
la ubicacion de la PBX ya sea por medio de la direccion IP o bien algun URL.
Hay varias formas de conocer siempre dicha ubicacion. Para la implementacion
se utilizo la asignacion de una IP estatica desde el RaspBerry Pi por lo que
unicamente se modifico el archivo /etc/network/interfaces. A continuacion se
muestran los pasos realizados:

1. En la terminal:

$ nano /etc/network/interfaces

2. Posteriormente se modifica el documento con la siguiente informacion:

auto lo
auto eth0

iface lo inet loopback


iface eth0 inet dhcp
address <direccion ip>
netmask <mascara de red>
network <red>
broadcast <difusion>
gateway <puerta de enlace>

Para la implementacion se consideraron los siguientes parametros:

auto lo
#auto eth0

iface lo inet loopback

#iface eth0 inet static


# address 192.168.1.2
# netmask 255.255.255.0
8.1. Implementacion 47

# network 192.168.1.0
# broadcast 192.168.1.255
# gateway 192.168.1.1

iface vlan91 inet static # Acceso red area 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 implementacion difiere al indicado inicialmente esto de-
bido a que por disposicion de la administracion de la red de la Escuela de
Ingeniera Electrica 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
area extensa (WAN).

Actualizaciones
Luego haber realizado las configuraciones basicas descritas anteriormente es
necesario actualizar todo el sistema, este proceso se dividio en 3 partes:
1. Actualizacion de dependencias de Asterisk : Esta parte de la actualiza-
cion 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 lnea se encarga de actualizar la lista de paquetes


disponibles y sus versiones pero no instala ni actualiza ningun paque-
48 8 Anexos

te. La segunda lnea se encarga recorrer la lista de paquetes instalados


con su version actual y compararla con las versiones disponibles. Luego
actualiza todos los paquetes que no se encuentren en su ultima version
disponible.

2. Actualizacion de RasPBX: Esta parte de la actualizacion instala las ul-


timas incorporaciones y mejoras de RasPBX.
En la terminal:

$ raspbx-upgrade

3. Actualizacion de Modulos - FreePBX:


Como ya se menciono anteriormente, FreePBX es la interfaz web que
utiliza RasPBX para Asterisk. Esta parte de la actualizacion instala las
ultimas versiones de los modulos que conforman FreePBX. Para esto es
necesario seguir los siguientes pasos:

a) Acceder a la administracion web de Asterisk (FreePBX): Para es-


to es necesario acceder desde cualquier equipo conectado a la red
por medio del explorador web a la direccion IP estatica asignada
anteriormente al RaspBerry Pi.
b) Ingresar a FreePBX Administration: Utilizar acceso por defecto:
admin/admin.
c) Dirigirse a la pestana Admin y posteriormente a Module Admin.
d) Hacer clic en el boton Check online, posteriormente se mostraran
en color rojo todos los modulos para los cuales existen versiones
mas nuevas disponibles. Se debe hacer clic en todos estos modulos,
seleccionar la opcion Download and Install y por ultimo, hacer
clic en el boton Process que aparece en la parte superior derecha
de la ventana.
e) Posteriormente el sistema descargara e instalara todos los modulos
indicados.

Configuracion inicial Asterisk


Hasta el momento aun no se ha realizado ninguna configuracion en Asterisk, en
esta seccion se explica como se configuro inicialmente esta aplicacion por medio
de FreePBX para posteriormente hacer las pruebas de rendimiento mostradas
en el siguiente captulo.

1. Configuracion avanzada:
8.1. Implementacion 49

Figura 8.1: Configuracion avanzada - FreePBX

a) Se accedio a la administracion web de Asterisk (FreePBX).


b) Se ingreso a FreePBX AdministrationSettingsAdvanced
Settings.
c) Se cambio el codigo de administrador.
d) Se cambiaron los todos de indicacion para Costa Rica.
e) Se cambio el codigo de acceso para ARI (Asterisk Recording Inter-
face).
f) El resto de parametros se dejan por defecto.

Mientras se fueron realizando los cambios en la configuracion, FreePBX


automaticamente fue modificando la informacion en el sistema.
En la figura 8.1 se muestra la seccion FreePBX Administration
Settings Advanced Settings de FreePBX.

2. Configuracion SIP:

a) Se accedio a la administracion web de Asterisk (FreePBX).


b) Se ingreso a FreePBX AdministrationSettingsAsterisk
SIP Settings.
50 8 Anexos

Figura 8.2: Configuracion SIP - FreePBX

c) Parametros NAT: Estos se ajustaron por medio de la autoconfigu-


racion (boton Auto Configure).
d) Se activaron los siguientes Codecs:
G722
GSM
G729
e) El resto de parametros se dejan por defecto.
f) Se guardaron y aplicaron los cambios: Hacer clic en el boton Sub-
mit Changes, posteriormente clic en el boton rojo que aparece en
la parte superior con el nombre Apply Config.

En la figura 8.2 se muestra la seccion FreePBX Administration


SettingsAsterisk SIP Settings de FreePBX.

3. Configuracion IAX:

a) Se accedio a la administracion web de Asterisk (FreePBX).


b) Se ingreso a FreePBX AdministrationSettingsAsterisk
IAX Settings.
c) Se activaron los siguientes Codecs:
8.1. Implementacion 51

Figura 8.3: Configuracion IAX - FreePBX

G722
GSM
G729
d) El resto de parametros se dejan por defecto.
e) Se guardaron y aplicaron los cambios: Hacer clic en el boton Sub-
mit Changes, posteriormente clic en el boton rojo que aparece en
la parte superior con el nombre Apply Config.

En la figura 8.3 se muestra la seccion FreePBX AdministrationSettings


Asterisk IAX Settings de FreePBX.

Configuracion de extensiones
1. Extensiones SIP:

a) Se accedio a la administracion web de Asterisk (FreePBX).


b) Se ingreso a FreePBX AdministrationApplicationsExtensions.
c) Se indico que la extension era tipo SIP y posteriormente se hizo
clic en Submit.
d) Luego se configuraron unicamente los siguientes parametros:
52 8 Anexos

Figura 8.4: Configuracion extension SIP - FreePBX

Extension del usuario (User Extension)


Nombre a mostrar (Display Name)
Contrasena de acceso cliente SIP (secret)
Se activo la configuracion NAT (nat = Yes)
Se activo el correo de voz (Voicemail status = Enabled)
Contrasena de acceso correo de voz (Voicemail Password)
e) Se guardaron y aplicaron los cambios: Hacer clic en el boton Sub-
mit, posteriormente clic en el boton rojo que aparece en la parte
superior con el nombre Apply Config.

En la figura 8.4 se muestra la seccion FreePBX Administration


ApplicationsExtensionsSIP de FreePBX.
Para la implementacion se configuraron 5 extensiones de este tipo. En
la tabla 8.1 se indican los valores para cada uno de los parametros antes
mencionados.

2. Extensiones IAX2:

a) Se accedio a la administracion web de Asterisk (FreePBX).


8.1. Implementacion 53

Cuadro 8.1: Parametros extensiones SIP


Extension del Nombre a mostrar Contrasena Contrasena
usuario SIP Correo de Voz
100 User11 User11 100
101 User12 User12 101
102 User13 User13 102
103 User14 User14 103
104 User15 User15 104

Cuadro 8.2: Parametros extensiones IAX2


Extension del Nombre a mostrar Contrasena Contrasena
usuario IAX2 Correo de Voz
105 User16 User16 105
106 User17 User17 106

b) Se ingreso a FreePBX AdministrationApplications


Extensions.
c) Se indico que la extension era tipo IAX2 y posteriormente se hizo
clic en Submit.
d) Luego se configuraron unicamente los siguientes parametros:
Extension del usuario (User Extension)
Nombre a mostrar (Display Name)
Contrasena de acceso cliente IAX2 (secret)
Se activo el correo de voz (Voicemail status = Enabled)
Contrasena de acceso correo de voz (Voicemail Password)
e) Se guardaron y aplicaron los cambios: Hacer clic en el boton Sub-
mit, posteriormente clic en el boton rojo que aparece en la parte
superior con el nombre Apply Config.

En la figura 8.5 se muestra la seccion FreePBX Administration


ApplicationsExtensionsIAX2 de FreePBX.

Para la implementacion se configuraron 2 extensiones de este tipo. En


la tabla 8.2 se indican los valores para cada uno de los parametros antes
mencionados.
54 8 Anexos

Figura 8.5: Configuracion extension IAX2 - FreePBX

Configuracion de troncales
Con el fin de hacer tambien pruebas externas a la red local en la implemen-
tacion, se hicieron 3 enlaces IAX a otras PBX IP ejecutandose tambien sobre
RaspBerry Pi & Asterisk. A continuacion se describen los pasos que se siguie-
ron para su configuracion:

1. Se accedio a la administracion web de Asterisk (FreePBX).

2. Se ingreso a FreePBX AdministrationConnectivityTrunks.

3. Luego se selecciono el protocolo del enlace, en este caso IAX2.

4. Luego se configuraron unicamente los siguientes parametros:

Nombre de la troncal (Trunk Name)


Identificacion llamada saliente (Outbound CallerID)
Configuracion saliente (Outgoing Settings)
Nombre de la troncal (Trunk Name)
Detalles PEER (PEER Details)
8.1. Implementacion 55

Cuadro 8.3: Parametros enlaces IAX2 - Configuracion saliente

Nombre de Identificacion Configuracion saliente


la troncal llamada entrante Host Username Secret
IAX2 Trunk S2 Servidor2 afranpe.sytes.net Servidor1 SeRvidor1Pf
IAX2 Trunk S3 Servidor3 200.6.234.140 Servidor1 SeRvidor1Pf
IAX2 Trunk S4 Servidor4 edwinbasto.no-ip.biz Servidor1 SeRvidor1Pf

Cuadro 8.4: Parametros enlaces IAX2 - Configuracion entrante

Nombre de Identificacion Configuracion entrante


la troncal llamada entrante Contenido del usuario Secret
IAX2 Trunk S2 Servidor2 Servidor2 SeRViDoR2TRK
IAX2 Trunk S3 Servidor3 Servidor3 SeRvidor3GT
IAX2 Trunk S4 Servidor4 Servidor4 SeRvidoR4

host=<host>
username=<Username>
secret=<Secret>
type=peer
Configuracion entrante (Incoming Settings)
Contenido del usuario (USER Context = <Contenido del usua-
rio>)
Detalles USUARIO (USER Details)
secret=<Secret>
type=user
context=from-trunk

5. Se guardaron y aplicaron los cambios: Hacer clic en el boton Submit


Changes, posteriormente clic en el boton 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 seccion FreePBX Administration


ConnectivityTrunks de FreePBX con la configuracion del enlace al ser-
vidor 2.
56 8 Anexos

Figura 8.6: Configuracion enlace al Servidor 2 Parte 1 - FreePBX

Figura 8.7: Configuracion enlace al Servidor 2 Parte 2 - FreePBX


8.1. Implementacion 57

Cuadro 8.5: Numeracion local de extensiones en cada servidor


Nombre PBX IP Rango de extensiones
Servidor1 100 - 199
Servidor2 200 - 299
Servidor3 300 - 399
Servidor4 400 - 499

Configuracion de rutas de salida


Posteriormente a la creacion de las troncales, se configuro una ruta de salida
para cada una de las mismas.
Antes de mostrar como se hizo esa configuracion es importante tomar
en consideracion la tabla 8.5 la cual muestra la numeracion 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 marcacion requerida para acceder a
cada troncal.
A continuacion se indican los pasos seguidos para la configuracion de las
rutas de salida:

1. Se accedio a la administracion web de Asterisk (FreePBX).

2. Se ingreso a FreePBX AdministrationConnectivity


Outbound Routes.

3. Luego se configuraron unicamente los siguientes parametros:

Nombre de la ruta (Route Name)


En el tipo de ruta se selecciono interno a la empresa (Route Type
= Intra-Company): Esto significa que la extension que utilice esta
troncal se va a identificar con la otra PBX IP con el numero de
extension local.
Regla de marcacion (Dial Patterns that will use this Routematch
pattern)
Secuencia de ocupacion de troncales

4. Se guardaron y aplicaron los cambios: Hacer clic en el boton Submit


Changes, posteriormente clic en el boton rojo que aparece en la parte
superior con el nombre Apply Config.

En la tabla 8.6 se indican los parametros de configuracion para cada uno


de las rutas.
58 8 Anexos

Cuadro 8.6: Parametros de configuracion rutas de salida

Nombre de la ruta Regla de marcacion Secuencia de ocupacion


IAX2 Route to Servidor2 2XX IAX2 Trunk S2
IAX2 Route to Servidor3 3XX IAX2 Trunk S3
IAX2 Route to Servidor4 4XX IAX2 Trunk S4

Figura 8.8: Configuracion ruta de salida al Servidor 2 Parte 1 - FreePBX

El hecho de que en la regla de marcacion se coloque unicamente en el


patron de encuentro (match pattern) significa que el patron de encuentro no
unicamente va a contener informacion de la extension con la que se desea
realizar la comunicacion sino tambien indicara la troncal por la que se debe de
establecer la comunicacion 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 podran 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 seccion FreePBX Administration
ConnectivityOutbound Routes de FreePBX con la configuracion de la
ruta de salida al servidor 2.
8.1. Implementacion 59

Figura 8.9: Configuracion ruta de salida al Servidor 2 Parte 2 - FreePBX

Configuracion de rutas de entrada


Para la implementacion todas las llamadas entrantes (any DID) se redireccio-
naron a la extension 100. Para esto se realizaron los siguientes pasos:

1. Se accedio a la administracion web de Asterisk (FreePBX).

2. Se ingreso a FreePBX AdministrationConnectivityInbound


Routes.

3. Luego se selecciono la plantilla que redirecciona todas las llamadas en-


trantes: Para esto se selecciono la opcion All DIDs ubicado en un cua-
dro en la parte superior derecha de la pantalla.

4. Luego se configuraron unicamente los siguientes parametros:

Descripcion de la ruta de entrada (Description).


Se definio la extension 100 como destino (Set Destination = Exten-
sions <100>User11).

5. Se guardaron y aplicaron los cambios: Hacer clic en el boton Submit


Changes, posteriormente clic en el boton rojo que aparece en la parte
superior con el nombre Apply Config.
60 8 Anexos

Figura 8.10: Configuracion ruta de entrada - FreePBX

En la figura 8.10 se muestra la seccion FreePBX Administration


ConnectivityInbound Routes de FreePBX.

8.2 Pruebas de desempeno


SIPP
A continuacion se describen los pasos seguidos para la instalacion y configu-
racion de SIPP :

1. Primero se instalaron los paquetes necesarios para la compilacion. 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 descargo la aplicacion SIPP. En la terminal:

$ wget http://sourceforge.net/projects/sipp/files/sipp/3.2/sipp.svn.tar.gz
8.2. Pruebas de desempeno 61

3. A continuacion se procedio a descomprimir el archivo descargado y pos-


teriormente compilar la informacion descomprimida. En la terminal:

$ tar -xzf sipp.svn.tar.gz


$ cd sipp.svn
$ make pcapplay_ossl

4. Posteriormente de haber completado la instalacion fue necesario crear


una extension con una configuracion en especfico, para luego generar
las llamadas desde dicha extension. Debido a que FreePBX no permite
modificar ciertos parametros necesarios, la creacion de esta extension
se realizo por codigo. Para esto se accedio a RaspBerry Pi & Asterisk,
posteriormente en la terminal:

$ sudo nano /etc/asterisk/sip.conf

Se agrego la siguiente informacion 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 parametro.

5. Posteriormente se le creo una regla de marcacion a la extension creada


anteriormente. Desde RaspBerry Pi & Asterisk ; en la consola:

$ sudo nano /etc/asterisk/extensions.conf

Se agrego la siguiente informacion al final del documento:

[sipp]
exten => 5005,1,Answer
exten => 5005,n,SetMusicOnHold(default)
exten => 5005,n,WaitMusicOnHold(20)
exten => 5005,n,Hangup
62 8 Anexos

6. Para que las modificaciones anteriores tengan efecto es necesario acceder


a la lnea de comandos en Asterisk y recargar todos los archivos. Para
esto, desde RaspBerry Pi & Asterisk ; en la consola:

$ asterisk -r

En la lnea de comandos de Asterisk :

reload

7. Por ultimo, se crearon dos escenarios, ambos que simulan el trafico RTP
en donde la unica variacion en cada uno es el codificador utilizado (como
ya se menciono, uno para G711 y otro para GSM).

a) Se creo un archivo de texto con el nombre uac pcap u.xml, en donde


se simula una codificacion G711, de tipo u-law. Dentro de dicho
archivo se incluyo el siguiente codigo:
<?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 desempeno 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 desempeno 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 creo un archivo de texto con el nombre uac pcap g.xml, en donde
se simula una codificacion GSM. Dentro de dicho archivo se incluyo
el siguiente codigo:
<?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 desempeno 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 Implementacion de funciones adicionales


Troncal por GSM
A continuacion se detallan los pasos seguidos para la instalacion del modem
GSM.

1. Se desactivo el pin de chip GSM utilizado.

2. Se introdujo el chip GSM en el modem.

3. Antes de conectar al modem al RaspBerry Pi, se instalo el controlador


del modem GSM. En la terminal:

$ install-dongle

4. Posteriormente a la instalacion se procedio a conectar el modem GSM.

5. Se accedio a la administracion web de Asterisk (FreePBX).

6. Se ingreso a FreePBX AdministrationConnectivityTrunks.

7. Se selecciono el protocolo del enlace, en este caso Custom Trunk.

8. Luego se configuraron unicamente los siguientes parametros:

Nombre de la troncal (Trunk Name = GSM CLARO)


Identificacion llamada saliente (Outbound CallerID = <numero te-
lefonico>)
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 boton Submit


Changes, posteriormente clic en el boton rojo que aparece en la parte
superior con el nombre Apply Config.

10. Se ingreso a FreePBX AdministrationConnectivity


Outbound Routes.
8.3. Implementacion de funciones adicionales 69

Figura 8.11: Configuracion troncal GSM - FreePBX

11. Luego se configuraron unicamente los siguientes parametros:

Nombre de la ruta (Route Name = Gsm)


Regla de marcacion (Dial Patterns that will use this Routeprefix
= 9 y Routematch pattern = XXXXXXXX)
Secuencia de ocupacion de troncales (Trunk Sequence for Matched
Routes 0 = GSM CLARO)

12. Se guardaron y aplicaron los cambios: Hacer clic en el boton Submit


Changes, posteriormente clic en el boton rojo que aparece en la parte
superior con el nombre Apply Config.

En las figuras 8.11 y 8.12 se muestra la seccion FreePBX Administration


ConnectivityTrunks y FreePBX AdministrationConnectivity
Outbound Routes de FreePBX con la configuracion indicada anteriormente.

Hardphone marca Cisco modelo


R CP-7940
A continuacion se indican los pasos seguidos para configurar los parametros
de red:
1. Se conecto el telefono a la alimentacion electrica.
70 8 Anexos

Figura 8.12: Configuracion ruta de salida GSM - FreePBX

2. Posteriormente a que el telefono iniciara, se presiono el boton Settings


y se accedio a Unlock Changes, luego se ingreso la contrasena de admi-
nistracion (la cual para este modelo en particular es cisco). Lo anterior
nos da acceso a modificar los parametros de configuracion, de no hacerlo
unicamente nos va a permitir observar dichos parametros.

3. Luego se ingreso a Network Settings, se activo DHCP y ademas 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 configuracion de los parametros de red, se procedio


a descargar una version de firmware que soporte SIP. Por lo general son 4
archivos y para una version 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. Implementacion de funciones adicionales 71

P003-12-0-00.sbn

Dichos archivos deben almacenarse en el servidor TFTP para que el telefono


VoIP tenga acceso a los mismos y pueda actualizarse.
Luego se crearon los archivos que contienen la configuracion general y
configuracion de identificacion SIP. Estos deben ser nombrados se la siguiente
forma:

SIPDefault.cnf

SIP<MAC>.cnf

A continuacion se brinda una descripcion de la funcion de cada uno de los


archivos antes mencionados y el contenido de los mismos:

1. SIPDefault.cnf: Este archivo cuenta con informacion de configuracion ge-


neral, y a este acceden todos los telefonos 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 informacion referente a la identi-


ficacion SIP. A este archivo unicamente accede el telefono con la direccion
MAC respectiva. Por lo que que debe existir un archivo de estos por cada
telefono que lo requiera durante su inicio.
El contenido de este archivo debe ser el siguiente:

image_version: P0S3-12-00-00
# Configuracion lnea 1
72 8 Anexos

line1_name: 100 ; nombre de la extension


line1_authname: "100"
line1_shortname: "100" ; Identificacion boton de lnea.
line1_password: "User11"
line1_displayname: "100"; Identificacion del usuario
proxy1_port: 5060 ; Puerto SIP
proxy1_address: <IP de la PBX>
# Configuracion lnea 2
line2_name: 103
line2_authname: "103"
line2_shortname: "103"
line2_password: "User14"
line2_displayname: "103";
# Configuracion 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 telefono presionando los botones *,6


y Settings simultaneamente, hasta que los LEDs en los botones Headset,
Mute y Speaker empiecen a parpadear secuencialmente. El telefono iniciara
nuevamente cargando el nuevo firmware y la configuracion respectiva.
Bibliografa
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-desde-
un-punto.html.
Bryant, R., Madsen, L., y Maggelen, J. V. (2013). Asterisk the definitive guide.
OReilly Media.
Cynthec y Pimoro (2013). GPIO Cheat Sheet.
https://www.modmypi.com/blog/raspberry-pi-gpio-cheat-sheet.
element14 (2013). Piface digital for raspberry pi.
http://www.element14.com/community/docs/DOC-52857/l/piface-digital-
for-raspberry-pi.
Garcia, R. (2008). Integracion de PBX analogica/digital con PBX IP por
software del ministerio del poder popular para la cultura e interconexion 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-y-
arm-diferencias-ventajas-y-para-que-sirve-cada-uno/.
Meggelen, J. V., Madsen, L., y Smith, J. (2007). The Future of Telephony.
OReilly Media.
Raspberry&asterisk-community (2013a). Asterisk for raspberry pi.
http://www.raspberry-asterisk.org/.
Raspberry&asterisk-community (2013b). Gsm voip gateway with chan dongle.
http://wiki.e1550.mobi/doku.php?id=requirements.
RaspBerryPi-Foundation (2013). Raspberry pi official web page.
http://www.raspberrypi.org.
Rosa, F. S. (2009). Manual de Asterisk y otras hierbas. GNU Free Documen-
tation License.
SD-Association (2013). Sd standard overview. https://www.sdcard.org/.

73

Vous aimerez peut-être aussi