Академический Документы
Профессиональный Документы
Культура Документы
Por
BENITEZ DAZA, Jessica
GONZLEZ CLAREMBAUX, Valentina Sofa
- ii -
Por
BENITEZ DAZA, Jessica
GONZLEZ CLAREMBAUX, Valentina Sofa
INFORME FINAL DE
CURSOS EN COOPERACIN TCNICA Y DESARROLLO SOCIAL
Presentado ante la Ilustre Universidad Simn Bolvar
como requisito parcial para optar al ttulo de
Ingeniero Electrnico
Sartenejas, febrero 2007
- iii -
RESUMEN
El objetivo principal de esta pasanta fue la elaboracin de una propuesta de implementacin
de un Servidor Proxy SIP, para el Enrutamiento de Voz sobre IP, incorporando una ejemplificacin en
la cual se representaron las funcionalidades bsicas de un Proxy, escalable y editable. Para
alcanzarlo, se necesit de una investigacin terica, la eleccin de las herramientas adecuadas para la
misma, la configuracin de cada una de forma independiente para darle una estructura adecuada, al
igual que la realizacin de las pruebas pertinentes para asegurar as su correcto funcionamiento. El
servidor SIP est desarrollado sobre el software libre OpenSER, permitiendo la manejabilidad del
mismo. Adems se desarroll una herramienta Web para poder administrar el servicio de una manera
fcil y rpida sin tener que acceder a la consola para modificar la configuracin del servicio, as como
tambin dos manuales uno tcnico y otro para usuario donde se mostr cmo manejar de una manera
ms rpida y eficiente las herramientas desarrolladas.
PALABRAS CLAVES:
VoIP, Proxy, SIP, enrutamiento, OpenSER, software, softphone, servidor, peticin.
- iv DEDICATORIA
-vAGRADECIMIENTOS
- vi NDICE
RESUMEN .................................................................................................................................... iii
PALABRAS CLAVES ..................................................................................................................... iii
DEDICATORIA ............................................................................................................................ iv
AGRADECIMIENTOS....................................................................................................................v
NDICE ........................................................................................................................................ vi
NDICE DE FIGURAS .................................................................................................................viii
NDICE DE TABLAS .....................................................................................................................x
GLOSARIO DE TRMINOS Y ABREVIATURAS ........................................................................... xi
GLOSARIO DE TRMINOS Y ABREVIATURAS ........................................................................... xi
CAPTULO I: INTRODUCCIN ....................................................................................................1
1.1.
Justificacin....................................................................................................................1
1.2.
Objetivos........................................................................................................................1
1.2.1.Objetivo General.........................................................................................................1
1.2.2.Objetivos Especficos...................................................................................................2
CAPITULO II MARCO ORGANIZACIONAL ..................................................................................3
2.1.
Misin ............................................................................................................................3
2.2.
Visin.............................................................................................................................3
2.3.
Resea histrica .............................................................................................................3
2.4.
Empresas filiales de CANTV .............................................................................................4
2.5.
Estructura Organizativa ...................................................................................................4
CAPTULO III: MARCO TERICO ...............................................................................................7
3.1.
Evolucin de los Sistemas Telefnicos ..............................................................................7
3.2.
Redes Telefnicas ...........................................................................................................8
3.3.
Sealizacin telefnica ....................................................................................................9
3.4.
Funciones de sealizacin telefnica ................................................................................9
3.4.1 Estructura de sealizacin .........................................................................................10
3.4.2.Evolucin de las Redes Telefnicas ............................................................................11
3.4.2.1.POTS.........................................................................................................11
3.4.2.2.PSTN.........................................................................................................12
3.4.2.3.NGN ..........................................................................................................12
3.5.
Sistema de Sealizacin R2 ...........................................................................................13
3.6.
Sistema de Sealizacin N 7.........................................................................................13
3.6.1 Puntos de Sealizacin ..............................................................................................14
3.6.2 Protocolo SS7 ...........................................................................................................15
3.7.
Redes de Computadora .................................................................................................16
3.7.1 Topologas de Red (Fsica y lgica) ............................................................................16
3.7.2.Modelos de Redes.....................................................................................................18
3.7.3.El protocolo IP..........................................................................................................20
3.7.4.El protocolo TCP .......................................................................................................21
3.7.5.El protocolo UDP ......................................................................................................22
3.8.
Elementos de redes.......................................................................................................22
3.8.1.Hubs .....................................................................................................................22
3.8.2.Switches................................................................................................................22
3.8.3.Routers .................................................................................................................23
3.8.4.Gateways ..............................................................................................................23
3.8.5.Ordenadores y Servidores .........................................................................................23
3.8.6.VPN .........................................................................................................................23
3.9.
Sistema operativo Linux. Fedora Core 4..........................................................................24
3.10.
Sealizacin Telefnica en NGN y VoIP.......................................................................24
3.10.1.VoIP ......................................................................................................................25
3.10.2.Protocolos VoIP ......................................................................................................26
3.10.3.Trfico Telefnico ...................................................................................................31
- ix Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
-xNDICE DE TABLAS
Tabla
Tabla
Tabla
Tabla
Tabla
1.
2.
3.
4.
5.
CAPTULO I: INTRODUCCIN
El presente informe tiene como finalidad exponer las actividades realizadas durante el periodo
de pasanta en la Empresa Compaa Annima Nacional Telfonos de Venezuela (CANTV), las cuales
nos permitieron poder aplicar muchos de los conocimientos adquiridos a lo largo de la carrera.
En el Primer Captulo se describe la Justificacin de la realizacin del proyecto. Adems, se
expone el Objetivo General, que como en todo proyecto es fundamental ya que es el que dicta los
lineamientos del mismo, junto con los Objetivos Especficos. En el Segundo Captulo se hace una breve
Resea Histrica de la empresa, y se da una explicacin sobre la estructura Organizativa de la Misma.
En el Tercer Captulo se hace una descripcin de los fundamentos tericos referentes a los
Sistemas Telefnicos Tradicionales, la Evolucin de los Sistemas Telefnicos, as como la sealizacin
telefnica en VoIP, destacndose el Protocolo de Sealizacin SIP que fue el que se utiliz. Todos
estos conocimientos resultaron primordiales para el desarrollo de la pasanta.
El Cuarto Captulo explica de forma detallada la metodologa utilizada en el desarrollo del
proyecto. Se presentan las fases del mismo, conformadas cada una por un conjunto de actividades.
Por ltimo, en el Captulo Cinco se muestran los resultados obtenidos, as como el conjunto de pruebas
realizadas a cada una de las aplicaciones.
1.1. Justificacin
La tecnologa de las redes de paquetes representa una evolucin en las telecomunicaciones.
En un sistema de Voz sobre IP se pueden unificar servicios de comunicaciones de voz, datos y video a
travs de un sola red; esto junto a una serie de beneficios econmicos sustentan la actual migracin
que est llevando a cabo la Compaa Annima Nacional Telfonos de Venezuela (CANTV) de sus
redes conmutadas (TDM) a redes de paquetes (VoIP).
Debido a esto, CANTV necesita tener el completo dominio de una herramienta que le permita
realizar el enrutamiento de llamadas. Aunque en el mercado existen soluciones de este tipo, sus
desarrollos son cerrados por lo que limitan la configuracin, escalabilidad y mejoras a las ofrecidas por
el proveedor. Es por ello que CANTV ha decidido emprender el desarrollo de una herramienta propia
que sirva para el enrutamiento de VoIP, garantizando as que su personal interno pueda reconfigurar
el sistema sin necesidad de depender de proveedores.
1.2. Objetivos
1.2.1. Objetivo General
El objetivo general de este trabajo es elaborar una propuesta de implementacin de un
Servidor Proxy SIP, para el Enrutamiento de Voz sobre IP, que incorpore una ejemplificacin
representando las funcionalidades bsicas de un Proxy, la cual pueda ser escalada o modificada.
Sealizacin SIP.
Aplicacin Web.
aplicacin Web.
2.1.
Misin
Visin
Resea histrica
-42.4.
En 1992 nace Movilnet como empresa filial de Cantv, dedicada a prestar servicios de telefona
mvil en Venezuela, logrando un crecimiento importante gracias al lanzamiento de productos
innovadores.
Cantv Servicios es creada en 1996 como filial de Cantv, con la finalidad de ofrecer servicios de
valor agregado para el mercado venezolano, especficamente, acceso a Internet con tecnologa
avanzada y la confiabilidad de la infraestructura de telecomunicaciones ms completa del pas. En
1999 Cantv Servicios pasa a ser Cantv.net. En Venezuela fue la primera compaa que presta servicio
basado en tecnologa ADSL es CANTV, a travs del servicio ABA (Acceso a Banda Ancha). El cual surge
para satisfacer la necesidad de muchos clientes naturales y jurdicos, cuyos requerimientos van ms
all de lo que un dial-up puede ofrecer.
En 1953 se crea la empresa Gua, C.A. de Publicidad que se encargara de publicar el directorio
telefnico oficial de Venezuela. El 13 de octubre de 1975 se registra una nueva empresa bajo el
nombre de C.A. Venezolana de Guas, Caveguas. En septiembre 1992 se privatiza Caveguas y se
produce el relanzamiento del producto, con reforma estatutaria y composicin accionaria (80% Cantv y
20% Grabados Nacionales), lo que gener una nueva imagen y conllev a la reorganizacin de la
empresa.
En el 2001 Cantv inicia el proceso de integracin corporativa con Movilnet, Cantv.net y
Caveguas, consolidando las unidades de apoyo para prestar servicios corporativos y unificando los
conceptos de imagen grfica de Cantv, Movilnet y Cantv.net, pudiendo as ampliar su visin, unir sus
fortalezas y seguir prestando excelentes servicios a nivel nacional e internacional de una forma mas
comprometida con el pas [5].
2.5.
Estructura Organizativa
-5Presidencia
Vicepresidencia
Ejecutiva
Gerencia General,
Asuntos Regulatorios
Gerencia General,
Consultora Jurdica
Gerencia de Relaciones e
Inversiones Venezolanas
y Servicios
Gerencia General,
Organizacin y
Recursos Humanos
Gerencia General,
Mercadeo
Corporativo
Gerencia General,
Planificacin y
Finanzas
Gerencia General,
Comunicaciones y
Asuntos Pblicos
Presidencia
Vicepresidencia
Ejecutiva
Gerencia General, Tecnologa
y Operaciones
Telecomunicaciones Fijas
Gerencia General,
Proyectos Mayores
Gerencia General,
Operadores de
Telecomunicaciones
Gerencia General,
Aseguramiento de
Ingresos
Gerencia General,
CANTV Empresas e
Instituciones
Gerencia General,
Tecnologa y Operaciones
Telecomunicaciones Fijas
Gerencia Ingeniera y
Construccin de Redes
Gerencia,
Nodos de Acceso
Gerencia, Proyectos de
Ingeniera y
Construccin de Redes
Gerencia, Plataformas
de Gestin de Redes y
Servicios
Gerencia,
Medios de Acceso e
Interconexin
Gerencia,
Nodos de Transporte
En este captulo se expondrn una serie de fundamentos tericos relacionados con los
sistemas telefnicos necesarios para comprender el desarrollo del proyecto. Se explica la evolucin de
los sistemas telefnicos desde sus inicios, la sealizacin telefnica, as como el Sistema de
Sealizacin Nmero 7 (SS7) usado en la red PSTN, Public Switched Telephone Network o Red
Pblica de Telefona Conmutada de CANTV, terminando con las redes de nueva generacin VoIP.
3.1. Evolucin de los Sistemas Telefnicos
En sus inicios la red telefnica se cre para lograr comunicaciones de voz a larga distancia. Las
primeras conexiones se establecieron directamente entre los usuarios pertenecientes a una misma red
(conexiones punto a punto), este tipo de interconexin hizo que el sistema telefnico se convirtiera en
una red completamente mallada. En un principio el nmero de abonados era muy pequeo, pero con
el paso del tiempo la evolucin, mejoras hizo que el nmero de usuarios se incrementar, con lo cual
mantener ese tipo de topologa de interconexin era insostenible debido a que el coste de un nuevo
usuario era proporcional al nmero de usuarios registrados en esos momentos a la red. En concreto, el
nmero de enlaces necesarios para N usuarios es N*(N-1)/2. En la Figura 4 se muestra una red con
topologa de malla.
Usuario 1
Usuario 6
Usuario 2
Usuario 5
Usuario 3
Usuario 4
Esta problemtica llev a la red telefnica hacia un cambio a la topologa de interconexin tipo
estrella entre los usuarios, que es la usada en la actualidad, y que consiste en que cada usuario se
conecta a una central urbana mediante un cable de cobre. Todos los usuarios que se encuentren
ubicados en la misma zona se conectan a la misma central urbana, logrando a travs de la misma la
interconexin entre ellos. Para permitir a su vez la interconexin de estos usuarios con otros ubicados
en otra central, es necesario conectarse con una central regional. Estas centrales se conectan con
otras, hasta que toda central tiene acceso con cualquier otra, ya sea mediante una conexin directa
entre centrales, o a travs de otra central usada como puente [6]. En la Figura 5 se muestra un
ejemplo de esta topologa de sistema telefnico.
-8En las ltimas dcadas y hasta hace no ms de unos cinco aos, la red telefnica dominante a
nivel mundial estaba representada por la PSTN. Sin embargo, en estos ltimos aos han surgido
diversas alternativas que permiten la transmisin de voz a travs de las redes de informacin, entre
ellas redes mviles, ISDN, Internet.
Usuario 1
Usuario 6
Usuario 7
Usuario
12
Usuario 2
Red de
interconexin
Central 1
Usuario 5
CSA de la
Central 1
Usuario 8
Usuario 3
Central 2
Usuario
11
Usuario 4
Usuario 9
Usuario
10
CSA de la
Central 2
ltima milla
Central
Tandem
Central
Telefnica
Abonados
Figura 6. Red Telefnica
Informacin audible por el suscriptor (tono de invitacin a discar, tono de repique y tono de
ocupado) y para el usuario llamado (seal de repique).
Transmisin del nmero marcado a las centrales que intentarn completar la conexin.
resumen,
las
funciones
de
sealizacin
se
pueden
clasificar
en
supervisin,
- 10 progreso proporcionan informacin del estado en que se encuentra la llamada como por ejemplo: tono
de congestin, tono de progreso, fuera de servicio, fuera del rea de cobertura, tono de invitacin a
marcar. Por ltimo, los mensajes de gestin sirven para el mantenimiento y control de la red.
3.4.1. Estructura de sealizacin
Cuando se habla de sealizacin es importante destacar que la misma debe ser considerada en
dos contextos: la sealizacin entre un suscriptor y una central, y la sealizacin entre dos centrales.
La sealizacin entre un telfono u otro dispositivo de suscriptor y la central final a la que ste
se vincula, es en un sentido amplio determinada por las caractersticas del dispositivo del suscriptor. La
sealizacin entre centrales se da por completo central-a-central; este tipo de sealizacin no slo
tiene que ver con la gestin de llamadas del suscriptor, sino tambin con la gestin de la red misma;
es por ello que se requiere un repertorio ms complejo de comandos, respuestas y parmetros.
La sealizacin entre centrales, puede dividirse entonces en Sealizacin por Canal Asociado
(SAC) en la cual la sealizacin y la voz viajan por un mismo canal y Sealizacin por Canal Comn
(SCC), donde la sealizacin es enviada por un canal diferente a los canales por donde se transmite la
voz. En la red de sealizacin por canal comn se pueden emplear a su vez, dos modos de operacin.
En el modo de operacin asociado, el canal de sealizacin est asociado con los canales que llevan la
informacin, en el sentido de que viajan por la misma ruta fsica, es decir, utilizando los mismos
troncales. Para el modo de operacin cuasi-asociado se instalan los nodos adicionales de transferencia
(STP), creando as una red de sealizacin prcticamente independiente de la red de voz. Los
mensajes de sealizacin se envan entre dos o ms enlaces (nodos de sealizacin, SP), haciendo
trnsito sobre uno o ms puntos de transferencia de sealizacin. [10]. En las Figuras 7 y 8 se pueden
observar estos tipos de sealizacin por canal comn.
Conversacin
SP
SP
Sealizacin
Figura 7. Modo de operacin asociado
- 11 -
SP
Conversacin
STP
SP
STP
Sealizacin
POTS
El viejo servicio telefnico POTS, Plain Old Telephone System se refiere al servicio de
telefona estndar, ofrecido en los inicios de las redes telefnicas. La red te telefona bsica tena como
premisa la transmisin de voz entre los usuarios. En los inicios, los sistemas realizaban la conmutacin
mediante centrales telefnicas manuales, por lo que los operadores eran los que establecan un enlace
fsico entre los dos telfonos de los abonados.
Posteriormente, con los avances tecnolgicos se implementaron los sistemas de marcado por
pulsos, stos eran generados por el abonado que llamaba y descifrados por las centrales de
conmutacin las cuales haban sustituido sus operadores por unos componentes electromecnicos
llamados rels [12].
Con el paso de los aos, los avances permitieron digitalizar las lneas telefnicas, y gracias al
sistema de Multiplexacin por Divisin de Tiempo TDM, Time Division Multiplexing, y la Modulacin
por Pulsos PCM, Pulse Code Modulation, la seal que llegaba a las centrales por parte del abonado
era transformada de analgica a digital, y posteriormente se volva a transformar a analgica cuando
se iba a enviar al receptor. La razn de transformar la seal a digital era que este tipo de formato
permita una transmisin ms rpida entre las centrales. Esta nueva era de comunicacin digital dej
atrs muchas limitaciones existentes en las primeras redes analgicas y nos llev a la conmutacin de
circuitos. Mediante la modulacin de pulsos, se muestrea a una tasa de 125S, 8000
muestras/segundo lo que implica que las seales digitales se transmiten a 64 Kbps (DS0).
- 12 Para agrupar las seales se emplea la tcnica TDM, este esquema presenta dos estndares. El
estndar Europeo, conocido como E1 presenta 32 ranuras de tiempo de las cuales 30 son usadas para
canales de voz, y 2 para sincronizacin y sealizacin. Por su parte, el estndar Americano T1 presenta
24 canales de voz y utiliza un bit para sealizacin.
3.4.2.2.
PSTN
La Red Telefnica Pblica Conmutada PSTN, Public Switched Telephone Network, es una red
con conmutacin de circuitos tradicional, optimizada para comunicaciones de voz. La PSTN garantiza la
calidad de servicio QoS al dedicar el circuito a la llamada hasta que sta culmina, independientemente
de si los participantes en la llamada hablan o estn en silencio.
En esta generacin de red de telefona, los paquetes son transportados en un solo canal DS0,
mientras que la sealizacin se transmite por medio de unos paquetes separados en la red conmutada.
La sealizacin ms usada es la SS7 basada en el Sistema de Sealizacin N7, y la carga til es
transportada por la red digital TDM, de esta manera, la red PSTN es conformada por la red TDM para
voz y la red SS7 para sealizacin [13]. En la Figura 9 se muestra un ejemplo de la Red Telefnica
Pblica Conmutada.
Internet
Host
PSTN
Router
Tramas
T1, E1
SS7
Modem
SS7
Tramas
T1, E1
Telfono
Telfono
TDM
Central A
Fax
Central B
Conmutacin de Circuitos
Fax
3.4.2.3.
NGN
El trmino Redes de Nueva Generacin NGN, New Generation Networks, se usa para definir
redes las cuales debido a su separacin formal en diversas capas, y el uso de interfaces abiertas,
ofrece a los proveedores y abastecedores de servicios una plataforma que pueda desarrollarse paso a
paso, para desplegar y manejar servicios innovadores [14].
A diferencia de la red PSTN, este tipo de redes permite el transporte de voz, datos, video y fax
usando la tecnologa de conmutacin de paquetes IP. Tanto la sealizacin como la voz se transmiten
- 13 en la misma red de conmutacin de paquetes, adoptando para ello el concepto de VoIP. En la Figura
10 se puede observar la arquitectura de una red NGN.
Sealizacin
y Control de
Llamadas
Internet
Fax
Fax
Seales sobre IP
Telfono
Gateway
Gateway
Telfono
Red IP
Host
Host
Figura 10. Generacin NGN
Internacional
Telecommunications Union Standarization Sector, define los procedimientos y protocolos por los
cuales los elementos de las redes pblicas de telefona intercambian informacin sobre una red para
permitir la gestin, enrutamiento y control de las llamadas telefnicas, proporcionando una estructura
universal para la sealizacin de la red telefnica, mensajera, interconexin y mantenimiento de la
red.
- 14 En este estndar se definen las tres topologas de una red de sealizacin modo asociado,
cuasi-asociado y por canal comn.
Actualmente, ste es el Sistema de Sealizacin ms usado en las redes de Telefona Pblica.
Aunque todava en muchas redes de telefona todava se usa el estndar de sealizacin R2, los
beneficios de la SS7 han impulsado a las redes telefnicas a usar dicho estndar.
3.6.1. Puntos de Sealizacin
En una red SS7, cada nodo se conoce como Punto de Sealizacin (SP), stos son los puntos
orgenes y destinos del trfico de sealizacin. La arquitectura SS7 distingue tres diferentes puntos de
sealizacin: Puntos de Conmutacin de Seal (SSP), Puntos de Transferencia de Seal (STP) y Puntos
de Control de Seal (SCP).
Los Puntos de Conmutacin de Seal son conmutadores que originan, terminan o son un paso
intermedio en las llamadas. Son capaces de enviar mensajes de sealizacin a otros SSP para
establecer o liberar conexiones o realizan consultas a una base de datos (SCP) para determinar cmo
encaminar una llamada. Los Puntos de Transferencia de Seal son los encargados de recibir y dirigir
los mensajes de sealizacin hacia el destinatario correcto, por lo que desempean funciones de ruteo.
Los Puntos de Control de Sealizacin son entidades de la red que ofrecen una lgica complementaria,
utilizada para ofrecer servicios adicionales. Bsicamente se trata de bases de datos que proveen
caractersticas avanzadas como por ejemplo, servicios a nmeros gratuitos 800. [15]. En la Figura 11
se muestran los diferentes puntos de sealizacin en una red SS7, as como las relaciones entre ellos.
OMA
ASE
TCAP
Presentacin
Sesin
Transporte
ISDNUP
ISP
SCCP
Red
MTP Nivel 3
Enlace de datos
MTP Nivel 2
Nivel fsico
MTP Nivel 1
Modelo OSI
Los tres niveles ms bajos lo ocupan el nivel de la transferencia de mensajes MTP Message
Transfer Part, la cual est compuesta por tres partes, que juntas son responsables de llevar un
mensaje desde su origen hasta su destino. La capa MTP-1 es equivalente al nivel Fsico del Modelo
OSI. Define las caractersticas funcionales, elctricas y fsicas del enlace de sealizacin digital. Las
interfaces fsicas definidas incluyen: E1 (2048 Kb/s, 32 canales de 64 Kb/s), DS-1 (1544 Kbps, 24
canales de 64Kbps), V.35 (64 Kbps), DS-0 (64 Kbps) y DS-0A (56 Kbps).
El nivel 2 de MTP es equivalente a la capa de Enlace del Modelo OSI. Tiene como funcin
asegurar la transmisin sin errores extremo a extremo de un mensaje a travs del enlace de
sealizacin. Implementa control de flujo, validacin de la secuencia de los mensajes y control de
errores. Cuando se produce un error en un enlace de sealizacin, el mensaje (o el conjunto de
mensajes) es retransmitido [17].
El nivel 3 de MTP es equivalente a la capa de Red del Modelo OSI. Proporciona enrutamiento
entre dos puntos de sealizacin de la red SS7. Tiene como funcin controlar el trfico cuando ocurren
congestiones en la red, as como de re-enrutar trfico para evitar enlaces y puntos de sealizacin
daados.
En un nivel superior se presentan dos opciones: la Parte de Usuario ISUP, que es un protocolo
de sealizacin que provee servicios a aplicaciones ISUP, sin embargo tambin puede usarse en
aplicaciones que no sean de este tipo, y bsicamente se ocupa de la iniciacin y terminacin de
llamadas telefnicas entre SSPs. Este protocolo es orientado a conexin. La segunda opcin es el
Topologas Fsicas
La topologa fsica de una red se refiere al patrn que forman los nodos conectados a la red,
sin tomar en cuenta los tipos de dispositivos, los mtodos de conectividad o las direcciones en dicha
red [18].
Las topologas de red ms comunes son: red en bus, donde cada computadora est conectada
a un segmento de cable lineal que recorre la red de un extremo al otro (ver Figura 13), red en anillo,
donde los nodos estn unidos formando un crculo lgico (ver Figura 14) y red en estrella, siendo esta
la ms antigua, donde las computadoras son conectadas a travs de un dispositivo concentrador que
regula el paso de informacin entre las mismas (ver Figura 15) [19].
- 17 -
Figura
Topologas Lgicas
La topologa lgica de una red define el comportamiento de los equipos para acceder al medio
compartido que los interconecta adems de especificar el mtodo que usan para comunicarse con el
resto de los nodos y la ruta que toman los datos de la red entre los diferentes nodos de la misma [19].
Hay dos formas principales de acceder a los medios, una de ellas es haciendo un uso ordenado del
medio dando un turno a cada equipo para transmitir por un tiempo determinado y luego ste pasa el
turno al prximo equipo. La otra forma de acceso es la que ha demostrado mayor rapidez y efectividad
donde los equipos antes de transmitir escuchan el medio para evitar transmitir mientras otro equipo lo
est haciendo, en caso de que ocurra una colisin, es decir, que dos equipos traten de transmitir al
mismo tiempo ambos equipos dejan de transmitir y luego de un tiempo de espera (aleatorio para cada
equipo, el cual depende de la jerarqua que tenga dentro de la red) intentan retransmitir el mensaje.
Modelo OSI
Este modelo, mostrado en la Figura 16, proporciona el marco de referencia para poder
entender cmo los productos de las comunicaciones pueden ser construidos y comunicarse entre si.
APLICACIN
PRESENTACIN
SESIN
TRANSPORTE
RED
ENLACE DE DATOS
FISICA
TRANSMISIN BINARIA
Capa 1: cubre la compatibilidad de velocidad. La transmisin elctrica puede ser regida por
dos parmetros, velocidad y distancia; la mayor velocidad de transmisin y la mayor
distancia posible. La capa 1 es el hardware de las comunicaciones, el cableado [20]. Esta
capa define los cables y conectores a usar para la conexin as como tambin la
transmisin a realizar incluyendo los niveles de voltaje y la velocidad de la misma.
- 19
Capa 5: la capa de sesin provee la conexin lgica uno a uno o extremo a extremo [20].
Establece, inicia y termina las sesiones de comunicacin entre los equipos.
Modelo TCP/IP
El modelo TCP/IP es el ms comn utilizado por todos los ordenadores conectados a Internet,
de manera que stos puedan comunicarse entre s, sin importar que hardware o que software
contengan [21]. Fue creado por el departamento de defensa de EE.UU. convirtindose luego en el
modelo de red mas usado y en el cual se basa la Internet. Est compuesto por cuatro capas:
Aplicacin, Transporte, Internet y Acceso a la Red; stas pueden apreciarse en la Figura 17.
Aplicacin
Transporte
Red
Enlace de Datos
Fsica
Figura 17. Capas del modelo TCP/IP
La Capa de Aplicacin engloba las funciones de las capas de Aplicacin, Presentacin y Sesin
del modelo OSI. Se incluyen protocolos destinados a proporcionar servicios tales como correo
electrnico (SMTP), transferencia de ficheros (FTP), conexin remota (TELNET) y otros como el
protocolo HTTP (Hypertext Transfer Protocol) [21].
La Capa de Transporte equivale a la capa de Transporte del modelo OSI. Los protocolos de
este nivel, tales como TCP y UDP, se encargan de manejar los datos y proporcionar la fiabilidad
necesaria en el transporte de los mismos [21].
La Capa de Internet equivale a la capa de Red del modelo OSI. Incluye al protocolo IP, que se
encarga de enviar los paquetes de informacin a sus destinos correspondientes. Es utilizado con esta
finalidad por los protocolos del nivel de transporte.
- 20 La capa de Enlace de Datos especifica el mtodo de transporte de los paquetes sobre la capa
fsica.
La capa Fsica describe las caractersticas fsicas de la comunicacin, como las convenciones
sobre la naturaleza del medio usado para la comunicacin ya sea por cable, fibra ptica o radio, y todo
lo relativo a los detalles como los conectores, cdigos de canales, modulacin, potencias de seal, etc,
3.7.3. El protocolo IP
El protocolo de IP, Internet Protocol, es la base fundamental de la Internet. Las principales
caractersticas de este protocolo son:
Slo se realiza verificacin por suma al encabezado del paquete, no a los datos que ste
contiene.
- 21 32 bits
DIRECCIONES IP
10
110
1110
11110
RED
1.0.0.0 a
127.255.255.255
HOST
RED
128.0.0.0 a
191.255.255.255
HOST
RED
HOST
Direccin multitransmisin
Reservado para uso futuro
192.0.0.0 a
223.255.255.255
224.0.0.0 a
239.255.255.255
240.0.0.0.0 a
247.255.255.255
PUERTO ORIGEN
PUERTO DESTINO
NMERO DE SECUENCIA
CONFIRMACIN PIGGY BACK (ACK)
Long.
C
UAPRSF
CHECKSUM
TAMAO DE VENTANA
PUNTERO URGENTE
DATOS
PUERTO ORIGEN
PUERTO DESTINO
LONGITUD UDP
CHECKSUM
DATOS
- 23 3.8.3. Routers
Los routers son equipos que reenvan los paquetes de datos entre las redes. Un router est
conectado, como mnimo, entre dos redes, comnmente entre dos LANs o dos WANs.
Los routers usan los encabezados y las tablas de enrutamiento para determinar el mejor
camino para reenviar los paquetes, y usan protocolos como el ICMP para comunicarse con cada uno y
configurar la mejor ruta entre dos hosts [26].
3.8.4. Gateways
El termino gateway se refiere a un dispositivo que permite la conversin de protocolos (en
especial los de la capa de aplicacin) entre distintos tipos de redes o aplicaciones. Puede adems
trabajar como enrutador de una red local hacia una red exterior.
Una puerta de enlace o gateway es normalmente un equipo informtico configurado para
dotar a las mquinas de una red local (LAN) conectadas a l de un acceso hacia una red exterior,
generalmente realizando para ello operaciones de traduccin de direcciones IP (NAT: Network
Address Translation). Esta capacidad de traduccin de direcciones permite aplicar una tcnica llamada
IP Masquerading (enmascaramiento de IP), usada muy a menudo para dar acceso a Internet a los
equipos de una red de rea local compartiendo una nica conexin a Internet, y por tanto, una nica
direccin IP externa. Se podra decir que un gateway, o puerta de enlace, es un router que conecta
dos redes [27].
3.8.5. Ordenadores y Servidores
Los ordenadores al igual que los servidores son equipos que permiten realizar algunas tareas
en beneficio de otras aplicaciones llamadas clientes. Algunos servicios habituales son los servicios de
archivos, que permiten a los usuarios almacenar y acceder a los archivos de un ordenador y los
servicios de aplicaciones, que realizan tareas en beneficio directo del usuario final. Es posible que un
ordenador cumpla simultneamente las funciones de cliente y de servidor [28]. Estos servidores se
encuentran ya en la capa 7, ya que manejan los paquetes hasta el nivel de aplicacin para mostrarlos
al usuario de una forma apropiada y con el programa adecuado.
3.8.6. VPN
Una VPN es una red privada virtual que usa la red pblica, usualmente el Internet, para
conectar lugares o usuarios remotos [29]. Se extiende, mediante un proceso de encapsulacin y
encriptacin, desde los paquetes de datos a distintos puntos remotos mediante el uso de unas
infraestructuras pblicas de transporte. Los paquetes de datos de la red privada viajan por medio de
un "tnel" definido en la red pblica.
Administracin de direcciones: debe establecer una direccin del cliente en la red en la red
privada y debe cerciorarse que las direcciones privadas se conserven as.
Codificacin de datos: los datos a transmitir deben ser previamente encriptados para que
no puedan ser ledos por clientes no autorizados de la red.
Administracin de claves: la VPN debe generar y renovar las claves de codificacin para el
cliente y el servidor.
Soporte a protocolos mltiples: debe manejar los protocolos comunes que se utilizan en la
red pblica [30].
Las VPN conservan la seguridad de la red privada de una forma econmica ya que no se
requiere de un medio fsico para asegurar la conexin.
3.9. Sistema operativo Linux. Fedora Core 4
Un sistema operativo es un conjunto de programas de computadoras que permiten la
comunicacin entre un computador y su usuario adems de administrar y utilizar los recursos del
mismo de la manera ms eficiente posible. El sistema operativo de un equipo puede ser visto como
una capa intermediaria entre el Hardware y el usuario, que facilita al mismo la realizacin de tareas sin
tener que llegar a un gran nivel de detalle para el manejo del hardware.
El sistema Fedora Core 4 es un software libre, patrocinado por Red Hat, de uso sencillo y
plataforma de propsito general basada en Linux.
Fedora Core 4 es una de las ltimas versiones (ya existe la versin 5 y la versin 6) de la
popular plataforma Fedora Core con una cantidad de nuevas caractersticas sobre las versiones
anteriores; mejoras en la presentacin del escritorio, nuevas herramientas, soporte para arquitectura
de PowerPC (PPC), mejoras en la seguridad y plataforma ms slida, entre otras [31].
3.10.
- 25 dando lugar a lo que se denomina red multi-servicio. La convergencia de distintas redes en una sola
representa un gran ahorro tanto en mantenimiento como en su gestin y uso [32].
De acuerdo a lo mencionado anteriormente, las Redes de Nueva Generacin NGN (Next
Generation Networks) tienen como objetivo esencial lograr la convergencia de las redes telefnicas y
de datos enviando la informacin va paquetes IP. Estos paquetes enviados son diferenciados por
protocolos de acuerdo al tipo y gracias a ello pueden manejarse de distinta manera para poder
garantizar la Calidad de Servicio QoS (Quality of Service).
3.10.1. VoIP
Como se explic en la seccin anterior, se entiende por Voz sobre IP VoIP (Voice over
Internet Protocol) a la digitalizacin de la voz y su transmisin a travs de la red, usando para ello la
conmutacin de paquetes, en la cual la informacin se transfiere fragmentada. De esta forma, cada
paquete se transmite a la direccin de destino de forma independiente, y es all donde vuelve a
reagruparse y se recupera la informacin.
Debido a que en VoIP el tratamiento de voz es idntico al de datos, se permite la utilizacin de
una nica red lo cual representa un importante ahorro, eso junto con la capacidad de reducir el ancho
de banda para la transmisin de la voz, la movilidad ofrecida por la red IP, y la posibilidad de ofrecer
nuevos servicios son algunas de las razones que han impulsado el desarrollo de la transmisin de Voz
sobre IP.
H.323
H.450
H.225.0
TCP
H.235
H.24
SIP
H.22
H.225
RAS
5
UDP
M
T
P
3
M2U
I
S S
U C
P C
P
M3U
Media Gtwy
TCAP
MGC
H.248
MEGACO
Media
DATA
AUDIO
Video
codec
codec
encoding protocol
Not
T.125
T.127
RTCP
RTP
SUA
SCTP
UDP
IP
UDP
R
T
S
P
TT
.
1
2
0
T.124
T.122/
T.125
T.123
TCP
El Protocolo H.323
MCU
Red PSTN
Red IP
Gateway
Gatekeeper
Terminales
Figura 23. Estructura de una red de sealizacin H.323
Gatekeepers: actan como punto central de todas las llamadas dentro de una zona, y
suministran servicios a los terminales registrados y realizan control de llamadas.
Proporcionan dos funciones importantes de control de llamada.
Gateways: son los sistemas encargados de permitir que los equipos H.323 puedan operar con
redes que utilicen otros protocolos de sealizacin, como terminales PSTN, ISDN, SIP, entre otros.
Terminales: son los puntos finales en la comunicacin. Proporcionan una comunicacin de voz,
datos y video en tiempo real. H.323 especifica los modos de operacin requeridos para que los
terminales de audio, video y datos trabajen conjuntamente. Para permitir que los terminales puedan
interoperar entre s, es necesario que puedan soportar voz, por ejemplo con el codec G.711. de esta
forma, el soporte para videos y datos es opcional para un Terminal H.323.
Todos los terminales deben soportar el protocolo H.245, el cual es usado para negociar el uso
del canal y las capacidades. Otros tres componentes requeridos son: Q.931 para la sealizacin y
Protocolo SIP
En este trabajo se us SIP como protocolo de sealizacin ya que el mismo es utilizado por la
aplicacin desarrollada. Este es el modelo de sealizacin propuesto por la IETF en el RFC 2543 para
las redes de VoIP, el cual establece al Protocolo de Inicio de Sesin SIP (Session Initiation Protocol)
como un protocolo de la capa de aplicacin cuya funcin es crear, modificar y terminar sesiones
multimedia y llamadas telefnicas va Internet, con uno o ms participantes [34]. SIP define dos
entidades de red bsicas: clientes y servidores. Estrictamente hablando, un cliente (tambin conocido
como agente usuario cliente) es un programa de aplicacin que enva peticiones SIP. Por su parte, un
servidor es una entidad que responde las peticiones. De esta forma, SIP es un protocolo clienteservidor. Las llamadas de VoIP que usan el protocolo SIP son originadas por el cliente y terminadas
por el servidor.
Un cliente podra ser encontrado dentro de un dispositivo de usuarios, el cual puede ser una
PC o un telfono SIP, pero tambin podran ser encontrados dentro de la misma plataforma como
servidor. Por ejemplo, SIP habilita el uso de Proxies, los cuales actan como clientes y servidores [2].
Un sistema SIP est basado en un modelo cliente/servidor y esencialmente se encuentra
formado por las entidades que se muestran en la Figura 24.
Red PSTN
Gateway
Proxy Server
Proxy Server
User Agents
Location
Redirect
Registrar Server
Los Agentes de Usuario UA (User Agent) son las entidades lgicas terminales de VoIP
encargadas del intercambio de mensajes SIP. Un dispositivo SIP puede funcionar tanto como Agente
de Usuario Cliente UAC (User Agent Client) y Agente de Usuario Servidor UAS (User Agent Server).
Un Agente de Usuario Cliente inicia peticiones SIP y recibe respuestas, un Agente de Usuario Servidor,
recibe y procesa las peticiones SIP y luego reenva las respuestas correspondientes [35].
Determinacin del medio a usar, segn la descripcin de la sesin a la que se invit al usuario.
Inicio de la llamada.
Finalizacin de la llamada.
Las peticiones SIP son caracterizadas por la lnea inicial del mensaje, llamada Request-Line,
que contiene el nombre del mtodo, el identificador del destinatario de la peticin (Request-URI) y la
versin del protocolo SIP.
La RFC 3261 define seis mtodos diferentes bsicos SIP que describen las peticiones de los
clientes:
INVITE: es usado para iniciar sesin. Para una simple llamada entre dos partes, el mensaje
INVITE es usado para iniciar la llamada, este mensaje incluye informacin referente a la parte
que llama, la parte llamada, as como el tipo de medios intercambiados.
ACK: este mtodo es usado como confirmacin de que la repuesta final ha sido recibida.
- 31
REGISTER: es utilizado por un cliente del Agente de Usuario para abrir una sesin y registrar
su direccin con un servidor SIP.
Los cdigos de estado definidos en SIP presentan valores entre 100 y 699, siendo el primer
dgito del cdigo el que indica la clase de respuesta. Entonces, todos los cdigos de estado entre 100 y
199 pertenecen a una misma clase. Las diferentes clases existentes se muestran a continuacin:
1XX: Mensaje provisional.
2XX: respuesta satisfactoria (solamente el cdigo 200 est definido, lo cual significa que se ha
entendido la peticin y se ha realizado. En el caso de un mensaje INVITE, la respuesta 200 es usada
para indicar que la parte llamada ha aceptado la llamada).
3XX: mensaje de redireccionamiento.
4XX: Respuesta fallida
5XX: Falla de servidor
6XX: Falla Global
3.10.3. Trfico Telefnico
El concepto de trfico telefnico est asociado al de ocupacin. Se dice que un circuito
telefnico est cursando trfico cuando est ocupado, no si est libre.
Cuando se produce una comunicacin telefnica entre 2 abonados, adems de ellos se ocupan
una serie de elementos intermedios como las centrales telefnicas y los dispositivos usados para
interconectarlas.
El trfico telefnico es medible en trminos de tiempo y depende del nmero de
comunicaciones y de la duracin de las mismas [37].
En una red de telecomunicaciones, trfico se refiere al volumen de informacin transportado o
procesado por la red. La informacin puede consistir en data relacionada con el intercambio de
informacin entre los usuarios como voz, imgenes, archivos, as como tambin el intercambio de
informacin entre los elementos de la red como la data de sealizacin en las redes de circuitos,
informacin de enrutamiento en las redes IP, data de operacin, entre otros [38].
El promedio de nmero de llamadas simultneas N en progreso se conoce como intensidad de
trfico y su unidad de medida es el Erlang, que representa la ocupacin de una llamada por el espacio
de una hora. Este concepto es fundamental y define la base para medir el tamao de una red.
Entonces si un recurso (circuito digital, virtual, entre otros) se asocia con sus correspondientes
llamadas N, una red con la capacidad de manejar al menos N recursos ser requerida para manejar
ese trfico.
- 33 3.11.
Resumen entre sistema de telefona tradicional o bsico y paquetizado
(VoIP).
Para concluir se muestra a continuacin, en la Tabla 1, una serie de comparaciones entre
ambos sistemas de telefona.
Conmutacin de Circuitos
Voz Paquetizada
Centrales Telefnicas
Rutas y Troncales
Lneas de Subscriptores
Terminales
*
*
*
*
*
*
* Estrella
* Bus
* Anillo
* Bus
* Cualquiera usada en
redes IP.
Redes
* Dominio de la red
pblica sobre la red
privada
* 64kbps a tiempo
completo y slo para
canal de voz
* Depende de la
compresin usada y el
canal es compartido
con el trfico de datos.
Elementos
Bsicos
Topologa
Transmisin
*
*
*
*
* Combinacin del
mundo analgico con el
digital.
* Tcnicas FDM con
TDM para asignacin
de canales de voz.
* Modems de velocidad
limitada hasta 230kbps.
Gateways
Gatekeepers
MCU
Call Agent
Servidores
Terminales
* Seales digitalizadas.
* Informacin
transmitida por medio
de paquetes usando
protocolos de redes de
datos.
* Redes de alta
capacidad.
Sealizacin
* Se requieren diversos
tipos de sealizacin.
* En nuestro pas se
usa el MFCR2 y el SS7
* Se usa un slo
protocolo a lo largo del
proceso.
* Los protocolos ms
comunes son el SIP y el
H.323
Teleservicios
Bsicos
* Llamadas entre
terminales fijos dentro
de la red pblica.
* Llamadas entre
equipos fijos dentro de
la red privada y hacia
terminales fijos dentro
de la red pblica.
- 34 Conmutacin de Circuitos
Transmisin de
Fax
Otros Servicios
* Envo de imgenes
con poca resolucin y
con velocidad limitada.
Voz Paquetizada
* Envo de imgenes de
mayor calidad
almacenadas en el
computador o impresas
mediante el fax.
Es un Servidor SIP robusto que puede incluir: Servidor Proxy, Servidor de Localizacin,
Servidor de redireccionamiento, Servidor de Registro.
Uso de pseudovariables para acceder y manejar parte de los mensajes SIP y atributos
especficos de los usuarios y servidor.
Asterisk
Es una aplicacin de cdigo abierto3 basada en una PBX tal como si fuera una central de tipo
hardware. Asterisk ofrece las funciones propias de las centrales tradicionales y adems caractersticas
avanzadas, pudiendo trabajar tanto con sistemas de telefona estndar tradicionales como con
sistemas de Voz sobre IP. Trabaja con VoIP con los protocolos SIP, H.323, MGCP e IAX, por lo que
1
2
3
Protocolo abierto y extensible basado en XML ideado para mensajera instantnea [41].
Protocolo usado para controlar filtros de paquetes usando controladores externos.
Software Libre
- 36 incluye las ventajas que ofrece el trabajar con redes de datos paquetizadas. La solucin de telefona
basada en Asterisk dispone de un extenso conjunto de funciones, entre las que se pueden mencionar:
Conexin de los empleados trabajando desde su casa a las redes de la oficina usando para ello
las redes de banda ancha [43].
Asterisk fue originalmente desarrollado para el sistema operativo Linux, pero actualmente
tambin funciona en BSD, MacOSX, Solaris y Microsoft Windows [44]. Est escrito en lenguaje C.
Para una mejor visin, se presenta a continuacin, en la Tabla 2, una lista de criterios tomados
para una mejor comparacin junto con sus detalles dentro de cada una de las opciones.
Criterios
SER
Frecuencia de
Liberacin /
Nuevas
Caractersticas
Ciclos de liberacin
largos, se necesita usar
la versin experimental
o versiones HEAD
para nuevas
caractersticas
Comunidad de
Usuarios
Buena comunidad
establecida por la
cuenta de correo
serusers@iptel.org.
Varios contribuyentes
activos. Las preguntas o
comentarios deben ser
escritas correctamente
para poder obtener
respuesta alguna.
Calidad /
Estabilidad de
las liberaciones
Documentacin
El manual de
Administrador en
iptel.org est
OpenSER
Liberaciones menos
frecuentes (0.a.x) con
nuevas caractersticas.
Cambios mayores
disponibles en
liberaciones mayores
(0.a.x), pero no hay
historia de esto por
ahora.
La alta concentracin en
nuevas caractersticas y
las liberaciones
frecuentes aumentan la
aparicin de gusanos
en configuraciones
estables. La poltica
para la estabilidad es
liberar las
configuraciones a
menudo.
Muy enfocados en la
documentacin. Los
archivos README de
Asterisk
Liberaciones frecuentes
con nuevas caractersticas
Digium, el creador, ha
construido un foro en su
sitio web. Es el mejor
para que los novatos y
dems usuarios
respondan sus dudas de
una forma amigable. La
informacin se presenta
en un formato
organizado.
Buena documentacin, en
la pgina principal se
encuentra el manual y
- 37 desactualizado, pero es
til. La fuente principal
de la documentacin de
los mdulos son los
README que se
encuentran en cada
uno. La documentacin
del OpenSER 0.9.x es
recomendada y es un
buen comienzo.
Soporte para
varias
arquitecturas
Participacin
del desarrollo
Soporte
comercial
Funcionalidad
Facilidad para
Customizar
La persona responsable
de compilar las
arquitecturas trabaja en
SER.
algunos ejemplos de
configuracin.
Difcil de decir,
probablemente los
desarrolladores de
OpenSER tratan de
fusionar en las
arquitecturas los
cambios del SER CVS
(Sistema de Versiones
Concurrentes)
Soporte de varios
protocolos y mltiples
hardwares y sistemas
operativos.
Tiene el soporte de la
empresa DigiumTM
Orientado a las PBXs
Varios cdigos fuente,
cada uno especializado en
un rea especfica del
sistema.
Se hicieron consultas por medio de Internet como apoyo al material bibliogrfico recopilado.
Se hizo un estudio de las necesidades de CANTV referentes al enrutamiento del Voz sobre IP.
Se seleccion la aplicacin OpenSER como solucin al Servidor Proxy SIP a ser desarrollado.
- 39
su ordenador, gestionar los recursos de la mquina ejecutando servicios para los procesos, as como
brindar una interfase al usuario para ejecutar instrucciones [45].
Debido a las ventajas que ofrece, se seleccion Linux como Sistema Operativo.
Se investig sobre las herramientas disponibles generadoras de trfico para el protocolo SIP
eligiendo para ello SIPp.
Se estudiaron diversas opciones para el seguimiento de las trazas de los mensajes SIP.
Se escogieron dos programas para el monitoreo y anlisis de las trazas: Ngrep y Ethereal.
Se analizaron los mdulos que lo forman as como los parmetros de configuracin relevantes.
Para instalar Fedora Core, se debe iniciar el equipo por medio del cdrom. Actualmente, la
mayora de los equipos presentan como primer equipo de arranque el cdrom, en caso de no ser as, se
debe entrar a la BIOS del computador y elegir cdrom como dispositivo de inicio.
La instalacin de Fedora incluye la desfragmentacin del disco duro para ordenar la
distribucin fsica de los datos, as como un particionamiento del mismo.
Luego se comienza con la seleccin de las opciones de instalacin, donde de eligen las
opciones de configuracin como IP, mscara de red, Gateway, DNS Primario, DNS Secundario, usuario
y contrasea, as como el grupo de paquetes que deben instalarse, todo esto en funcin de las
necesidades que se tengan. Para mayores detalles acerca de la instalacin del Sistema Operativo
Fedora Core 4 ver Anexo 1).
Fedora Core 4 tiene la ventaja de que trae incluidos los paquetes para a instalacin de MySQL,
Apache, FTP, entre otros. Es por ello que para la instalacin de los mismos simplemente deben
seleccionarse entre el grupo de paquetes a instalar.
OpenSER
Instalacin
- 41 openser-cpl-1.0.0-rhel3.0.i386.rpm
openser-mysql-1.0.0-rhel3.0.i386.rpm
Reiniciar los servicios openser, httpd, vsftpd, mysqld, crond (para mayores
detalles ver Anexo1, seccin 6.1).
Configuracin
Para la configuracin de OpenSER se sigui una lgica estructurada con el fin de mantener
una cierta organizacin, debido a ello, OpenSER puede definirse bsicamente en siete secciones:
Seccin de Definiciones Globales, Seccin de Mdulos, Seccin de configuracin de los Mdulos,
Bloque de Ruta Principal, Bloque de Ruta Secundaria, Bloque de Ruta de Respuesta y Bloque de Ruta
de Falla. El proceso seguido para la configuracin de OpenSER se muestra a continuacin:
VPN
Debido a que el servidor se encuentra dentro de la red privada de CANTV, es necesario poder
tener acceso al mismo desde la red pblica, para ello se usa la VPN ya que sta permite una extensin
de la red local sobre la red pblica o no controlada.
Para crear una Red Privada Virtual es necesario dirigirse al panel de control de la PC, abrir la
carpeta Conexiones de Red, y en el men Archivo se selecciona la opcin Nueva Conexin. (Los
detalles de configuracin se muestran en el Anexo1, seccin 10.6)
El acceso remoto permite acceder desde una ubicacin externa y de manera segura a la
informacin almacenada en el servidor, tal y como si se encontrara trabajando fsicamente en el
- 42 mismo. Para lograr la conexin desde Windows debe crearse un cliente SSH para acceso remoto,
pudiendo usar para ello el programa Putty.
Este programa es un ejecutable, por lo tanto luego de descargarlo slo es necesario realizar la
configuracin del mismo. (Los pasos para la instalacin del Programa Putty se muestran en el Anexo1,
seccin 10.4).
Ngrep
Esta herramienta permite hacer un monitoreo de la red, es decir se puede analizar el trfico de
la red de manera similar a como lo hacen otros sniffers de red. Usando capacidades avanzadas de
comparacin de strings, Ngrep puede capturar los paquetes que se encuentran dentro de la red.
Ethereal
- 43
Softphone Xlite
Se instal el Programa.
A fin de determinar el trfico del protocolo SIP soportado por la aplicacin desarrollada, fue
necesario hacer pruebas de trfico. Para ello se utiliz el programa SIPp, esta herramienta de prueba
permite crear mltiples llamadas usando los mtodos INVITE, y BYE. En el Anexo1, seccin 10.9 se
muestra la explicacin del uso del programa.
4.4.2. Aplicacin Web
Para el desarrollo de la Aplicacin Web fue necesario trabajar con la herramienta Macromedia
Dreamweaver como editor de HTML para el diseo visual y la administracin de sitios6 y pginas Web.
Para cargar el sitio en el Servidor Web, se puede usar Dreamweaver con FTP, de esta forma se
pueden controlar y mantener automticamente los vnculos, a medida que se realicen modificaciones
en las pginas.
Diseo de cada una de las pginas que conforman la aplicacin Web del administrador
de OpenSER.
5
6
nivel de redireccionamientos hechos por los links, y la restriccin de acceso a la pgina mediante la
peticin de usuario y clave.
Se comprob el correcto funcionamiento de la configuracin de OpenSER va Web. Esto abarca
la correcta inclusin del cdigo escrito va Web en el archivo de configuracin de OpenSER mediante
los puntos de insercin7.
4.5.3. Pruebas de trfico
CAPTULO V: RESULTADOS
5.1. Seleccin de las herramientas
Despus de haber realizado y analizado la tabla comparativa expuesta en el Captulo 3 en la
seccin 3.11, se puede observar que todos los softwares investigados tienen en comn un esquema de
desarrollo bajo el concepto de software libre, es decir son programas en los cuales el usuario puede
disponer del cdigo fuente sin restricciones y que puede a su vez modificar y redistribuir sin
limitaciones. Esto, asociado a una serie de ventajas entre las cuales se pueden mencionar:
Al disponer del cdigo fuente de los programas en su totalidad, stos pueden ser
analizados por terceras personas ajenas a sus autores en busca de fallas de diseo o de
implementacin.
Las caractersticas del software libre hacen que no sea lgico cargar costes sobre el
software en s (dado que se distribuye sin cargo), lo que permite que este tipo de software
pueda ser utilizado por organizaciones y personas con menos recursos econmicos. Esto
se presenta como una ventaja cuando se compara con los precios de lo que cuesta el
software de seguridad propietario hoy en da (licencias de firewalls, vpns, sistemas de
deteccin de intrusos, entre otras). El software libre pone en manos de cualquiera el tipo
de tecnologa que, hoy por hoy, slo podran tener grandes corporaciones [47].
Luego de esto, se tuvo que decidir cul de los softwares investigados deba ser el utilizado
para el desarrollo del Servidor Proxy SIP. Despus de realizar un anlisis detallado para los softwares
en funcin de las caractersticas ofrecidas por cada uno as como las necesidades de CANTV y el
conocimiento que se tena en la empresa de cada uno de ellos, se decidi escoger OpenSER como
solucin a la aplicacin Proxy SIP.
OpenSER constituye uno de los proyectos lderes en lo que se refiere a un Servidor SIP de
cdigo abierto. Presenta un gran conjunto de caractersticas y funcionalidades, que se encuentran
sostenidas por un desarrollo constante. Adems est soportado por una amplia comunidad de usuarios
- 46 alrededor del mundo. Este programa puede ser ejecutado en diversos Sistemas Operativos como
Linux, FreeBSD, OpenBSD, NetBSD, y Solaris [40]. Al ser OpenSER una aplicacin de licencia libre, el
mismo se pudo descargar de la pgina web oficial sin mayores inconvenientes.
Luego de haber identificado el software a utilizar para la aplicacin a desarrollar fue necesario
delimitar cmo y qu iba a incluir la misma. Esto se refiere especficamente a los mdulos necesarios,
los parmetros a configurar y las rutinas a desarrollar con el fin de que OpenSER funcionara como
Servidor Proxy.
Para la facilitar la verificacin del funcionamiento de OpenSER result fundamental contar con
un NGREP como programa de captura del trfico que pasa por la red. Esta herramienta permite
detectar a travs de la traza de la llamada (en caso de que la misma no pueda completarse) en qu
punto se est produciendo la falla.
Para la gestin de la base de datos de OpenSER se utiliz MySQL Front debido a que permite
manejar y darle mantenimiento de una forma ms amigable a las tablas existentes en la misma.
Debido a que inicialmente el servidor estaba en una ubicacin fsica lejana, fue necesario
utilizar Putty como herramienta para el acceso remoto al servidor.
Paralelamente a la configuracin de OpenSER se fue diseando y desarrollando la aplicacin
Web del administrador usando como herramienta de diseo el programa Macromedia Dreamweaver
MX 2004. Mediante esta pgina Web se le permite al administrador manejar externamente OpenSER,
es decir la inclusin de nuevas rutinas y reglas de enrutamiento, as como mdulos y parmetros, sin
necesidad de tener que acceder va consola al archivo de configuracin. As mismo, se puede tener un
manejo de la base de datos, en lo que se refiere a la inclusin, modificacin o eliminacin de prefijos
numricos usados para el enrutamiento de las llamadas, en funcin de las reglas que se hayan
desarrollado.
Un aspecto muy importante es que adems de la ejemplificacin realizada resultaba
fundamental para CANTV la realizacin de un manual Tcnico que englobara todo lo referente al
proyecto desarrollado. De acuerdo con esto, se plante que el manual a realizar deba seguir a grosso
modo la estructura descrita a continuacin:
- 47 La finalidad de este manual tcnico era que quedara asentado por completo el manejo de
OpenSER, desde el proceso de instalacin del Sistema Operativo en el servidor, hasta la puesta en
funcionamiento de la aplicacin. De esta forma CANTV se poda asegurar de contar con un Servidor
SIP del cual tuviesen un total dominio, con la garanta de poder minimizar el tiempo necesario para la
instalacin y puesta en funcionamiento del mismo. Dicho manual se encuentra en el Anexo 1.
Una vez culminado el desarrollo de la aplicacin, as como el correcto funcionamiento de la
misma, se pens que era necesario hacer un anlisis a manera de determinar el promedio de llamadas
concurrentes que OpenSER est en capacidad de manejar de forma exitosa. Para ello se descarg de
la web el software SIPp que como se mencion en la seccin 4.4.1, es una herramienta de prueba que
permite generar trfico del protocolo SIP. En la Figura 25 se muestra la lgica de envo de los
mensajes SIP.
Para la realizacin de esta prueba es necesario instalar SIPp en dos computadoras. Una de
ellas acta como Servidor, y la otra como Cliente.
En la PC que acta como servidor se configura el nmero de llamadas por segundo que se
quieren realizar as como el tiempo estimado de cada una de ellas, en funcin de esto, dicha mquina
enviar a OpenSER los mensajes SIP. Para el momento de la prueba es necesario que el archivo de
configuracin de OpenSER contenga una rutina que desve todas las peticiones de llamadas (para ello
reenva las peticiones SIP) hacia el dominio donde se encuentra instalado SIPp como cliente. Luego de
que las peticiones son enviadas por la PC que acta como servidor se puede observar a travs de la
consola el nmero de llamadas que OpenSER reenvi exitosamente.
En funcin de ello, mediante las pruebas realizadas se buscaba estimar el promedio de
llamadas que OpenSER es capaz de manejar.
Monitoreo
PC SIPp
Cliente
UAC
Servidor
OpenSER
161.196.58.48
PC SIPp
Servidor
UAS
Figura 25. Lgica de envo de los mensajes SIP para las pruebas de trfico
5.1.1. OpenSER
Para esta aplicacin se investigaron cules eran los requerimientos de hardware y las
arquitecturas que soportaba a fin de garantizar el correcto funcionamiento de la misma. stas se
muestran a continuacin:
- 48 -
Arquitecturas:
Requerimientos:
gcc o icc: gcc2.9x; 3.[12] recomendada (Trabajar con versiones anteriores pero requiere la
modificacin de algunas opciones para un mejor funcionamiento).
Flex10.
GNU11 make (en Linux corresponde al estndar make, en FreeBSD y Solaris gmake)
Versin 3.79.
GNU tar (atar en Solaris) y gzip si es necesario ejecutar make tar para trabajar.
Instalacin GNU BSD14 (en Solaris ginstall) si se quiere hacer make install, make bin,
make sunpkg.
Libmysqlclient & libz (zlib) si se quiere el soporte de la base de datos MySQL (Mdulo MySQL).
Microsoft Windows 2000 / XP Pentium III 800 MHz RAM 256 MB HD 650 MB
- 49 -
5.1.3. Ngrep
Ngrep est disponible en muchas plataformas Unix y Win32. En la Tabla 3 se muestran los
requerimientos del programa.
Sistema Operativo
Arquitectura
MacOS X +
PowerPC
Solaris 2.5.1 +
X86, SPARC
FreeBSD 2.2.5 +
X86
OpenBSD 2.4 +
X86, SPARC
NetBSD 1.5 +
X86
Alpha?
HPUX 11
PA-RISC
IRIX
MIPS
AIX 4.3.3.0
PowerPC
BeOS version 5
X86
X86
- 50 del archivo de configuracin por lo cual ser necesario revisarlo y hacer las correcciones
correspondientes.
Luego de que el archivo es compilado exitosamente se habr superado la primera etapa de las
pruebas del archivo de configuracin de OpenSER.
Posteriormente se plantearon posibles escenarios, de acuerdo a ciertas reglas de enrutamiento
requeridas por la compaa, con el fin de verificar que efectivamente OpenSER est trabajando como
se desea.
Para verificar el correcto funcionamiento se analiza conjuntamente la traza de la llamada
realizada con los mensajes de dilogo. Los mensajes de dilogo se incluyen en las rutinas de openser,
los mismos sirven para la depuracin de errores ya que mediante ellos se puede ir haciendo el
seguimiento de la ejecucin del cdigo. Referente a la traza, a travs de la misma se observa en
detalle el envo secuencial de los mensajes SIP entre cada uno de los elementos involucrados.
Pudiendo entonces detectar, ante una falla, cul es el elemento que est generando problemas.
5.2.1. Diseo
Tomando en cuenta las necesidades de la empresa se organizaron una serie de reglas para
poder cumplir con las mismas, stas se muestran en un diagrama de flujo para as poder reorganizar
las ideas y desarrollar la codificacin del archivo de configuracin.
En la Figura 27 se expone un diagrama general donde se muestra el papel que juega el
servidor SIP Proxy implementado configurado en OpenSER.
Llega un
mensaje SIP
TOMA DE
DECISIN
(Archivo
Configuracin
OpenSER)
Se enva un
mensaje SIP
(respuesta)
- 51 Mensaje SIP
10
Reenvos?
SI
Mensaje SIP
483, Too Many Hops
SI
Mensaje SIP
513, Message too big
SI
Mensaje SIP
200, OK
NO
Mensaje mayor a
2048 bytes?
NO
Method =
NOTIFY?
NO
Method =
OPTIONS?
SI
Route 1
NO
SI
Method =
CANCEL?
Terminar la llamada
NO
SI
Method = BYE?
NO
SI
Method =
REGISTER?
Autorizado?
SI
NO
Method =
INVITE?
NO
NO
Mensaje SIP
200, OK
SI
Enrutamiento
(ver ms adelante)
Mensaje SIP
401, Unauthorized
Salir
Figura 28. Estructura general del Archivo de Configuracin de OpenSER
Cuando el mtodo del mensaje recibido es INVITE, el servidor empieza a realizar un chequeo
basndose en las reglas descritas en l para as poder tomar una decisin, este proceso se conoce
como enrutamiento por medio de reglas, el cual es mostrado en la Figura 29 mediante un diagrama de
flujo.
- 52 Method = INVITE
Por URI?
SI
SI
ENRUTAMIENTO POR
FROM
SI
ENRUTAMIENTO POR
TO
SI
ENRUTAMIENTO POR
HORA
SI
ENRUTAMIENTO POR
COMPARTICIN DE
CARGA
NO
Por FROM?
NO
Por TO?
NO
Por HORA?
NO
Comparticin de
Carga?
NO
Route 1
Figura 29. Proceso de revisin y enrutamiento por reglas.
Despus de revisar que proceso est activo se procede a ejecutar la regla como tal, se pueden
ejecutar varios procesos a la vez, comentando o no los mismos. En la Figura 30 se muestra el
Enrutamiento por URI, en la Figura 31 el Enrutamiento por FROM, en la Figura 32 el Enrutamiento por
TO, en la Figura 33 el Enrutamiento por HORA y por ltimo, en la Figura 34 se muestra el
Enrutamiento por Comparticin de Carga.
URI (ACTIVO)
URI = regla 1?
SI
INVITE dominio 1
NO
URI = regla 2?
SI
INVITE dominio 2
NO
URI = regla 3?
SI
INVITE dominio 3
NO
URI = regla X?
NO
Route 1
SI
INVITE dominio X
FROM (ACTIVO)
FROM = regla 1?
SI
INVITE dominio 1
NO
FROM = regla 2?
SI
INVITE dominio 2
NO
FROM = regla 3?
SI
INVITE dominio 3
NO
FROM = regla X?
SI
INVITE dominio X
NO
Route 1
Figura 31. Enrutamiento por FROM
TO (ACTIVO)
TO = regla 1?
SI
INVITE dominio 1
NO
TO = regla 2?
SI
INVITE dominio 2
NO
TO = regla 3?
SI
INVITE dominio 3
NO
TO = regla X?
SI
INVITE dominio X
NO
Route 1
Figura 32. Enrutamiento por FROM
- 54 HORA (ACTIVO)
REGLA HORA =
regla 1?
SI
INVITE dominio 1
NO
REGLA HORA =
regla 2?
SI
INVITE dominio 2
NO
REGLA HORA =
regla 3?
SI
INVITE dominio 3
NO
REGLA HORA =
regla X?
SI
INVITE dominio X
NO
Route 1
Figura 33. Enrutamiento por FROM
COMPARTICIN DE
CARGA (ACTIVA)
REGLA
COMPARTICIN
= regla 1?
SI
INVITE dominio 1
NO
REGLA HORA =
regla 2?
SI
INVITE dominio 2
NO
REGLA HORA =
regla X?
SI
INVITE dominio X
NO
Route 1
Figura 34. Enrutamiento por FROM
INTERNET
ITSP
SIP/H.323
softswitch
SoftX3000
Servidor
SIP
SBC
Backbone IP
SS7
UMG
SIP
PSTN
MGCP
H.323
Central
M2UA(SIGTRAN)
E1(TDM/SS7)
POTS
Figura 35. Posible escenario de Ubicacin del OpenSER dentro de la Red de CANTV
- 56 Servidor de Aplicacin de
Tarificacin
OpenSER
Servidor
SIP Proxy
ABA Voz
INTERNET
ITSP
SIP/H.323
softswitch
SoftX3000
Servidor
SIP
SBC
Backbone IP
SS7
UMG
SIP
PSTN
MGCP
H.323
Central
M2UA(SIGTRAN)
E1(TDM/SS7
POTS
Figura 36. Posible escenario de Ubicacin del OpenSER dentro de la Red de CANTV
- 57 App Server
Rating
ABA Voz
INTERNET
OpenSER
Servidor SIP Proxy
ITSP
SIP/H.323
softswitch
SoftX3000
SBC
Servidor
SIP
Backbone IP
SS7
UMG
SIP
PSTN
MGCP
H.323
Central
M2UA(SIGTRAN)
E1(TDM/SS7)
POTS
Figura 37. Posible escenario de Ubicacin del OpenSER dentro de la Red de CANTV
Existen otras posibles ubicaciones aunque todava estn siendo evaluadas y chequeadas de
forma de que alguno de los servicios no vaya a fallar a la hora de introducir el OpenSER.
5.2.3. Pruebas de Configuracin
Despus de desarrollar todos los diagramas se comenz con la configuracin del archivo de
OpenSER, para luego probar cada una de las reglas y poder constatar que el arreglo elaborado era
eficiente y cumpla con los requisitos necesarios. Para elaborar las pruebas se dise un diagrama,
mostrado en la Figura 38, con el cual se trabaj para probar cada parte del programa.
- 58 -
REVISIN DEL
ARCHIVO DE
CONFIGURACIN
COMPILA?
NO
SI
PRUEBAS ESPECFICAS
PARA CADA RUTINA
NO
LA RUTINA SE
EJECUTA
CORRECTAMENTE?
SIGUIENTES PRUEBAS
SI
SE TERMINARON
LAS PRUEBAS?
NO
SI
FIN
Figura 38. Esquema general de Pruebas
Probar que las llamadas hechas son recibidas por telfonos en la red PSTN.
Para probar cada seccin del archivo de configuracin se procedi a colocar lneas de
mensajes en el mismo para que estas salgan impresas en el log del servicio. Esto se hace para realizar
un seguimiento desde el archivo de mensajes y poder ver cul seccin se est ejecutando y cul no.
- 59 Cuando no se ejecutaba una regla se proceda a cambiar el archivo de configuracin. Para mayores
detalles ver las secciones 6.2 y 6.3 del Anexo1.
Para verificar que las llamadas salieran a la PSTN se utiliz el programa Asterisk como gateway
para poder reenrutar las llamadas generadas por el OpenSER hacia la PSTN, (esto se logr gracias a
un nmero que se registr con el servicio ABA voz por medio del cual las llamadas realizadas salan al
exterior, ver Figura 39, con esto se usaba un numero registrado dentro del dominio de OpenSER y se
realizaban llamadas a nmeros fijos y telfonos celulares, presentando los resultados generales
mostrados en la Tabla 4, donde la calidad alcanzada tiene la ms alta ponderacin. Se est utilizando
la escala deficiente, suficiente y buena, y dentro del retardo se tiene la escala muy apreciable,
apreciable, poco apreciable y no apreciable. Con esto se puede decir que la calidad del servicio, en
conjunto, es bastante buena.
Telfono IP
Realiza una llamada IP
OpenSER
Enva una peticin
Asterisk
Se registra con un nmero asignado
ABA voz
Realiza una llamada a travs de la PSTN
Telfono PSTN
Figura 39. Diagrama de conexin para la prueba de llamadas salientes.
Nmero telefnico
Locales
Celulares
Nacionales
Calidad de Voz
Buena
Buena
Buena
Retardo
No apreciable
Poco apreciable
Poco apreciable
Para probar que las trazas de las llamadas fueran las correctas, se utiliz un programa llamado
Ngrep, instalado en el servidor SIP para poder as monitorear los mensajes SIP recibidos y enviados
por el servidor, con el cual se poda revisar con exactitud el desenvolvimiento de la herramienta. As se
poda establecer la ruta seguida por los mensajes y corregir el error en el enrutamiento del mismo.
Para mayor informacin ver la seccin 6.4 del Anexo1.
- 60 En las Figuras 40, 41, 42 y 43; se muestran los diagramas de flujo de llamada, construidos con
los mensajes y peticiones enviados por los servidores tomados stos de las trazas que se encuentran
en los Anexos 3, 4, 5 y 6 respectivamente.
Telfono IP
Telfono PSTN
OpenSER
INVITE
Asterisk
INVITE
TRYING
ABA Voz
INVITE
TRYING
TRYING
ACK
SESSION PROGRESS
SESSION PROGRESS
RINGING
RINGING
200 OK
200 OK
SESSION PROGRESS
RINGING
RINGING
200 OK
LLAMADA
BYE
BYE
BYE
200 OK
200 OK
200 OK
Figura 40. Flujo de Mensajes entre telfono IP y nmero en la PSTN (ste cuelga)
Telfono IP
Telfono PSTN
OpenSER
Asterisk
INVITE
INVITE
TRYING
TRYING
ABA Voz
INVITE
TRYING
ACK
SESSION PROGRESS
SESSION PROGRESS
RINGING
RINGING
200 OK
200 OK
SESSION PROGRESS
RINGING
RINGING
200 OK
LLAMADA
BYE
200 OK
BYE
200 OK
BYE
200 OK
Figura 41. Flujo de Mensajes entre telfono IP (ste cuelga) y nmero en la PSTN
- 61 Telfono IP
Telfono Celular
OpenSER
Asterisk
INVITE
INVITE
TRYING
TRYING
ABA Voz
INVITE
TRYING
SESSION PROGRESS
SESSION PROGRESS
200 OK
200 OK
SESSION PROGRESS
ACK
RINGING
200 OK
LLAMADA
BYE
BYE
BYE
200 OK
200 OK
200 OK
Figura 42. Flujo de Mensajes entre telfono IP y nmero celular (ste cuelga)
Telfono IP
Telfono Celular
OpenSER
INVITE
Asterisk
INVITE
TRYING
TRYING
SESSION PROGRESS
SESSION PROGRESS
ABA Voz
INVITE
TRYING
SESSION PROGRESS
ACK
200 OK
200 OK
RINGING
200 OK
LLAMADA
BYE
200 OK
BYE
200 OK
BYE
200 OK
Como ltima prueba se gener trafico sobre el servidor para ver la respuesta obtenida ante
una prueba de stress. Con esto se pudo conocer un estimado de cuntas llamadas soporta el servidor
en una hora pico.
- 62 Para realizar la prueba se us la herramienta SIPp la cual genera el trfico adecuado para ir
analizando la respuesta obtenida por el OpenSER. Para conocer la respuesta del servidor se trabaj
con los valores mostrados en la Tabla 5. Donde la columna llamadas por segundo representan, como
su nombre lo indica, la cantidad de llamadas que el servidor recibir por segundo; la columna
duracin promedio de la llamada indica el tiempo estimado de duracin de cada llamada; la columna
erlang es una medida de densidad de trfico la cual describe el volumen total de trfico que existe
en una hora; la columna cantidad de llamadas concurrentes, como su nombre lo indica, es la
cantidad de llamadas que se establecen o se mantienen en el mismo instante y por ltimo, la columna
soporte implica si el servidor funcion correctamente al trfico generado sobre l.
ERLANG
LLAMADAS
POR SEGUNDO
(calls/sec)
DURACIN
PROMEDIO DE LA
LLAMADA (seg)
(llamadas duracin)
3600
LLAMADAS
CONCURRENTES
(aproximado 6)
SOPORTE
20
30
32
34
35
38
30
32
33
34
35
50
120
120
120
120
120
120
180
180
180
180
180
180
2400
3600
3840
4080
4200
4560
5400
5760
5940
6120
6300
9000
2400
3600
3840
4080
4200
4560
5400
5760
5940
6120
6300
9000
SI
SI
SI
SI
SI
SI
SI
SI
SI
SI
NO
NO
- 63 -
- 64 -
- 65 -
- 66 -
- 67 -
- 68 -
- 69 -
- 70 -
- 71 -
- 72 -
- 73 -
- 74 -
- 75 -
- 76 -
- 77 -
- 78 -
Prueba 10: 34 calls/seg con 180 seg de duracin de la llamada, en la Figura 60 se puede
apreciar el escenario del servidor UAC y en la Figura 61 se puede ver el consumo del servidor
cuando se est manejando esa cantidad de llamadas.
- 79 -
- 80 -
Cambiar Prefijos de
Enrutamiento
Seleccionar
Insertar:
* Mdulo
* Parmetro
* Regla de Enrutamiento
* Regla de Enrutamiento
* Regla de Enrutamiento
* Regla de Enrutamiento
* Regla de Enrutamiento
Reparticin de carga
por
por
por
por
por
URI
FROM
TO
HORA
Links Asociados:
* Ver ms informacin
* Ver cdigo
* Ver dependencias entre
mdulos
- 82 -
- 83 -
Para la modificacin del archivo de configuracin, el administrador deber elegir alguna de las
opciones, y posteriormente escribir el cdigo en el cuadro de texto. De esta forma, el cdigo escrito se
incluir en el lugar adecuado en el archivo de configuracin.
La Pgina Principal de Enrutamiento, ver Figura 65, permite al administrador tener un
completo manejo de la base de datos donde se encuentran almacenados los dominios
correspondientes a
escoger mediante una lista desplegable el tipo de enrutamiento con el que desea trabajar. De acuerdo
con el diseo desarrollado, luego de elegir el tipo de enrutamiento se hace un redireccionamiento a la
pgina (Ver Figura 66) donde se mostrarn los prefijos existentes para ese tipo de enrutamiento, y
donde adems se podr agregar un nuevo prefijo, y editar o eliminar un prefijo existente.
- 84 -
- 85 -
87
En lo que respecta a la realizacin del proyecto, podemos sealar que los objetivos planteados
fueron satisfechos, pero adems se fueron incorporando nuevas metas que enriquecieron la solucin
final, logrando de esta manera aportar mayores conocimientos en lo que se refiere a OpenSER.
Entre los aspectos adicionales incluidos en la pasanta, se pueden mencionar: la configuracin
de OpenSER no slo como Proxy, sino tambin como Register, la realizacin de las pruebas de trfico
mediante las cuales se pudo estimar para el servidor empleado la cantidad de llamadas concurrentes
que puede manejar OpenSER. Igualmente, se desarroll la aplicacin Web para la configuracin de
OpenSER y la base de datos donde se encuentran los prefijos para el enrutamiento.
Referente a las recomendaciones y sugerencias que se presentaron a lo largo del desarrollo de
la pasanta, se recomienda no descargar la ltima versin de OpenSER del sitio oficial debido a que
actualmente la documentacin solamente se encuentra disponible hasta la penltima versin (1.0). Por
ello, las funciones incluidas en la nueva versin, as como los cambios de sintaxis para una
determinada funcin pueden no ser las mismas al igual que al instalar la ltima versin no se garantiza
estabilidad en la misma limitando as la ejecucin de algn desarrollo.
Tambin resulta fundamental contar con respaldos del archivo de configuracin de OpenSER,
por ello se recomienda que cada vez que se hayan incorporado cambios importantes y funcionales, se
guarde dicho archivo de configuracin en una carpeta destinada exclusivamente para ello. De esta
forma, en caso de corromper el archivo de configuracin de OpenSER, est podr ser recuperado
rpidamente.
Con respecto a la Aplicacin Web, se recomienda estudiar la factibilidad de incorporar una
funcionalidad que permita eliminar cdigo del archivo de configuracin de OpenSER via web, sin
necesidad de tener que hacerlo directamente en la consola.
88
REFERENCIAS
plataforma VoIP de CANTV que permite mejorar los procesos de evaluacin, monitoreo y soporte
tcnicos de los servicios NGN. Diciembre 2006.
89
[17] Glosario Recursos VoIP M-R. Consultado en URL: http://www.recursosvoip.com/glosario/M-R.php.
13 de Noviembre de 2006.
[18] WAN. Consultado en URL: http://es.wikipedia.org/wiki/wan. 9 de Noviembre de 2006.
[19] Fundamentos de una red de rea local. Consultado en URL:
http://www.geocities.com/siliconvalley/8195/redes.html. 9 de Noviembre de 2006.
[20] MOULTON, P. Telecommunications Survival Guide, The: Understanding and Applying
Telecommunications Technologies to Save Money and Develop New Business. Prentice Hall. 2001.
[21] SOTO, M. Protocolos TCP/IP. Consultado en URL: http://usuarios.lycos.es/janjo/janjo1.html.
9 de Noviembre de 2006.
[22] El Protocolo IP. Consultado en URL: http://neo.lcc.uma.es/evirtual/cdd/red/ip.html. 10 de
Noviembre de 2006].
[23] El Protocolo TCP. Consultado en URL:
http://neo.1cc.uma.es/evirtual/cdd/tutorial/transporte/tcp.html. 10 de Noviembre de 2006.
[24] User Datagram Protocol. Consultado en URL: http://es.wikipedia.org/wiki/udp 13 de Noviembre
de 2006.
[25] El protocolo UDP. Consultado en URL:
http://neo.lcc.uma.es/evirtual/cdd/tutorial/transporte/udp.html 13 de Noviembre de 2006.
[26] Router. Consultado en URL: http://www.webopedia.com/term/r/router.html 13 de Noviembre de
2006.
[27] Puerta de enlace. Consultado en URL: http://es.wikipedia.org/Puerta_de_Enlace. 15 de
Noviembre de 2006.
[28] Servidor. Consultado en URL: http://es.wikipedia.org/wiki/Servidor. 14 de Noviembre de 2006.
[29] How Virtual Private Network Work. Consultado en URL:
http://www.howstuffworks.com/vpn.htm. 14 de Noviembre de 2006.
[30] NADER, R. VPN Redes Virtuales Privadas. Consultado en URL:
http://www.monografas.com/trabajos11/repri/repri.shtml. 14 de Noviembre de 2006.
[31] Red Hat. Consultado en URL: http://fedora.redhat.com/docs/release_notes/fc4/errata/. 16 de
Noviembre de 2006.
[32] La voz sobre IP: hacia la convergencia. Consultado en URL:
http://www.fundacionauna.org/areas/25_publicaciones/09_VOIP%20.pdf 14 de Noviembre de 2006.
[33] SUN MYCROSYSTEMS NC. The Softswitch with Sun Microsystems. Mayo 2002.
[34] HANDLEY, M. et all. SIP Session Initiation Protocol (RFC 2543). Marzo 1999. Consultado en URL:
http://www.ietf.org/rfc/rfc2543.txt 7 de Noviembre de 2006.
[35] COLLINS, D. Carrier Grade Voice Over IP. McGraw-Hill. 2003.
[36] Iptel.org. Sip Network Elements. Consultado en URL: http://www.iptel.org/sip/intro/elements. 7
de Noviembre de 2006.
90
[37] Tema 2: Trfico Telefnico. Consultado en URL:
http://www.terra.es/personal/ignaciorb/telefonia/conmutacin/conmutacin_2.htm. 04 de Diciembre
de 2006.
[38] FICHE, G. HBUTERNE, G. Communicating Systems & Networks: Traffic & Performance. Kogan
Page Science. London and Sterling, VA. 2004.
[39] PARK, K. QoS in Packet Networks. Springer. United States of America. 2005.
[40] OpenSER-GPL Sip Server. Consultado en URL:
http://www.openser.org/index?phpoption=com_frontpage&Itemid=1. 24 de Noviembre de 2006.
[41] XMPP. Consultado en URL: http://es.wikipedia.org/wiki/Xmpp. 24 de Noviembre de 2006.
[42] Telefona IP Asterisk Open Source PBX. Consultado en URL: http://consultorianet.com/voip.htm.
24 de Noviembre de 2006.
[43] Asterisk. Consultado en URL: http://www.voip-info.org/wiki/view/Asterisk+introduction. 24 de
Noviembre de 2006.
[44] Asterisk. Consultado en URL: http://es.wikipedia.org/wiki/Asterisk. 24 de Noviembre de 2006.
[45] Sistema Operativo. Consultado en URL: http://es.wikipedia.org/wiki/Sistema_operativo. 17 de
Noviembre de 2006.
[46] Anlisis de trfico y calidad de servicio. Consultado en URL: http://eslared.org.ve/walc2004/apcaa/archivos-aa/1e60354f4717edb9fb793dbc5219499d/Practica_QoS.doc. 13 de Diciembre de 2006.
[47] Seguridad Informtica y Software Libre. Consultado en URL: http://es.tldp.org/Informes/informeseguridad-SL/informe-seguridad-SL.pdf. 27 de Noviembre de 2006.
[48] Flex, versin 2.5. Consultado en URL: http://ditec.um.es/~aflores/dile/flex/flex-es.html#SEC1. 21
de Noviembre de 2006.
[49] NGREP Network NGREP. Consultado en URL:
http://ngrep.sourceforge.net/download.html. 22 de Noviembre de 2006.
- 91 -
1.1.
Arquitectura SIP
SIP es un protocolo de sealizacin que maneja el inicio, la modificacin y la finalizacin de
sesiones multimedia. En combinacin con otros protocolos, es usado para describir las caractersticas
de sesin de los potenciales participantes de la misma. Estrictamente hablando, SIP est escrito de
forma tal que los medios que se utilizarn en una sesin dada pueden usar cualquier protocolo de
transporte, usando comnmente el protocolo RTP.
La sealizacin SIP puede ser considerada por separado de los medios. sto es importante ya
que esta sealizacin puede ser pasada por uno o ms proxies o servidores de redireccionamiento
mientras que el flujo de datos de media toma un camino ms directo.
1.2.
Historia de SER
SER (SIP Express Router) fue creado por un grupo de desarrolladores, empleados por
Fraunhofer Fokus, un grupo de investigacin alemn. El proyecto de iptel.org era construir un sitio
Web que tuviese informacin de VoIP y ofrecer servicios gratis del mismo. SER fue desarrollado como
parte del esfuerzo de Jiri Kuthan. Es un proyecto de cdigo abierto, siendo iptel.org el punto de
entrada de informacin referente a SER, as como tambin de tutoriales sobre SIP.
Fraunhofer Fokus hizo girar iptel.org como una empresa para el desarrollo de SER (para
propsitos tanto comerciales como de cdigo abierto) y para ofrecer servicios y paquetes de software
basados en los proyectos desarrollados por dicha empresa. Iptel.org tiene principalmente el control y
responsabilidad en el desarrollo de SER, el servidor SIP de cdigo abierto.
2. OpenSER
2.1.
Historia
En el ao 2005, Voice System anunci la creacin de OpenSER. La razn de dicha creacin, se
debi a la falta de progreso y contribucin al proyecto SER por parte de los miembros su comunidad.
Los desarrolladores de Voice System de SER, sentan que iptel.org fue quin tom las decisiones
finales en el lanzamiento de los cdigos, adems de que no haba podido agregar nuevas
contribuciones y haba sido demasiado lento en lanzar las nuevas versiones de SER.
La sensacin general era que las nuevas caractersticas ofrecidas eran buenas, pero la mayora
de la gente perciba que sera ms sencillo para la comunidad si tanto la estabilidad y garanta de
calidad encontrada en SER se podra combinar en el mismo proyecto con las metas de OpenSER.
- 92 -
2.2.
Descripcin
OpenSER es un servidor SIP, tiene una arquitectura flexible y presenta una amplia coleccin de
3.1.
Originales y Documentacin
Los archivos originales del OpenSER junto con los manuales, las libreras, los archivos
3.2.
Backups
En la carpeta /etc/openser/backup se encuentra un archivo openser.cfg de respaldo y uno
original (tal cual como cuando se instal el servicio), para que cuando ocurra algn error y no se
pueda solventar, se pueda sustituir el archivo y seguir con la programacin actual sin problema
alguno.
Adems se recomienda ir guardando los archivos con nuevas modificaciones en la misma
carpeta para tener respaldo de los avances y, al momento de tener que deshacer modificaciones, sea
ms fcil el cambio.
- 93 -
3.3.
Archivo openser.cfg
El archivo openser.cfg es el ncleo de OpenSER, por lo tanto ste es el que se debe modificar
Archivo de configuracin
4. Archivo de configuracin
4.1.
Descripcin
Este archivo contiene todos los parmetros de configuracin del OpenSER como tal, es el
4.2.
Estructura
Este archivo presenta siete secciones lgicas principales:
4.2.1.
contiene la direccin IP, el puerto que est siendo escuchado, el nivel de detalles en los
mensajes de deteccin de errores. Los cambios en esta seccin afectan al demonio de
OpenSER en si mismo.
4.2.2.
Seccin de mdulos: contiene una lista de libreras externas que son necesarias
- 94 -
loadmodule.
4.2.3.
especificadas en la seccin de los mdulos son necesarias para habilitar los parmetros
del mismo, para que ste funcione correctamente. Estos parmetros del mdulo se fijan
por medio del comando modparam, el cual toma la forma: modparam (nombre del
- 95 -
4.2.4.
4.2.5.
openser.cfg puede contener bloques de rutas adicionales que pueden ser llamadas por
el bloque de ruta principal , por otros bloques de rutas secundarios. Un bloque de ruta
secundario es anlogo a una subrutina.
- 96 -
4.2.6.
respuesta pueden ser utilizados para manejar respuestas a mensajes SIP. La mayora de
estos mensajes de respuesta son OK.
4.2.7.
fallas que pueden ser usados cuando se necesitan procesos especiales para manejar
condiciones de falla, como fin de tiempo de espera, o congestin, entre otras.
Ruta de
falla
4.3.
nuevo dentro del mismo se tienen dos opciones, modificar directamente en la consola el archivo de
configuracin openser.cfg o modificar el archivo de configuracin va Web (solo podr agregar cdigo
al archivo de configuracin, en caso de que se necesite eliminar cdigo o realizar alguna modificacin
en el mismo, esto deber de hacerse directamente desde consola).
- 97 -
- 98 -
4.4.
consola, se presiona la tecla Esc para salir del modo insert y se escribe:
:q! si no se quieren guardar los cambios hechos y se desea salir del editor.
:wq si se quieren guardar los cambios y salir del editor.
:w si solo se quieren guardar los cambios sin salir del editor.
:q si se quiere salir del editor sin haber hecho ningn cambio.
Nota: las comillas no deben colocarse.
4.5.
comentada (para pruebas u otra accin) se debe colocar un signo de numeral # al inicio de la lnea
y automticamente sta no ser ejecutada al reiniciar el servicio. Si por otro lado, lo que se quiere es
que no se ejecute un trozo de cdigo, se debe colocar al inicio del bloque un slash con un asterisco
/* y al final del bloque se invierte y se coloca primero el asterisco y luego es slash */ para cerrar el
comentario y as no permitir la ejecucin de ese trozo o bloque de cdigo al reiniciar el servicio.
De igual forma si se quiere comentar lnea por lnea en un trozo o bloque de cdigo puede
hacerse, as se puede comentar o no cualquier lnea por separado de las otras.
- 99 -
5.1.
Mdulos
OpenSER est formado por un conjunto de mdulos, cada uno de ellos contiene parmetros y
funciones exportadas. Para poder hacer uso de las mismas, los mdulos deben cargarse previamente
de la forma: loadmodule nombre_del_mdulo
Mdulos
cargados
Estos pueden listarse, segn la versin del OpenSER instalado (en este caso v.1.0), en la
pgina: http://www.openser.org/docs/modules/1.0.x/.
Es importante saber que hay mdulos que presentan dependencia de otros, por lo tanto antes
de cargar un mdulo es necesario chequear si presenta dependencia con alguno, y en caso de ser as,
ste debe cargarse primero.
- 100 -
Los mdulos tm y rr
deben cargarse en
lneas anteriores
El mdulo uac
presenta dependencia
de tm y rr
5.1.1.
Ubicacin
Los mdulos vienen ya incluidos en los archivos de instalacin del OpenSER. Cuando se instala
OpenSER, automticamente los archivos de configuracin de cada mdulo son instalados, mas no
cargados (slo se cargan aquellos que se encuentren especificados en el archivo de configuracin,
openser.cfg).
Adems, cada versin de OpenSER viene con sus mdulos adaptados para la misma, por ende
no se pueden agregar mdulos de versiones distintas a la del OpenSER instalado.
5.1.2.
Acc: Tm, Rr
Msilo: Tm y Db
Auth: Sl
Nathelper: Usrloc
Auth_Db: Auth, Db
Options: Sl
Auth_Diameter: Sl
Auth_Radius: Auth
Pdt: Db
Avpops: Db
Registrar: Usrloc, Sl
- 101
Domain: Db
Sms: Tm
Speeddial: Db, Sl
Uac: Tm, Rr
Group: Db
Jabber: Db, Pa
Uri_db: Db
Lcr: Tm, Db
5.1.3.
5.2.
Parmetros
5.2.1.
Existentes
Cada mdulo tiene un conjunto de parmetros nicos, stos se encuentran explicados dentro
de la descripcin de cada uno en http://www.openser.org/docs/modules/1.0.x/. Adems se puede
obtener
una
lista
completa
de
todos
los
parmetros
de
http://www.openser.org/dokuwiki/doku.php/modules:1.0.x:index-parameters,
cada
donde
mdulo
en
hace
una
redireccin al lugar especifico dentro de la descripcin del mdulo donde se encuentra todo lo
referente al parmetro.
- 102 -
5.2.2.
Configuracin
Cada uno de los mdulos, que forman parte de OpenSER, estn constituidos por un conjunto
de parmetros. Al cargar un mdulo en el archivo de configuracin, los parmetros del mismo ya se
encontrarn disponibles y traen un valor por defecto.
Para ver los parmetros de cada mdulo y los valores que pueden tomar, dirigirse al link
indicado en la seccin anterior.
Para configurar un parmetro (cambiar el valor que trae por defecto) se escribe dentro del
archivo de configuracin de openser la siguiente lnea de cdigo:
- 103 -
5.3.
Enrutamiento
5.3.1.
Partes
Dentro de esta seccin se encuentra como tal el manejo de las llamadas, donde se puede
diferenciar qu hace el script cada vez que se encuentra con un mensaje SIP proveniente de algn
telfono IP o de alguna llamada pasando a travs del servicio.
5.3.2.
5.3.2.1.
Descripcin
Este enrutamiento consiste en cambiar la ruta o dominio destino de una llamada segn reglas
preestablecidas donde se revisa el nmero SIP del URI de la llamada. Para ello, cuando llega el INVITE
se chequea el numero SIP al cual va dirigida la llamada y segn el nmero que sea se cambia el
dominio al cual va dirigido.
5.3.2.2.
Insertar o modificar
- 104 -
{ prefix("XX");
prefix2domain("X");
};
donde nmeroSIP es el nmero que se quiere buscar (por ejemplo, si se coloca 2, todos los nmeros
de telfono que comienzan por 2 sern redireccionados al dominio especificado al igual que si se
coloca el nmero 0416 o cualquier otro nmero), la funcin prefix(prefijo) le agrega un prefijo al
nmero para poder ubicarlo en la tabla de prefix_domain y poder hacer la bsqueda del dominio
referente a ese prefijo, por ltimo la funcin prefix2domain(mode), dependiendo del modo que se elija
reenva el INVITE con o sin el prefijo agregado.
Luego se pulsa el botn enviar y con eso los cambios se realizarn en el archivo de
configuracin.
- 105 -
Para modificar el archivo desde la consola, nos ubicamos en la carpeta donde se encuentra el
mismo y hacemos vi openser.cfg para luego acceder al modo insert (presionando la tecla I) y
proceder a editarlo.
5.3.3.
5.3.3.1.
Este enrutamiento consiste en cambiar la ruta o dominio destino de una llamada segn reglas
preestablecidas donde se revisa una coincidencia con el campo FROM del mensaje INVITE. Para ello,
cuando llega el INVITE se chequea el campo FROM de donde proviene la llamada y segn sea su
coincidencia se cambia el dominio al cual va dirigido.
5.3.3.2.
Funcin search()
La funcin search (re) sirve para revisar o buscar, como su nombre lo indica, dentro de un
mensaje SIP, la coincidencia de alguna expresin regular dentro del mismo mensaje.
5.3.3.3.
Para editar o eliminar una regla de enrutamiento, debe modificarse directamente el archivo de
configuracin de OpenSER directamente desde la consola usando para ello un editor, sin embargo,
para agregar una regla se puede trabajar directamente en el archivo de configuracin y escribir el
cdigo correspondiente en la seccin: Enrutamiento por campo: from.
- 106 -
Nota: al agregar una nueva regla de enrutamiento FROM, debe asegurarse de no modificar el
comentario: #INSERTE REGLA DE ENRUTAMIENTO POR FROM AQU, debido a que el mismo adems
de ser un comentario para facilitarle al administrador la codificacin directamente en el archivo de
configuracin, es un punto de insercin del servidor web, si el mismo se modifica, o se elimina, el
servidor web fallar.
Si se desea agregar una regla de enrutamiento usando el servidor web, se observar por
pantalla:
{ prefix("XX");
prefix2domain("X");
};
donde el nmeroSIP es el nmero que se quiere buscar (por ejemplo, si se coloca 2, todos los
nmeros de telfono que en su campo FROM comienzan por 2 sern redireccionados al dominio
- 107 -
especificado, al igual que si se coloca el nmero 0416 o cualquier otro nmero), la funcin
prefix(prefijo) le agrega un prefijo al numero para poder ubicarlo en la tabla de prefix_domain y poder
hacer la bsqueda del dominio referente a ese prefijo, por ltimo la funcin prefix2domain(mode),
dependiendo del modo que se elija reenva el INVITE con o sin el prefijo agregado.
Luego se pulsa el botn enviar y con eso los cambios se realizarn en el archivo de
configuracin.
Para modificar el archivo desde la consola, nos ubicamos en la carpeta donde se encuentra el
mismo y escribimos el comando vi openser.cfg (sin comillas) para luego acceder al modo insert
(presionando la tecla I) y despus editarlo.
5.3.4.
5.3.4.1.
Enrutamiento por TO
Descripcin
Este enrutamiento consiste en cambiar la ruta o dominio destino de una llamada segn reglas
preestablecidas donde se revisa una coincidencia con el campo TO del mensaje INVITE. Para ello,
cuando llega el INVITE se chequea el campo TO a dnde va la llamada y segn sea su coincidencia
se cambia el dominio al cual va dirigido.
5.3.4.2.
Funcin search()
La funcin search (re) sirve para revisar o buscar, como su nombre lo indica, dentro de un
mensaje SIP, la coincidencia de alguna expresin regular dentro del mismo mensaje.
5.3.4.3.
Para editar o eliminar una regla de enrutamiento, debe modificarse directamente el archivo de
configuracin desde la consola, sin embargo para agregar una regla se tienen dos opciones: modificar
directamente en la consola el archivo de configuracin de openser: openser.cfg agregar, la regla
mediante la pagina de configuracin va Web.
- 108 -
{ prefix("XX");
prefix2domain("X");
};
- 109 donde el nmeroSIP es el nmero que se busca (por ejemplo, si se coloca 2, todos los nmeros de
telfono que en su campo TO comienzan por 2 sern redireccionados al dominio especificado, al igual
que si se coloca el nmero 0416 o cualquier otro nmero), la funcin prefix(prefijo) le agrega un
prefijo al numero para poder ubicarlo en la tabla de prefix_domain y poder hacer la bsqueda del
dominio referente a ese prefijo, por ltimo la funcin prefix2domain(mode), dependiendo del modo
que se elija, se encargar de reenviar el INVITE con o sin el prefijo agregado.
Luego se pulsa el botn enviar y con eso los cambios se realizarn en el archivo de
configuracin.
Para modificar el archivo desde la consola, debe ubicarse en la carpeta donde se encuentra el
mismo y ejecutar el comando: vi openser.cfg para luego acceder al modo insert (presionando la
tecla I) y poder editarlo.
5.3.5.
5.3.5.1.
Este enrutamiento consiste en cambiar la ruta o dominio destino de una llamada segn las
reglas y el rango de horas preestablecidas desde la pgina Web. Segn el rango de horas establecido
se chequea en la base de datos el dominio asignado y se reenva la llamada al dominio
correspondiente.
5.3.5.2.
Para agregar una regla se tienen dos opciones: agregar la regla directamente en el archivo de
configuracin de OpenSER: openser.cfg (accediendo desde la consola) agregar la regla usando la
pgina de configuracin va Web. Si se desea editar o eliminar alguna regla de enrutamiento, esto se
deber hacer directamente en el archivo de configuracin de OpenSER, accediendo al mismo desde la
consola.
- 110 -
{ prefix("XX");
prefix2domain("X");
};
donde el nmeroSIP es el nmero que se quiere buscar (por ejemplo, si se coloca 2, todos los
nmeros de telfono que comienzan por 2 sern redireccionados al dominio especificado, al igual que
si se coloca el nmero 0412 o cualquier otro nmero), la funcin prefix(prefijo) le agrega un prefijo al
nmero para poder ubicarlo en la tabla de prefix_domain y poder hacer la bsqueda del dominio
referente a ese prefijo, por ltimo la funcin prefix2domain(mode), dependiendo del modo que se elija
reenva el INVITE con o sin el prefijo agregado.
Luego se pulsa el botn enviar y con ello los cambios se realizarn en el archivo de
configuracin.
- 111 -
Para modificar el archivo desde la consola, nos ubicamos en la carpeta donde se encuentra el
mismo (/etc/openser) y se ejecuta el comando vi openser.cfg para luego acceder al modo insert
(presionando la tecla I) y despus editarlo.
5.4.
Rutas
Descripcin
5.4.1.
Son bloques de rutas adicionales que pueden ser llamadas por el bloque de ruta principal
(enrutamiento) , por otros bloques de rutas secundarios. Un bloque de ruta secundario es anlogo a
una subrutina.
5.4.2.
Funcin
Sirven para cambiar el destino final de la llamada o simplemente para notificar sobre algn
evento ocurrido.
5.4.3.
Uso
Para crear una ruta slo basta con escribir al final de la parte de enrutamiento el siguiente
cdigo:
route[X] {
};
donde X indica el nmero de ruta y los puntos suspensivos indican el cdigo para enrutamiento o
envo de algn mensaje SIP en respuesta a algn evento que suceda.
Para llamar la subrutina desde cualquier parte del cdigo basta se escribe route(X); para as
poder ejecutar la ruta luego del salto.
5.5.
Funciones Usadas
5.5.1.
Funcin
"acc_db_request(comment, table)"
"acc_diam_request(comment)"
- 112 -
"acc_log_request(comment)"
"acc_rad_request(comment)"
"add_diversion(reason)"
"add_rcv_param()"
"add_rr_param(param)"
"add_sock_hdr(hdr_name)"
"add_uri_param(param)"
"alias_db_lookup(table_name)"
"allow_refer_to(allow_file, deny_file)"
"allow_refer_to(basename)"
"allow_register(allow_file, deny_file)"
"allow_register(basename)"
"allow_routing()"
"allow_routing(allow_file,deny_file)"
"allow_routing(basename)"
"allow_trusted()"
"append_hf(hf)"
"append_rpid_hf()"
"append_rpid_hf(prefix, suffix)"
"append_time()"
"append_to_reply(txt)"
"append_urihf(prefix, suffix)"
"avp_check(name,op_value) "
"avp_copy(old_name,new_name) "
"avp_db_delete(source,name)"
"avp_db_load(source,name) "
"avp_db_store(source,name)"
"avp_delete(name) "
"avp_load_radius(user)"
"avp_op(name,op_value) "
"avp_print()"
"avp_printf(dest, format) "
"avp_pushto(destination,name) "
"avp_subst(avps, subst)"
"avp_write(value,name)"
"check_from()"
"check_route_param(re)"
"check_to()"
"client_nat_test("type)
"consume_credentials()"
"cpl_process_register()"
"cpl_process_register_norpl()"
"cpl_run_script(type,mode)"
"decode_contact()"
"decode_contact_header()"
"diameter_is_user_in(who, group)"
"diameter_proxy_authorize(realm)"
"diameter_www_authorize(realm)"
"does_uri_exist()"
"ds_select_domain(set, alg)"
"ds_select_dst(set, alg)"
"encode_contact(encoding_prefix)"
"end_media_session(")
"enum_query(),enum_query("suffix"),
enum_query("suffix", "service")"
"exec_dset(command)"
"exec_msg(command)"
"fix_contact(")
"fix_nated_contact()"
"fix_nated_register()"
"fix_nated_sdp(mode)"
"flush" (integer)
"force_rtp_proxy()"
"force_rtp_proxy(flags)"
"force_rtp_proxy(flags, ip_address)"
"from_gw()"
"get_redirects(max)"
"get_redirects(max,reason)"
"handle_subscription(domain)"
"has_totag()"
"is_avp_set(name) "
"is_direction(dir)"
"is_from_local()"
"is_from_user_e164()"
"is_gflag(flag)"
"is_method(name)"
"is_present_hf(hf_name)"
"is_rpid_user_e164()"
"is_uri_host_local()"
"is_user(username)"
"is_user_in(URI, group)"
"jab_exit_jconf()"
"jab_go_offline()"
"jab_go_online()"
"jab_join_jconf()"
"jab_send_message()"
"load_contacts()"
"load_gws()"
"lookup("domain)"
"loose_route()"
"m_dump()"
"m_store(mode)"
"mf_process_maxfwd_header(max_value)"
"nat_uac_test(flags)"
"next_contacts()"
"next_gw()"
"options_reply()"
"pike_check_req()"
"prefix2domain("mode)"
"proxy_authorize(realm, table)"
"proxy_challenge(realm, qop)"
"radius_is_user_in(URI, group)"
"radius_proxy_authorize(realm)"
"radius_www_authorize(realm)"
"record_route()"
"record_route_preset(string)"
- 113 -
"registered("domain)"
"remove_hf(hname)"
"replace("re, txt)"
"replace_all(re, txt)"
"reset_gflag(flag)"
"save("domain)"
"save_memory(domain)"
"save_noreply(domain)"
"sd_lookup(table)"
"sdp_mangle_ip(pattern, newip)"
"sdp_mangle_port(offset)"
"search("re)"
"search_append(re, txt)"
"set_accept_filter(filter,flags) "
"set_deny_filter(filter,flags) "
"set_gflag(flag)"
"sl_reply_error()"
"sl_send_reply(code, reason)"
"sms_send_msg()"
"sms_send_msg_to_net(network_name)"
"strict_route()" -- deprecated
"subst("'/re/repl/flags')"
"subst_uri('/re/repl/flags')"
"subst_user('/re/repl/flags')"
"t_check_status(re)"
"t_check_trans()"
"t_flush_flags()"
"t_forward_nonack(ip, port)"
"t_forward_nonack_udp(ip, port)"
"t_forward_nonack_tcp(ip, port)"
"t_forward_nonack_tls(ip, port)"
"t_forward_nonack_uri()"
"t_local_replied(reply)"
"t_lookup_request()"
"t_newtran()"
"t_on_branch(branch_route)"
"t_on_failure(failure_route)"
"t_on_reply(reply_route) "
"t_relay()"
"t_relay_to_udp(ip, port), t_relay_to_tcp(ip,
port), t_relay_to_tls(ip, port)"
"t_release()"
"t_replicate(ip, port) t_replicate_udp(ip, port)
t_replicate_tcp(ip, port)"
"t_reply(code, reason_phrase)"
"t_retransmit_reply()"
"t_was_cancelled()"
"t_write_fifo(info,fifo)
t_write_unix(info,sock)"
"tel2sip(")"
"to_gw()"
"uac_auth()"
"uac_replace_from(display,uri)"
"uac_replace_from(uri)"
"uac_restore_from()"
"unforce_rtp_proxy()"
"uri_param(param)"
"uri_param(param,value)"
"use_media_proxy"()
"www_authorize(realm, table)"
"www_challenge(realm, qop)"
"xdbg(format)"
"xlog( [level,] format)"
Parmetros de openSER:
"acc_db_table" (string)
"acc_domain_column" (string)
"acc_dst_leg_column" (string)
"acc_from_uri_column" (string)
"acc_fromtag_column" (string)
"acc_function" (string)
"acc_i_uri_column" (string)
"acc_o_uri_column" (string)
"acc_sip_callid_column" (string)
"acc_sip_from_column" (string)
"acc_sip_method_column" (string)
"acc_sip_status_column" (string)
"acc_sip_to_column" (string)
"acc_src_leg_column" (string)
"acc_time_column" (string)
"acc_to_uri_column" (string)
"acc_totag_column" (string)
"acc_user_column" (string)
"accept" (string)
"accept_encoding" (string)
"accept_filter" (string)
"accept_language" (string)
"add_username" (integer)
"alias_domain_column" (str)
"alias_user_column" (str)
"aliases" (string)
"allow_suffix" (string)
"append_branches" (integer)
"append_fromtag" (integer)
"append_hf(hf)" append_hf(hf)"
"append_time()" append_time()"
"append_to_reply(txt)" append_to_reply(txt)"
"append_urihf(prefix, suffix)"
"attribute_column" (string)
"avp_aliases" (string)
"avp_table" (string)
"avp_url" (string)
"branch_flag_mask" (string)
"buf_size" (integer)
"cache_time" (integer)
"calculate_ha1" (integer)
- 114 -
"callee_service_type" (integer)
"caller_service_type" (integer)
"callid_column" (string)
"case_sensitive" (int)
"case_sensitive" (integer)
"check_all_branches" (integer)
"check_time" (int)
"check_time" (integer)
"clean_period" (int)
"clean_time" (integer)
"contact_avp" (string)
"contact_column" (string)
"contact_flds_separator" (string)
"cpl_db" (string)
"cpl_dtd_file" (string)
"cpl_table" (string)
"credential" (string)
"cseq_column" (string)
"db_extra" (string)
"db_flag" (integer)
"db_localtime" (int)
"db_missed_flag" (integer)
"db_mode" (integer)
"db_mode" (integer)
"db_mode" (integer)
"db_scheme" (string)
"db_table" (string)
"db_table" (string)
"db_table_acc" (string)
"db_table_missed_calls" (string)
"db_url" (str)
"db_url" (string)
"default_allow_file" (string)
"default_deny_file" (string)
"default_expires" (integer)
"default_expires" (integer)
"default_filter" (string)
"default_net" (string)
"default_q" (integer)
"delay_time" (integer)
"delete_timer" (integer)
"deny_filter" (string)
"deny_suffix" (string)
"desc_time_order" (integer)
"desc_time_order" (integer)
"diameter_client_host" (string)
"diameter_client_host" (string)
"diameter_client_port" (int)
"diameter_client_port" (int)
"diameter_flag" (integer)
"diameter_missed_flag" (integer)
"diamter_extra" (string)
"domain_col" (string)
"domain_column" (str)
"domain_column" (string)
"domain_column" (string)
"domain_column" (string)
"domain_column" (string)
"domain_column" (string)
"domain_column" (string)
"domain_prefix" (str)
"domain_prefix" (string)
"domain_str" (string)
"domain_suffix" (string)
"domain_table" (string)
"dst_leg_avp_id" (integer)
"early_media" (integer)
"enable_double_rr" (integer)
"enable_full_lr" (integer)
"exec_timer" (UNUSED, placeholder only)
(integer)
"expire_time" (int)
"expires_column" (string)
"failed_transaction_flag" (integer)
"flags" (int)
ts "flags_column" (string)
"flush" (integer)
"force_color" (integer)
"force_dst" (int)
"force_socket" (string)
"fr_inv_timer" (integer)
"fr_inv_timer" (integer)
"fr_inv_timer_avp" (string)
"fr_inv_timer_avp" (string)
"fr_inv_timer_next" (integer)
"fr_timer" (integer)
"fr_timer_avp" (string)
"from_col" (string)
"from_restore_mode" (string)
"from_uri_column" (string)
"group_column" (string)
"grp_id_column" (string)
"gw_name_column" (string)
"gw_table" (string)
"gw_uri_avp" (string)
"hsize_2pow" (integer)
"initial" (string)
"ip_addr_column" (string)
"is_method(name)" is_method(name)"
"is_present_hf(hf_name)"
"jaddress" (string)
"jdomain" (string)
"jport" (integer)
"lcr_table" (string)
"links" (string)
"list_file" (string)
- 115 -
"load_credentials" (string)
"log_dir" (string)
"log_extra" (string)
"log_flag" (integer)
"log_fmt" (string)
"log_level" (integer)
"log_missed_flag" (integer)
"lookup_append_branches" (int)
"lookup_domain" (string)
"max_contacts" (integer)
"max_expires" (integer)
"max_jobs" (integer)
"max_limit" (integer)
"max_sms_parts" (integer)
"mediaproxy_socket" (string)
"method_column" (string)
"min_expires" (integer)
"modems" (string)
"multi_leg_enabled" (integer)
"nat_flag" (int)
"nat_flag" (integer)
"natping_interval" (integer)
"natping_interval" (integer)
"networks" (string)
"new_uri_column" (string)
"noisy_ctimer" (integer)
"nonce_expire" (integer)
"password_column" (string)
"password_column_2" (string)
"ping_nated_only" (integer)
"port_column" (string)
"prefix" (string)
"prefix_column" (string)
"prefix_column" (string)
"priority_column" (string)
"proto_col" (string)
"proxy" (string)
"proxy_recurse" (int)
"proxy_route" (int)
"q_column" (string)
"radius_config" (string)
"radius_config" (string)
"radius_config" (string)
"radius_extra" (string)
"radius_flag" (integer)
"radius_missed_flag" (integer)
"realm_prefix" (string)
"realm_prefix" (string)
"realm_prefix" (string)
"received_avp" (integer)
"received_avp" (integer)
"received_column" (string)
"received_param" (integer)
"registrar" (string)
"registrar" (string)
"remove_hf(hname)" remove_hf(hname)"
"remove_latency" (integer)
"replace(""re, txt)"
"replace_all(re, txt)"
"report_ack" (integer)
"report_cancels" (integer)
"reqs_density_per_unit" (integer)
"restart_fr_on_each_reply" (integer)
"retr_timer1p1" (integer)
"retr_timer1p2" (integer)
"retr_timer1p3" (integer)
"retr_timer2" (integer)
"retry_after" (integer)
"rpid_avp" (string)
"rpid_avp" (string)
"rpid_prefix" (string)
"rpid_suffix" (string)
"rr_store_param" (string)
"rtp_asymmetrics" (string)
"rtpproxy_disable" (integer)
"rtpproxy_disable_tout" (integer)
"rtpproxy_retr" (integer)
"rtpproxy_sock" (string)
"rtpproxy_tout" (integer)
"ruri_matching" (integer)
"ruri_user_avp" (string)
"sampling_time_unit" (integer)
"sd_domain_column" (string)
"sd_user_column" (string)
"search(""re)" search(""re)"
"search_append(re, txt)"
"secret" (string)
"service_type" (integer)
"service_type" (integer)
"setvars" (integer)
"sip_asymmetrics" (string)
"sip_natping_flag" (integer)
"sipping_from" (string)
"sipping_method" (string)
"sleep_time" (integer)
"sms_report_type" (integer)
"sock_flag" (integer)
"sock_hdr_name" (string)
"socket_column" (string)
"source_col" (string)
"src_leg_avp_id" (integer)
"subscriber_domain_column" (string)
"subscriber_table" (string)
"subscriber_user_column" (string)
"subst(""'/re/repl/flags')" subst(""'/re/repl/flags')"
- 116 -
"subst_uri('/re/repl/flags')"
subst_uri('/re/repl/flags')"
"subst_user('/re/repl/flags')"
subst_user('/re/repl/flags')"
"suffix" (string)
"support" (string)
"sync_time" (integer)
"table" (string)
"tel_uri_params" (string)
"timer_avp" (string)
"timer_interval" (integer)
"transport_column" (string)
"trusted_table" (string)
"tw_append" (string)
"type_column" (string)
"unix_tx_timeout" (integer)
"uri_domain_column" (string)
"uri_scheme_column" (string)
"uri_table" (string)
"uri_uriuser_column" (string)
"uri_user_column" (string)
"use_branch_flags" (integer)
"use_contact" (int)
"use_contact" (integer)
"use_domain" (int)
"use_domain" (int)
"use_domain" (int)
"use_domain" (integer)
"use_domain" (integer)
"use_domain" (integer)
"use_domain" (integer)
"use_domain" (integer)
"use_domain" (integer)
"use_domain" (integer)
"use_uri_table" (integer)
"user_agent_column" (string)
"user_column" (str)
"user_column" (string)
"user_column" (string)
"user_column" (string)
"user_column" (string)
"username_column" (string)
"uuid_column" (string)
"value_column" (string)
"via1_matching" (integer)
"workers" (integer)
"wt_timer" (integer)
5.5.2.
Ubicacin
Todas las funciones existentes en la versin usada se encuentran explicadas dentro de cada
mdulo,
adems
se
puede
ver
una
lista
detallada
de
las
mismas
en
la
pgina:
http://www.openser.org/dokuwiki/doku.php/modules:1.0.x:index-functions.
5.6.
base al cual se est haciendo el enrutamiento, es necesario seguir una sintaxis especfica. Como es el
caso del enrutamiento por URI, FROM, TO.
Las entidades SIP identifican a los usuarios con las SIP URI, definidas en el RFC 2396. Una SIP
URI consta de un usuario y un dominio, delimitado por una @.
Por ejemplo si se desea hacer un enrutamiento por URI en funcin de los primeros dos dgitos
del telfono, la sintaxis es la siguiente:
uri=~"^sip:dgitos",
por ejemplo:
if (uri=~"^sip:04"){
regla a ejecutar;
}
Entonces, para ese caso, todos los nmeros 04xx-xxx-xxxx, sern enrutados en funcin de la
regla desarrollada.
Ahora, pueden presentarse situaciones en las cuales la regla de enrutamiento sea en funcin del
ltimo digito del nmero, como es el caso del enrutamiento por reparticin de carga, en este caso la
sintaxis a seguir es la siguiente:
uri=~"^sip[0-9]{cantidad_de_nmeros_a_esperar}dgito_final",
en este caso es necesario especificar la cantidad de nmeros que se espera recibir antes del digito
deseado.
Por ejemplo:
Aqu se especifica el dgito en que debe
terminar el nmero. En este caso, 1.
(uri=~"^sip:[0-9]{10}1"),
Los primeros diez dgitos pueden ser
cualquier nmero [0-9]
Continuando el ejemplo anterior si se desea enrutar todos los telfonos cuyo ltimo dgito sea
impar hacia un dominio en especfico, la sintaxis a seguir deberia ser:
- 118 -
if ((uri=~"^sip:[0-9]{10}1")||(uri=~"^sip:[0-9]{10}3")||(uri=~"^sip:[0-9]{10}5")||(uri=~"^sip:[09]{10}7")||(uri=~"^sip:[0-9]{10}9")){
prefix("7");
xlog("REPARTICION DE CARGA");
prefix2domain("2");
};
6. Ejecucin del servicio
6.1.
Reiniciar el servicio
Se necesita reiniciar el servicio cuando se ha hecho alguna modificacin dentro del archivo de
configuracin ya sea a travs de la consola o va Web, para hacer esto, se ejecuta desde la consola el
siguiente comando:
6.2.
mismo se encuentra detenido, quiere decir que hay algn error en el archivo de configuracin. Para
ver que clase de error es el que impide que el servicio inicie correctamente debe ubicarse en
/var/log:
cd /var/log
Una vez ubicado en el directorio especificado, se ejecuta el comando:
tail f messages
Este comando permite seguir en tiempo real, los errores y mensajes (logs y xlogs que se
encuentran dentro del archivo de configuracin que sirven de informacin o de punto de referencia
para depurar errores) que ocurren en el archivo de configuracin.
- 119 Colocamos
tail f messages
6.3.
Depuracin de errores
Para depurar el archivo de configuracin es necesario saber la lnea donde est ocurriendo el
error. Si es de sintaxis, se debe corregir el mismo y volver a reiniciar el servicio para ver si funciona
correctamente. Si es de linealidad (algn parntesis o punto y coma), el error puede estar en la lnea
correspondiente o antes de ella, para ello es recomendable mantener el archivo con cierto orden para
poder ubicar el error ms fcil. Por ultimo, si el error es que no se est ejecutando alguna lnea o
algn trozo de cdigo, es recomendable escribir lneas de mensajes para depurar el archivo, as que si
stas no aparecen en el log de mensajes quiere decir que no esta ejecutando ese trozo de cdigo y ah
se puede ir viendo, poco a poco, donde est el error.
6.4.
nmeros se puede usar la herramienta NGREP, para acceder a ella se coloca en la consola:
- 120 -
7.1.
Active sessions (active_sessions): esta tabla es usada por SERWeb. No es usada por OpenSER.
Database Aliases (dbaliases): esta tabla es usada por el mdulo alias_db como alternativa para
los alias del usuario va userloc.
Domains (domain): es usada por el mdulo domain para determinar si el host de un URI es
local o no.
Groups (grp): esta tabla es usada por el mdulo group como medio para chequear la
membresa a un grupo. Es usado principalmente para el Control de Acceso a listas (ACLs).
Gateway Groups (gw_grp): esta tabla es usada para propsitos administrativos, con el fin de
asociar nombres con la identificacin de grupo del gateway.
Least Cost Routing (lcr): dicha tabla es usada por las reglas LCR (Least Cost Routing).
- 121
Missed Calls (missed_calls): esta tabla es similar a la acc, pero es usada para reportar
llamadas perdidas.
Phone Book (phonebook): usada por la interfaz del usuario. Contiene la libreta de telfonos de
los usuarios.
Offline Message Storage (silo): esta tabla es usada por el mdulo msilo para proveer el
almacenamiento de mensajes offline.
Trusted (trusted): usada por el mdulo permissions para determinar si una llamada presenta
los permisos apropiados para ser establecida.
URI (uri): esta tabla es usada por el mdulo uri_db para implementar algunos chequeos
concernientes al URI del mensaje SIP.
User Preferentes (usr_preferentes): es usada por el mdulo AVP para implementar Attribute
Value Pairs AVPs
Table Versions (version): esta tabla contiene los nombres de las tablas de OpenSER, y nmero
de versin. Es usada por algunas rutinas de OpenSER para asegurar que la versin correcta de
una tabla en particular est siendo usada.
8. Errores Frecuentes
NOTA: la funcin de xlog([level,] format) slo puede ser usada por bloques de ruta de peticin, de
falla, de respuesta o de salto.
cp openser_original.cfg /etc/openser/openser.cfg
- 122 -
9. F.A.Q.
- 123
Slo puedo trabajar con los mensajes de INVITE? No, se puede trabajar con cualquier
mensaje SIP, lo que se tiene que hacer es configurar el archivo de configuracin para que de
la misma manera que lee los mensajes INVITE pueda hacer algo referente a los otros
mensajes.
Qu pasa si quiero modificar un parmetro o usar una funcin pero el mdulo al cual
pertenece no est cargado? si se hace uso de una funcin o parmetro y el mdulo no fue
cargado en la seccin de mdulos se mostrar el siguiente error (en el ejemplo que se
muestra, se est haciendo uso de parmetros contenidos en el mdulo TM):
Mdulo TM no
encontrado
Lnea de error
No se puede fijar el
parmetro del mdulo
Cmo compilo un mdulo de nuevo? En caso de que se desee volver a compilar algn
mdulo, debe borrarse de OpenSER el archivo con extensin .so correspondiente al mismo
(rm mdulo.so), luego debe hacerse make clean y por ultimo make.
Cmo busco una lnea que tiene un error dentro del openser.cfg? Cuando OpenSER reporta
errores, lo hace indicando la lnea del error y un pequeo comentario referente al mismo. Una
forma til de ubicar esa lnea en la consola es:
:nmero_de_la_lnea [ENTER]
- 124
Cmo se que hay errores en el script? Cuando se reinicia el servicio y da alguna falla en la
pantalla se muestra:
Se puede observar que se indica que ocurri una falla iniciando el servicio openser, y
se especifica que existe un error.
Para observar en detalle a qu se debe el error y dnde se encuentra el mismo,
deber ubicarse en el directorio: /var/log, y ejecutare el comando:
tail f messages
Una vez corregido el error, se reinicia el servicio de nuevo, si los errores fueron
solventados con xito, se observar por pantalla:
Cmo s que tipo de error esta ocurriendo? Primero debe dirigirse a /var/log y luego escribir
en consola: tail f messages, para ver el log de mensajes del OpenSER. En este log se
muestra cualquier mensaje escrito desde el archivo de configuracin y cualquier error que el
mismo tenga. Luego todo depende del comentario que acompae al error, por ejemplo, si
faltan las o se coloca un nombre de parmetro errado puede salir:
Lnea donde se
encuentra el error
Cmo hago si quiero que el OpenSER no ejecute una regla o alguna lnea de cdigo? Para
hacer que el OpenSER no ejecute algn comando o un trozo de cdigo, basta con comentar la
lnea o el trozo de cdigo y as al reiniciar el servicio no se ejecutar la parte comentada.
Para comentar una lnea, comience la misma con el carcter #. Para comentar un
trozo de cdigo coloque al inicio del mismo los caracteres: /* y al final */. De esta forma, el
cdigo que se encuentra entre los caracteres: /*
*/ no se ejecutar.
- 125
Qu es un log? Un log es un mensaje que se imprime por pantalla en /var/log, con estos logs
se puede ver que parte del script se est ejecutando en ese momento. Para incluir un log en el
archivo slo se agrega una lnea como la siguiente:
El
L_ALERT (-3): este nivel ser usado si el error requiere una accin inmediata.
L_CRIT (-2): el nivel debe ser usado si el error involucra una situacin crtica.
L_ERR (-1): este nivel debe ser usado para reportar errores durante el procesamiento
de data, pero que no cause un mal funcionamiento del sistema.
L_WARN (1): este nivel debe usarse para escribir mensajes de alerta.
L_NOTICE (2): este nivel debe usarse para reportar situaciones no usuales.
L_DBG (4): debe usarse para escribir mensajes para la depuracin de errores.
Nota: esta funcin puede ser usada por: REQUEST_ROUTE, FAILURE_ROUTE, ONREPLY_ROUTE,
BRANCH_ROUTE.
Qu
pasa
si
dao
el
archivo
de
configuracin
del
openser?
En
el
directorio
cp openser_original.cfg /etc/openser/openser.cfg
- 126 -
Qu es y cmo funciona el prefix2domain? Es una funcin del mdulo PDT la cual revisa
dentro de la base de datos si el prefijo que existe dentro de cualquier nmero SIP est dentro
de la lista guardada y de ser as reenruta la llamada al dominio asignado a ese prefijo.
usuarios
habilitados
para
crear
su
archivo
crontab
se
especifican
en
Si el comando a ejecutar es un archivo, este deber tener todos los permisos, para
ello, dirjase a travs de la consola a la carpeta donde se encuentra ubicado el mismo, y
ejecute el comando:
- 127 -
Deber verificar que el demonio crond est iniciado, para ello ejecute en la consola el
comando:
10.1.
Device
/dev/VolGroup00/logVol00
- 128 -
- 129 -
10.2.
Se observar una lista con todas las tablas contenidas en la base de datos de openser.
- 130 -
5. Para tener acceso a ftp, dirigirse a la ruta: /etc/vsftpd, en ella se encuentra un archivo
llamado user_list, debera acceder al l y eliminar al usuario root, de esta forma se le est permitiendo
el acceso al mismo a ftp.
Para que el cambio realizado en el archivo tenga efecto, es necesario reiniciar el servicio,
ejecutando para ello el comando: service ./vsftp restart
6. Instalacin del conector php-mysql. Esto es necesario para que las pginas webs
desarrolladas puedan comunicarse sin problemas con la base de datos de openser.
Para ello, debe ejecutarse el comando yum install php-mysql.
10.3.
- 131 -
- 132 -
10.4.
Instalacin Putty
Putty no necesita instalarse, slo lo ejecutas y entras
Uso de Putty
Al iniciar el programa se muestra la siguiente pantalla:
Se puede observar que se indica el nombre del host (Host Name), puerto (port) y las
sesiones almacenadas (saved sessions).
2. Crear sesin
Para esto, se debe ingresar el nombre del host, protocolo y un nombre para guardar la
configuracin.
En nuestro caso, el nombre del host corresponde a la direccin ip del servidor donde se
encuentra instalado OpenSER (161.196.58.47), Openser es el nombre que se le asign a la sesin, el
puerto es el 22, y se debe ecoger como protocolo SSH.
- 133 -
Iniciar Sesin
La primera vez que se acceda a un servidor, el programa nos pedir nuestro consentimiento
para poder acceder al mismo.
Por ltimo, se debe ingresar el login y password, con lo cual se habr iniciado sesin.
- 134 -
10.5.
Instalacin ngrep
Se deben realizar los siguientes pasos estando registrado como root. Para una mayor seguridad,
se pueden realizar la mayora de estos pasos como un usuario ordinario, pero un paso requiere estar
registrado como root.
1.- Dirigirse a http://ngrep.sourceforge.net para descargar el paquete. Descargar el archivo:
ngrep-1.44-1.tar.bz2. Se puede salvar el archivo en el directorio /home.
2.- Dirigirse a la consola y asegurarse que el archivo descargado se encuentra en el directorio
actual.
3.- Descomprimir el archivo con el comando
bzip2 dc ngrep-1.44-1.tar.bz2 | tar xvf Se crear entonces un subdirectorio llamado: ngrep-1.44-1.
4.- ./configure [ENTER]
5.- make
6.- para el paso siguiente se debe estar registrado como root, si no se encuentra registrado
como root, colocar el comando su en la consola y responder al password preguntado (este password
se refiere al del usuario root).
7.- make install
El programa ngrep ser ahora instalado en el directorio /home.
8.- Para el paso siguiente no es necesario estar registrado como root. Colocar exit para volver a
la sesin ordinaria del usuario.
9.- Ahora est instalado el programa ngrep.
10.6.
- 135 -
1. Desde el botn Inicio, dirigirse al men Configuracin, hacer click Panel de Control y luego en
Conexiones de red y Acceso Telefnico. Despus deber hacer doble clic en el cono Realizar
conexin nueva.
2. Luego de que se ha iniciado el Asistente para Conexin de Red, hacer clic en el botn
siguiente.
3. Se observar una una pantalla como la mostrada a continuacin. En ella se deber elegir la
opcin Conectar a una red privada a travs de Internet, y hacer clic en Siguiente.
- 136 -
6. Por ltimo deber especificarse el nombre con el cual se desea identificar a la conexin, luego
hacer clic en el botn Finalizar.
7. Cuando se desee conectar a la VPN, aparecer una pantalla como la mostrada. Deber
introducir el nombre de usuario y contrasea.
- 137 -
10.7.
- 138 -
5. Seleccionar la carpeta de men de inicio, es decir, donde se colocan los conos de acceso
directo al programa.
- 139 -
7. Aparecer una pantalla como la que se muestra a continuacin. En este instante, el programa
ya se encuentra listo para instalarse. Hacer clic en el botn instalacin.
Con esto, puede darse por finalizado el proceso de instalacin. Ahora ser necesario realizar la
configuracin de la sesin.
10.7.1.
2. Para crear una sesin debe hacerse clic en la opcin New, y se mostrar una pantalla como
la siguiente:
- 140 -
10.8.
Instalacin de X-lite
- 141 -
4. Se debe seleccionar cul ser el destino donde se instalar X-Lite, y luego hacer clic en el
botn Next.
- 142 -
7. Por ltimo aparecer una ventana como la mostrada. En este momento habr finalizado el
proceso de instalacin de X-Lite. Debe chequear que la opcin Launch X-Lite se encuentre
seleccionada, ya que de esta forma se cargar automticamente la aplicacin al presionar el
boton Finish. Posteriormente se prosigue con la configuracin.
Configuracin X-Lite
1. Luego de la instalacin de X-Lite aparecer una pantalla como la siguiente, en este momento
se puede configurar el Softphone.
- 143 -
2. Al hacer clic en la opcin Sip Account Settings, se mostrar una pantalla como la siguiente:
Se debe marcar la opcin enabled y hacer clic en el botn add. De esta forma, se est
agregando una cuenta. Al hacer esto aparecer una ventana donde se debern modificar un grupo de
parmetros.
- 144 -
10.9.
SIPp
SIPp es una herramienta de cdigo abierto para realizar pruebas de generacin de trfico
sobre el protocolo SIP. Incluye algunos escenarios de agentes de usuario SipStone15 (Agentes de
Usuario Cliente y Agentes de Usuario Servidor) y puede establecer y liberar mltiples llamadas con los
mtodos de INVITE y BYE. Presenta una muestra dinmica de las estadsticas de las pruebas activas
(ver figura X), descargas peridicas de las versiones con nuevas caractersticas, TCP y UDP sobre
multiples sockets con retransmisin supervisada y ajuste dinmico de la tasa de llamadas.
Algunas de caractersticas presentadas por SIPp son el soporte de IPv6, TLS, autentificacin
SIP, escenarios condicionales, retransmisiones UDP, robustez ante errores, expresiones regulares Posix
para extraer y re-insertar cualquier campo en el protocolo, ejecutar acciones en funcin del comando
recibido, entre otras.
SIPp puede adems enviar trfico de media RTP a travs de RTP echo16 y RTP/pcap17. La
media puede ser audio o audio y video.
Mientras se optimiza el trfico, stress y el funcionamiento de la prueba, SIPp puede ser usado
para ejecutar una sola llamada y salir, dando como resultado un veredicto de aprobado o fallido.
Tambin puede ser usado para probar equipos SIP como SIP proxies, B2BUAs, servidores de
media SIP, SIP/x gateways, SIP PBX. Adems es muy til para emular miles de agentes de usuario
llamando a un sistema SIP a evaluar.
Escenario de SIPp
15
Es un benchmark para los SIP Proxy y Servidores de Redireccionamiento. El trmino benchmark se refiere a una tcnica
para medir la capacidad del manejo de peticiones SIP de un Servidor SIP o un grupo de ellos.
16
La caracterstica RTP echo permite a SIPp escuchar una o dos direcciones IP locales y el puerto para la media RTP.
17
La caracterstica PCAP Play hace uso de la librera PCAP para reenviar trazas de streams RTP hacia su destino.
- 145 -
10.9.1.
Versiones de SIPp
la estable y la
inestable. La versin estable, como su nombre lo indica ha sido probada en detalle. Por ello se puede
estar seguro de que las caractersticas mencionadas funcionarn correctamente.
Los creadores de SIPp recomiendan trabajar con la versin estable para el uso diario si no se
necesita una caracterstica especfica que se encuentra solamente en la versin inestable.
Las nuevas caractersticas y arreglos se colocan en la pgina de SIPp tan pronto como stas se
encuentren disponibles.
Cada noche se hace una extraccin automtica y el cdigo fuente de dicha versin est
disponible.
Los creadores de SIPp recomiendan usar la versin inestable solamente en caso de que se
necesite un parche o una nueva caracterstica que no se encuentra disponible en la versin estable.
10.9.2.
Plataformas Disponibles
SIPp est disponible en la mayora de las plataformas UNIX: HPUX, Tru64, Linux (RedHat,
Debian, FreeBSD), Solaris/Sun/OS.
10.9.3.
Caractersticas Principales
Sipp permite generar una o varias llamadas SIP a un sistema remoto. La herramienta es
iniciada desde la lnea de comando. En el ejemplo mostrado, dos sipp son puestos en marcha uno en
frente de otro para demostrar las capacidades de sipp.
Ejecucin de SIPp en un escenario de servidor (uas):
sipp.exe sn uas
10.9.4.
Control de Trfico
SIPp genera trfico SIP de acuerdo al escenario especificado, ya que se puede controlar el
nmero de llamadas que se iniciarn por segundo. Esto se puede hacer de dos maneras:
De forma interactiva, presionando en el teclado:
- 146
-rp para especificar el periodo en milisegundos para la tasa de la llamada (el valor
por defecto es 1000ms/1s). Esto permitir tener n llamadas cada una de m milisegundos.
(Mediante el uso de r n rp m).
Por ejemplo, para correr SIPp a 7 llamadas cada 2 segundos (3.5 llamadas por segundo). Para
ello debe colocarse:
Cliente:
Sipp.exe sn uac r 7 2000 161.196.58.48
Servidor:
sipp.exe sn uas
Tambin puede detenerse el trfico presionando la tecla p. SIPp detendr el establecimiento
de nuevas llamadas y esperar hasta que todas las llamadas actuales culminen. Se podr reiniciar el
trfico presionando la tecla p de nuevo.
Para quitar SIPp se debe presionar la tecla q. SIPp detendr el establecimiento de nuevas
llamadas y esperar a que todas las llamadas actuales lleguen a su fin. En ese momento se podr salir
de SIPp.
Se pueden colocar un nmero definido de llamadas y salir de SIPp cuando las mismas hayan
finalizado. Use para ello la opcin m en la lnea de comando.
10.9.5.
Consumo de memoria
Para tener conocimiento del consumo de memoria que est originando SIPp, debe ejecutarse
el comando top en la lnea de comandos.
Al hacer esto, se observar una pantalla como la que se muestra en la siguiente figura
- 147 -
Consumo de memoria
Este comando muestra en tiempo real la situacin de los procesos que se estn ejecutando en
el sistema, ordenados por defecto segn el porcentaje la CPU que estn usando. Al ejecutarlo se podr
ver otra informacin adicional, como la cantidad de usuarios que estn en el sistema, cuntos procesos
estn corriendo y de estos cuntos estas activos, cuntos durmiendo, cuntos en proceso de terminar
(ZOMBIE) y cuntos finalizados. Adems se podr ver la cantidad e memoria fsica total, la cantidad
usada y la cantidad libre; as como tambin se podr obtener la misma informacin de la memoria
swap.
Lo ms importante es que esta informacin de ir actualizando automticamente cada cierto
tiempo, por defecto 5 segundos, de esta forma se tiene conocimiento de la evolucin de la memoria a
medida que SIPp y el resto de los programas se estn ejecutando.
11. Apndice 2: Explicacin de las lneas del archivo de configuracin del OpenSER
#
# $Id: openser.cfg,v 1.6 2006/02/15 18:23:46 bogdan_iancu Exp $
#
# simple quick-start config script
#
#------------------------------------------------------------------------------------#
parametros de configuracion global
#------------------------------------------------------------------------------------1.
2.
debug=3
fork=yes
- 148 -
3.
log_stderror=no
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
#
# Descomente las siguientes lneas para soporte TLS
#disable_tls = 0
#listen = tls:your_IP:5061
#tls_verify = 1
#tls_require_certificate = 0
#tls_method = TLSv1
#tls_certificate = "//etc/openser/tls/user/user-cert.pem"
#tls_private_key = "//etc/openser/tls/user/user-privkey.pem"
#tls_ca_list = "//etc/openser/tls/user/user-calist.pem"
#------------------------------------------------------------------------------------#
Modulos iniciales cargados
#-------------------------------------------------------------------------------------
22.
mpath="/usr/lib/openser/modules"
23.
24.
25.
26.
27.
28.
29.
30.
loadmodule
loadmodule
loadmodule
loadmodule
loadmodule
loadmodule
loadmodule
loadmodule
"mysql.so"
"sl.so"
"tm.so"
"rr.so"
"maxfwd.so"
"usrloc.so"
"registrar.so"
"textops.so"
#------------------------------------------------------------------------------------#
Ms mdulos
#------------------------------------------------------------------------------------31.
32.
33.
34.
35.
loadmodule
loadmodule
loadmodule
loadmodule
loadmodule
"uri.so"
"uac.so" # tm.so & rr.so deben haberse cargado!
"mediaproxy.so"
"acc.so" # tm.so & rr.so deben haberse cargado!
"permissions.so"
- 149 -
36.
37.
loadmodule "xlog.so"
loadmodule "enum.so"
# mysql.so deben haberse cargado antes de cargar los siguientes mdulos!
loadmodule "auth.so" # Descomente esto si quiere procesar la autentificacin
loadmodule "auth_db.so" # Descomente esto si quiere procesar la autentificacin
38.
39.
40.
41.
42.
43.
44.
loadmodule
loadmodule
loadmodule
loadmodule
loadmodule
loadmodule
loadmodule
"domain.so"
"group.so"
"avpops.so"
"lcr.so"
"uri_db.so"
"pdt.so"
"nathelper.so"
45.
46.
47.
48.
49.
datos
# -- parmetros de usrloc -modparam("usrloc", "db_mode", 2) #Los cambios ocurren en memoria y en la base de datos
# -- parametros de permisions -modparam("permissions", "default_allow_file", "/etc/openser/permissions.allow")
modparam("permissions", "default_deny_file", "/etc/openser/permissions.deny")
modparam("permissions", "db_mode", 1)
#La base de datos se va modificando
modparam("permissions", "trusted_table", "trusted") #Nombre de la tabla base en la base de
58.
# -- parmetros de rr -modparam("rr", "enable_full_lr", 1) # Ayuda con los UAs que eliminan el parmetro ";lr"
- 150 -
59.
modparam("rr", "append_fromtag", 1) #Si esta encendido, las peticiones de la etiqueta from
se anexan al "record_route", til para entender los siguientes mensajes o peticiones
# -- parmetros de tm -60.
modparam("tm", "fr_timer", 20) #Tiempo de espera por una peticin o un ACK por respuesta
a un INVITE negativo
61.
modparam("tm", "fr_inv_timer", 45) #Tiempo de espera por la respuesta a un INVITE despus
de un mensaje provisional (sec)
62.
modparam("tm", "wt_timer", 20) # Tiempo de transaccin en memoria para absorber
mensajes retrasados, si el tiempo expira se retrasnmiten CANCEL localmente.
63.
#modparam("tm", "noisy_ctimer", 1) # Si esta activo, las transacciones del INVITE fr_timer
sern canceladas.
# -- parmetros de acc -64.
modparam("acc", "db_flag", 1) #Bandera que lleva la contabilidad de las transacciones
realizadas
65.
modparam("acc", "db_missed_flag", 3) #Bandera que lleva la contabilidad de las llamadas
perdidas
66.
modparam("acc", "log_level", 3) #Nivel al cual son mostrados los mensajes en el syslog
67.
modparam("acc", "log_flag", 1) #Activar para llevar la contabilidad de las transacciones
68.
modparam("acc", "log_missed_flag", 3) #Activar para llevar la contabilidad de llamadas
perdidas
69.
modparam("acc", "log_fmt", "cdfimorstup") #Indica que parte de los encabezados muestra el
syslog
70.
modparam("acc", "report_ack", 1) # Mantiene un reporte de los ACK de las llamadas
71.
modparam("acc", "report_cancels", 1) #Reporta los CANCEL en las llamadas para llevar su
contabilidad
72.
modparam("acc", "failed_transaction_flag", 4) #Dice si la transaccin puede ser contabilizada
en caso de falla.
73.
modparam("acc","db_table_missed_calls","missed_calls") #Nombre de la tabla de contabilidad
de llamadas perdidas
74.
modparam("acc","db_table_acc","acc") #Nombre de la tabla de de llamadas exitosas
75.
76.
77.
78.
81.
- 151 -
82.
modparam("nathelper","natping_interval",10) #Tiempo (seg) entre el envo de pings NATs a
los UAs
# -- parmetros de registrar -83.
modparam("registrar","nat_flag", 6) #Si esta bandera est en alto entonces el registro viene
detrs de un NAT.
84.
modparam("registrar","default_expires",1800) # Crea nuevos registros en los USRLOCS
85.
modparam("registrar","min_expires",60) # El mnimo tiempo en que expira el valor de un
contacto
86.
modparam("registrar","max_expires",120) #El mximo tiempo en que expira el valor de un
contacto
87.
modparam("registrar","retry_after",30) # Genera un mensaje de respuesta
88.
modparam("registrar","append_branches",1) # Slo la peticin con mas alto valor Q es
sobrescrita
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
route{
append_time(); # Mostrar la hora en las respuestas de peticiones
#----------------------------------------------------------------------------# Chequeo inicial
#-----------------------------------------------------------------------------
102.
103.
104.
105.
- 152 -
106.
107.
};
exit;
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
if (method=="OPTIONS") {
###options_reply();
exit;
}
#------------------------------------------------------------------------------# Seccin de grabacin de ruta
#
# se guardan todas las rutas de los mensajes -- para estar seguros que los otros
# mensajes siguientes puedan ir a travs del proxy; esto es particularmente
# bueno si los entes de entrada y salida usan distintos protocolos de transporte
#-------------------------------------------------------------------------------
121.
122.
123.
124.
125.
126.
127.
128.
129.
if (method=="CANCEL" || method=="BYE") {
#end_media_session();
setflag(1);
setflag(3);
};
#----------------------------------------------------------------------------# Seccin de Registro
- 153 -
#----------------------------------------------------------------------------130.
131.
132.
133.
134.
135.
136.
if (method=="REGISTER") {
if (!www_authorize("161.196.58.48", "subscriber"))
{
www_challenge("161.196.58.48", "0");
exit;
};
137.
138.
139.
140.
141.
142.
143.
144.
if (!check_to()){
sl_send_reply("401","Unauthorized");
exit;
}
# Guardar en la base de datos de usuarios, si el chequeo indico que
# el usuario esta disponible
log(1, "REGISTER: User Authenticated Correctly\n");
save("location");
exit;
};
#-----------------------------------------------------------------------------# Rechazo de llamadas con ID desconocido
#-----------------------------------------------------------------------------
145.
if
((method=="INVITE")&&(search("^(f|F)rom:.*(a|A)nonymous")||(search("^(f|F)rom:.*(u|U)nknow")))){
146.
log(1,"From:Anonymous");
147.
route(5);
148.
exit;
149.
};
#-----------------------------------------------------------------------------# Seccin de ruta dbil
#
# Los mensajes siguientes sin dialogo pueden tomar el camino determinado por el
# camino registrado "record-routing"
#-----------------------------------------------------------------------------150.
151.
152.
153.
if (loose_route()) {
# marcar la lgica de peticin de enrutamiento
append_hf("P-hint: rr-enforced\r\n");
route(1);
};
#-----------------------------------------------------------------------------# Seccin de enrutamiento por Alias
#------------------------------------------------------------------------------
154.
155.
156.
lookup("aliases");
if (!uri==myself) {
append_hf("P-hint: outbound\r\n");
- 154 -
157.
158.
route(1);
};
#-----------------------------------------------------------------------------# si la peticin es de otro dominio usar el Usrloc (en caso de que no funcione,
# usar los siguientes comandos con los nombres apropiados y las direcciones
# adecuadas (usar la seccin del INVITE)
#-----------------------------------------------------------------------------#-----------------------------------------------------------------------------# Redireccionamiento
#-----------------------------------------------------------------------------/*
rewriteuri("sip:85984@voip.brujula.net"); # reescribe el URI actual
# append_branch("sip:redirect@siphub.net:9");
sl_send_reply("300", "Redirect"); #Redireccionar
*/
159.
160.
161.
if (uri==myself) {
if (method=="INVITE"){
append_time();
setflag(1);
setflag(2);
setflag(3);
#--------------------------------------------------------------------# ENRUTAMIENTO POR URI
#--------------------------------------------------------------------#------------------------------------------------------------# Llamadas a voip.brujula.net
#-------------------------------------------------------------
/*
170.
171.
172.
173.
174.
175.
176.
if (uri=~"^sip:8"){
log(1,"CALL: Call to voip.brujula.net (8) \n");
route(4);
};
if (uri=~"^sip:\*"){
xlog("CALL: Call to voip.brujula.net (*) \n");
strip(1);
- 155 -
177.
178.
route(2);
};
#------------------------------------------------------------# Llamadas por prefix to domain
#-------------------------------------------------------------
179.
180.
181.
XX)\n");
182.
183.
if (uri=~"^sip:04"){
prefix("7");
xlog("CALL: Llamadas a nmeros mviles (04XX-XXX-XX-
184.
185.
186.
XX)\n");
187.
188.
if (uri=~"^sip:02"){
prefix("7");
xlog("CALL: Llamadas a nmeros nacionales (02XX-XXX-XX-
189.
190.
191.
nmero)\n");
192.
193.
194.
195.
196.
197.
prefix2domain("2");
};
prefix2domain("2");
};
if (uri=~"^sip:00"){
prefix("7");
xlog("CALL: Llamadas
nmeros
internacionales
prefix2domain("2");
};
if (uri=~"^sip:7"){
xlog("CALL: Call to PSTN (7) \n");
prefix2domain("2");
};
198.
199.
200.
201.
202.
if (uri=~"^[0-9]2"){
prefix("0001");
xlog ("PAAAAAAAAR");
prefix2domain("1");
};
#------------------------------------------------------------# Llamadas a Asterisk
#-------------------------------------------------------------
203.
204.
205.
if (uri=~"^sip:1112"){
xlog("CALL: Call to Asterisk (1112) \n");
};
#------------------------------------------------------------# Llamadas a brekeke
#-------------------------------------------------------------
206.
207.
if (uri=~"^sip:2"){
log(1,"CALL: Call to Brekeke (2) \n");
(00-pas-rea-
- 156 -
208.
209.
route(6);
};
*/
# INSERTE REGLA DE ENRUTAMIENTO POR URI AQUI
#--------------------------------------------------------------------# ENRUTAMIENTO POR CAMPO:"FROM"
--------------------------------------------------------------------/*
210.
211.
212.
213.
214.
if (search("[Ff][Rr][Oo][Mm]: 1111")){
xlog("ENRUTAMIENTO POR FROM");
prefix("7");
prefix2domain("2");
};
*/
# INSERTE REGLA DE ENRUTAMIENTO POR FROM AQUI
#--------------------------------------------------------------------# ENRUTAMIENTO POR CAMPO:"TO"
#---------------------------------------------------------------------
215.
216.
217.
218.
219.
/*
if (search("[Tt][Oo]: <sip:04")){
xlog("ENRUTAMIENTO POR FROM");
prefix("7");
prefix2domain("2");
};*/
# INSERTE REGLA DE ENRUTAMIENTO POR TO AQUI
#--------------------------------------------------------------------# ENRUTAMIENTO POR "HORA"
#---------------------------------------------------------------------
220.
221.
222.
223.
224.
/* if (uri=~"^sip:04"){
prefix("7");
xlog("CALL: Llamadas a nmeros mviles (04XX-XXX-XX-XX)\n");
prefix2domain("2");
};
225.
226.
227.
228.
229.
if (uri=~"^sip:02"){
prefix("7");
xlog("CALL: Llamadas a nmeros nacionales (02XX-XXX-XX-XX)\n");
prefix2domain("2");
};
230.
231.
232.
nmero)\n");
233.
234.
if (uri=~"^sip:00"){
prefix("7");
xlog("CALL: Llamadas a
};
235.
236.
if (uri=~"^sip:7"){
xlog("CALL: Call to PSTN (7) \n");
prefix2domain("2");
- 157 -
237.
238.
prefix2domain("2");
};
*/
# INSERTE REGLA DE ENRUTAMIENTO POR HORA AQUI
#--------------------------------------------------------------------# REPARTICION DE CARGA
#---------------------------------------------------------------------
239.
if((uri=~"^sip:[0-9]{10}1")||(uri=~"^sip:[0-9]{10}3")||(uri=~"^sip:[09]{10}5")||(uri=~"^sip:[0-9]{10}7")||(uri=~"^sip:[0-9]{10}9")){
240.
prefix("7");
241.
xlog("REPARTICION DE CARGA");
242.
prefix2domain("2");
243.
};
244.
if((uri=~"^sip:[0-9]{10}2")||(uri=~"^sip:[0-9]{10}4")||(uri=~"^sip:[09]{10}6")||(uri=~"^sip:[0-9]{10}8")||(uri=~"^sip:[0-9]{10}0")){
245.
prefix("7");
246.
xlog("REPARTICION DE CARGA");
247.
prefix2domain("2");
248.
};
};
260.
route(1);
261.
};
#--------------------------------------------------------------------# Destinos propios de SIP son manejados por la base de datos USRLOC
#---------------------------------------------------------------------
262.
263.
264.
265.
266.
if (!lookup("location")) {
log(1,"404 not found");
sl_send_reply("404", "Not Found");
exit;
};
267.
268.
269.
- 158 -
270.
route[1] {
# enviarlo fuera, usar reenvo con seguimiento de estados incluso para
UDP2TCP
271.
if (!t_relay()) {
272.
sl_reply_error();
273.
setflag(1);
274.
setflag(2);
275.
setflag(3);
276.
};
277.
t_on_failure("1");
278.
exit;
279.
}
280.
route[2] {
281.
282.
283.
284.
285.
286.
287.
288.
rewritehost("65.110.41.100");
forward(65.110.41.100,5060);
setflag(1);
setflag(2);
setflag(3);
t_on_failure("1");
exit;
}
289.
route[3]{
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
route[4]{
rewriteuri("sip:85984@voip.brujula.net"); # reescribe el URI actual
sl_send_reply("300", "Redirect"); #Redireccionar
setflag(1);
setflag(2);
setflag(3);
t_on_failure("1");
exit;
}
301.
302.
303.
304.
305.
306.
307.
308.
309.
route[5]{
log(1,"Anonymous call rejection \n");
rewriteuri("sip:85001234@voip.brujula.net");
t_on_failure("1");
log(1,"Anonymous call rejection 1\n");
#t_on_reply("1");
if (!t_relay()) {
sl_reply_error();
};
310.
311.
312.
route[6]{
rewritehost("161.196.169.238");
exit;
- 159 -
313.
314.
315.
316.
317.
318.
forward(161.196.169.238,5060);
setflag(1);
setflag(2);
setflag(3);
t_on_failure("1");
exit;
319.
320.
321.
322.
323.
324.
325.
326.
327.
route[7]{
rewritehost("161.196.58.47");
forward(161.196.58.47,5060);
setflag(1);
setflag(2);
setflag(3);
t_on_failure("1");
exit;
328.
}
#INSERTE RUTA AQUI
329.
failure_route[1]{
330.
331.
332.
333.
334.
335.
336.
337.
338.
failure_route[2] {
log(1,"NO MORE ROUTE\n");
t_reply("503", "Service not available");
}
OpenSER est construido en base a un ncleo de procesos que recibe mensajes SIP y habilita
funciones bsicas para el manejo de los mismos. La mayor parte de la funcionalidad de OpenSER se
ofrece a travs de sus mdulos. Por el hecho de tener una estructura modular, el OpenSER es capaz
de tener un ncleo reducido, rpido y estable. Los mdulos de OpenSER permiten el uso de algunas
funciones dentro del archivo de configuracin de OpenSER, openser.cfg. Este archivo de configuracin
controla cules mdulos sern cargados as como tambin su comportamiento segn las variables
fijadas en cada uno.
Lnea 1: OpenSER tiene informacin para la depuracin de errores que puede ser habilitada o
suprimida usando la instruccin debug. El valor nominal 3, es especificado usualmente para
obtener una gran cantidad de informacin cuando ocurren errores. La instruccin debug, especifica
cunta informacin se escribir en el syslog. Para nmeros ms altos, la informacin se har ms
- 160 -
extensa y detallada (siendo 9 el nivel ms alto), ocasionando adems, que el tiempo de inicio de
OpenSER sea mayor.
Lneas 7 - 8: estas lneas tienen como funcin evitar que OpenSER realice operaciones de
bsqueda de su direccin IP en el DNS. Mediante la incorporacin de estas dos lneas en el archivo
openser.cfg, se elimina cualquier advertencia si su IP no se encuentra en el Servidor DNS.
Lnea 10: la funcin listen le indica a OpenSER qu debe escuchar, ya sea una direccion IP,
dominio, una interfaz de red o una combinacin de [protocolo]:[direccin]:[puerto]. Si se omite este
comando, OpenSER escuchar todas las interfaces.
Este parmetro puede soportar cambios en el archivo de configuracin dndole distintos
dominios y/o puertos.
Lnea 11: el comando children le indica a OpenSER cuntos procesos se van a generar
cuando el servidor inicie. El valor por defecto es 8, el maximo valor que puede tomar es 32.
Lnea 12: el comando fifo especifica la localizacin del FIFO de OpenSER. El FIFO puede ser
usado si se desea agregar un nuevo mensaje SIP directamente en el Proxy SIP con una aplicacin
externa. Un buen ejemplo de ello es serctl el cual usualmente se encuentra localizado en
/usr/local/sbin/. Con l se pueden manejar usuarios, hacer ping a URIs SIP, enviar correos a
usuarios SIP. Serctl hace todo esto internamente usando FIFO.
El FIFO se puede localizar en cualquier parte del disco, sin embargo OpenSER debe ser capaz
de crear el FIFO en el directorio especificado. Si este no se especifica, el servicio no iniciar.
Lnea 13: el comando fifo_db_url es tambin incluido para suprimir las advertencias que si no,
apareceran al incluir el soporte de mysql. No se usa fifo_db_url directamente en openser.cfg, sin
embargo, otras herramientas como openserctl lo usa para agregar usuarios en la base de datos.
- 161 -
Lnea 22: sirve para especificar la ruta donde se encuentran los mdulos, de esta forma al
agregar un mdulo slo es necesario escribir: loadmodule modulo.so. En caso contrario, se debe
especificar la ruta completa.
Lneas 24 30: Aqu se tienen mdulos externos que son necesarios para el funcionamiento del
Proxy.
Si est imaginando cmo saber cul mdulo o mdulos necesitar, en principio no hay forma
clara de saberlo. En general, los mdulos mostrados aqu sern necesarios por cualquier configuracin
Proxy. Cuando se necesita agregar funcionalidades adicionales, como conectividad Mysql, entonces
deber cargar el mdulo apropiado, en este caso el mdulo mysql.so.
Algunos mdulos presentan parmetros que necesitan ser activados en el archivo openser.cfg
para el funcionamiento adecuado del servicio. Otros mdulos, sin embargo, operan normalmente en la
mayora de los casos sin necesidad de hacer un ajuste de los parmetros.
Lnea 45: el mdulo USRLOC es responsable de no perder de vista las localizaciones del registro
del cliente SIP. En otras palabras, cuando un cliente SIP se registra con el Proxy SIP, OpenSER
almacenar la informacin del contacto en una tabla. Esta tabla es consultada cuando otro cliente SIP
hace una llamada. La localizacin de esta tabla depende del valor del parmetro db_mode.
0.- deshabilita la base de datos completamente. Solamente ser usada la memoria. Los
contactos no sobreviven a un reinicio. Usar este valor si se necesita realmente un usrloc rpido y no
es necesaria la persistencia del contacto, o la misma es proporcionada por otros medios.
1.- Esquema Write-Through. Todos los cambios en el usrloc son reflejados inmediatamente en
la base de datos tambin. Esto resulta muy lento pero confiable. Se recomienda usar este esquema si
la velocidad no es prioridad pero se necesita estar seguro de que no se perdern los usuarios
registrados durante una falla o reinicio.
2.- Esquema Write-Back. Es una combinacin de los dos esquemas previos. Todos los cambios
son realizados en la memoria y la sincronizacin de la base de datos es hecha en el contador de
tiempo. Este contador elimina a todos los contactos que han expirado y limpia todas las modificaciones
o nuevos contactos en la base de datos. Usar este esquema si se tienen picos de mucha carga y se
quieren procesar tan rpido como sea posible. Este modo no ayudar si la carga es alta en toda hora.
- 162 -
Tambin, la latencia de este modo es mucho menor que la del modo 1, pero levemente mayor que la
del modo 0.
Lnea 48: el mdulo permissions necesita saber si se tiene que conectar con MySQL para
encontrar los datos.
Lnea 50: los mdulos: auth_db, permissions, uri_db, usrloc, acc, msilo, grp,
domain, lcr, necesitan tener acceso a la base de datos MySQL, por ello se agrega a la lista del
parmetro db_url.
Lnea 58: El parmetro llamado enable_full_lr es realmente para trabajar en base a clientes SIP
viejos que no manejan propiamente los encabezados del SIP record-route.
Lnea 66: el parmetro log_level indica el nivel de detalle al cual son mostrados los mensajes en
el syslog.
Lneas 89 90: el envo de la llamada es dependiente del mdulo avpops. Este mdulo
necesita tener acceso a la base de datos de mysql para leer las preferencias de envo de llamada de un
suscriptor en la tabla usr_preferences. Por ello, aqu se especifica la base de datos mysql y la tabla
para las preferencias de envo de llamada.
Lnea 100: es el comienzo de la lgica de procesamiento. Esta lnea define el bloque de ruta
principal. Un bloque de ruta principal debe tener una llave de principio y final. (100 y 269
respectivamente).
El bloque de ruta principal es donde todos los mensajes SIP recibidos son enviados. Desde el
bloque de ruta principal puede llamar otros bloques de ruta, chequear mensajes para ciertas
condiciones, rechazar el mensaje, retransmitirlo, entre otras, de acuerdo a las necesidades que se
tengan.
- 163 -
causar condiciones de ciclos infinitos. Tambin otros Proxy SIP con los que OpenSER interacta hacen
lo mismo.
La regla bsica es que si la funcin siempre retorna true, entonces es necesario dejar de
procesar el mensaje con problemas para evitar un lazo infinito.
Lnea 104: la function log() imprime el mensaje especificado en el syslog. Sirve para la
depuracin de errores.
Lnea 105: si se detecta un ciclo infinito, OpenSER necesita tener una manera de informar al
cliente SIP que ha ocurrido un error. La funcin sl_send_reply() permite hacer esto. Dicha funcin
se encuentra presente en el mdulo sl.so, y todo lo que hace es enviar un mensaje sin seguimiento de
estado al cliente SIP. Esto significa que enva el mensaje y se olvida del mismo. No tratar de
reenviarlo en caso de que no llegue al destinatario o no se tenga una respuesta.
Se puede especificar un mensaje de error apropiado como se muestra. El mensaje de error
puede solamente ser seleccionado de los cdigos de error y mensajes SIP definidos. Muchos telfonos
SIP lo mostrarn en forma del mensaje de texto al usuario.
Lnea 106: la sentencia exit le indica a OpenSER que debe detener el procesamiento del
mensaje SIP y salir del bloque de ruta que est ejecutando en ese instante. Puesto que se est
llamando a la sentencia exit en el bloque de ruta principal, OpenSER detendr completamente el
procesamiento del mensaje actual.
Lnea 108: msg:len es una funcin del ncleo de OpenSER que retorna la longitud en bytes del
mensaje SIP actual. Entonces, como la funcin mf_process_maxfwd_header() debe ser llamada al
comienzo del bloque de ruta principal en todos los archivos de configuracin openser.cfg.
Esta sentencia simplemente chequea que la longitud del mensaje SIP no sea mayor que el
mximo permitido. Si el mensaje SIP es muy largo, entonces se detendr el proceso ya que se habr
detectado un potencial desbordamiento del buffer.
Lnea 110: OpenSER necesita tener una manera de informar al cliente SIP que ha ocurrido un
error. La funcin sl_send_reply() permite hacer esto. Dicha funcin se encuentra presente en el
mdulo sl.so, y todo lo que hace es enviar un mensaje sin seguimiento de estado al cliente SIP. Esto
significa que enva el mensaje y se olvida del mismo. No tratar de reenviarlo en caso de que no llegue
al destinatario o no se tenga una respuesta.
- 164 -
Lnea 125: cuando se recibe un mensaje BYE o CANCEL, se debe asumir que es para una
llamada que se ha establecido con un mediaproxy. Inmediatamente se debe procurar terminar la
sesin del RTP Proxy. Es perfectamente seguro llamar a la funcin end_media_session(), incluso
para llamadas que no provengan de un Proxy RTP.
Lnea 126: le indica al mediaproxy que debe terminar la sesin de la llamada actual.
Lnea 130: en esta lnea se chequea si el mensaje recibido es un mensaje REGISTER, en caso
de no serlo, esta parte de la rutina es obviada. La palabra method es proporcionada por el ncleo de
openser y permite encontrar qu tipo de mensaje SIP se est manejando.
Lnea 131: la funcin www_authorize() es usada para chequear las credenciales del usuario
contra los valores almacenados en la tabla subscriber de mysql. Si las credenciales provedas son
correctas, la funcin retorna true, en caso contrario retorna false.
El primer parmetro especifica el dominio en el cual autentificar el usuario. El segundo valor le
dice a OpenSER cul tabla de mysql debe usar para encontrar las credenciales de la cuenta del
usuario.
Lnea 133: aqu realmente se enva un mensaje 401 unauthorized al cliente SIP para que
ste retransmita la peticin con las credenciales digest incluidas.
La function www_challenge() toma dos argumentos. El primero es el dominio, el cual
tambin aparecer en el encabezado www-Authorize que OpenSER le enva al cliente SIP. Si se coloca
un valor aqu, entonces el dominio le aparecer al cliente SIP cuando se retransmite la peticin de las
credenciales.
El segundo valor afecta la inclusin del parmetro gop en la peticin de las credenciales. Es
recomendable colocar este valor en 1. Para una completa descripcin de la autentificacin digest,
- 165 -
Lnea 135: al enviar el mensaje de error 401 en la lnea previa, no es necesario mantener este
mensaje de registro. Luego, se usa el comando exit para retornar al bloque de ruta principal.
Lnea 137: cuando se opera un proxy SIP, se debe estar seguro de que cuentas de usuario
vlidas, que fueron registradas satisfactoriamente, no pueden ser usadas por usuarios no
autentificados. Debido a ello, OpenSER incluye la funcin check_to().
Se llama a la funcin check_to() antes de validar el mensaje de registro.
Esto hace que OpenSER valide el campo To: contra las credenciales previamente validadas. Si
no coinciden, debe rechazarse el mensaje REGISTER y enviar un mensaje de error.
Lnea 138 - 139: si la funcin check_to() retorna false, debe enviarse un mensaje 401
Unauthorized al cliente SIP. Luego se llama al comando exit para retornar al bloque de ruta
principal.
Lnea 142: la funcin save() es responsable de almacenar la informacin de registro del cliente
SIP en la tabla location.
Lnea 150: la funcin loose_route() prueba para ver si el mensaje SIP debe ser enrutado
libremente o no. Si el mensaje debe ser enrutado libremente, entonces OpenSER simplemente debe
reenviar el mensaje al siguiente destino especificado en el encabezado Record-Route.
En todos los archivos openser.cfg se debe llamar a la funcin loose_route() despus de la
funcin record_route(). Referirse a RFC3261 para una explicacin completa de loose_route().
Lnea 152: si la prueba de enrutamiento libre retorna true, entonces se deber reenviar el
mensaje sin otro procesamiento. Para hacer esto, se pasa el control del bloque en ejecucin al bloque
de ruta[1].
- 166 -
Lnea 264: si la parte que est siendo llamada no puede ser localizada, entonces OpenSER
reenviar un mensaje de error: 404 User Not Found.
Lnea 272: si la funcin t_relay() en la lnea 281 no enva el mensaje SIP, entonces
sl_reply_error() enviar el error al cliente SIP para informar que ha ocurrido un error en l.
Lnea 277: la funcin t_on_failure() informa a OpenSER que se quiere tener un manejo
especial de la llamada cuando ocurren condiciones de falla. En este contexto, se refieren condiciones
de falla a cdigos de respuesta de tipo: 4xx, 5xx.
Lnea 281: La funcin rewritehost() es usada para modificar el R-URI de modo que el
mensaje sea retransmitido al gateway de la PSTN. Se debe pasar la direccin IP del gateway de la
PSTN a esta funcin. De dicha forma, OpenSER enviar el mensaje INVITE al gateway de la PSTN
correctamente cuando se llama a la funcin t_relay().
- 167 -
Aplicaciones instaladas.
Configuracin ServeRAID.
sistema.
en la ruta: /etc.
ella encontrar una carpeta que contiene las pginas donde est toda la informacin de
sistema. Se deber guardar en la PC la carpeta que se encuentra descomprimida.
- 168 -
Se muestra la pgina principal que contiene las caractersticas del sistema. As mismo, del lado
derecho se encuentran links que redireccionan al resto de la informacin colectada por el DSA.
useradd nombre_del_usuario
2. Posteriormente debe escribirse un password para el usuario ejecutando el comando:
passwd nombre_del_usuario
Y repetirlo a fin de evitar errores. Por motivos de seguridad no se ver el password que se
est escribiendo. Se puede adems cambiar el password del usuario, usando el comando
- 169 -
passwd. Si est conectado como usuario root puede cambiarse el password de cualquier
usuario.
3. Luego es necesario cambiar los permisos de los archivos que se desea que el usuario tenga
control.
El usuario creado tiene como inconveniente que no posee el conjunto de permisos requeridos
para poder detener e iniciar servicios de los cuales es necesario tener el control cuando se
trabaja con la aplicacin de OpenSER.
Es por ello que se hace necesario recurrir a la opcin de SUDO, mejor conocida como Super
Usuario. SUDO Superuser DO es una herramienta que permite otorgar a un usuario o grupo
de usuarios normales, permisos para ejecutar algunos comandos como si fuese el usuario
root18 (o como otros usuarios) sin necesidad de conocer su password.
13.1.
Lnea a agregar
Para efectuar este cambio ser necesario que se est iniciado como usuario root.
3. Luego de modificar el archivo de configuracin, el usuario estar en la capacidad de reiniciar
los servicios, para ello debe dirigirse a la siguiente ubicacin:
cd /etc/init.d
En este directorio se encuentran todos los scripts que facilitan el inicio y cierre de los
demonios (programas). Estos scripts normalmente toman argumentos del tipo: stop, start,
status, restart.
Entre estos demonios pueden mencionarse:
18
Vsftpd
Httpd
Openser
Mysq
- 170 -
1. Introduccin
El siguiente manual tiene como finalidad facilitarle al administrador el manejo de la aplicacin web
de OpenSER. En el mismo se explica el funcionamiento de cada una de las partes que la conforman,
siguiendo un esquema ms o menos similar al que puede encontrarse en el modo de trabajo habitual.
La aplicacin aqu descrita se encuentra escrita enteramente en lenguaje PHP y trabaja con cualquier
browser moderno.
Para poder acceder a la aplicacin, deber ingresar a travs de la pgina web de Login por
medio del par usuario/contrasea.
2. Entrada a la Aplicacin
Al entrar a la pgina el administrador debe introducir su nombre de usuario y contrasea, si estos
son vlidos, se observar una pgina como la mostrada en la Figura 1:
- 171 -
Si se desea eliminar parte del archivo de configuracin, o editarlo, ser necesario que el
administrador lo realice directamente en la consola.
Si tiene dudas de cmo acceder al archivo de configuracin de OpenSER desde la consola, ver
detalles en el manual de OpenSER que se encuentra en el Anexo1 de este libro.
En caso de que se deseen agregar nuevas reglas de enrutamiento, parmetros de configuracin
de OpenSER, cargar otros mdulos, u otra ruta, esto puede hacerse a travs del servidor web, el cual
se encargar de insertar el cdigo en el lugar apropiado.
Para modificar el archivo de configuracin de OpenSER desde serweb, se debe escoger la opcin
Modificar el Archivo de Configuracin de la lista desplegable mostrada en la Figura 1. Al hacer esto,
se dirigir a una pgina como la que se muestra en la Figura 2.
Manual
de ayuda
Archivo
de
configuracin
de openser
Agregar
cdigo
en
el
archivo de configuracin
- 172 -
NOTA: Es importante destacar que esto debe realizarse con pleno cuidado y seguridad ya que si
se incluye el cdigo en un lugar errado (esto se refiere a elegir una opcin equivocada en la lista
desplegable) muy probablemente OpenSER fallar o no se ejecutar correctamente.
Uso:
Esta herramienta permite realizar cambios tanto internos como externos a OpenSER. Se dice que
un cambio es interno a OpenSER, cuando las modificaciones se realizan directamente en el archivo de
configuracin de OpenSER (openser.cfg), lo cual implica que es necesario reiniciar el servicio de
OpenSER para que los cambios efectuados sean tomados en cuenta.
Por otro lado, se dice que un cambio es externo a OpenSER cuando ste no se realiza en el
archivo de configuracin, sino por ejemplo en la base de datos de OpenSER. Cuando esto ocurre no es
- 173 -
necesario reiniciar el servicio de OpenSER ya que no han ocurrido cambios dentro del archivo de
configuracin.
Como desarrollador, la idea consiste en ofrecer la posibilidad de modificar va Web los dominios
para el enrutamiento de las llamadas a travs de OpenSER, sin necesidad de tener que acceder a la
base de datos.
Una vez ingresado al portal, se encontrar una pgina como la que se muestra a continuacin:
2.2.
El administrador debe elegir alguna de las opciones de la lista desplegable, en funcin de los
parmetros que desee modificar para el enrutamiento de las llamadas telefnicas.
Enrutamiento por URI: permite dirigir las llamadas hacia uno u otro dominio segn el nmero
destinatario, en funcin de las reglas asignadas en el archivo de configuracin openser.cfg.
- 174 -
Por ejemplo, podra asignarse un dominio para las llamadas realizadas a dispositivos mviles,
otro dominio para las llamadas realizadas hacia nmeros nacionales, y otro para las llamadas
internacionales. El criterio a usar depender de las necesidades que se tengan.
Si se escoge de la lista desplegable la opcin Enrutamiento por URI, se mostrar la tabla de
los prefijos existentes con sus correspondientes dominios. Adicionalmente, se presentan como links las
opciones EDITAR, AGREGAR y VOLVER AL INICIO.
Editar: al hacer click en esta opcin, se observar una pgina similar a la mostrada en
la Figura 5:
- 175 -
Editar un prefijo, consiste en cambiar el dominio actual de un prefijo existente dado, por uno
nuevo. Es necesario que el prefijo que se desea editar se encuentre dentro de la tabla de prefijos, en
caso contrario se mostrar un mensaje de error.
Agregar: si se elige esta opcin, se observar una pantalla como la que se muestra:
- 176 -
Muy parecida a la de opcin editar, en este caso se debe introducir un nuevo prefijo con su
correspondiente dominio. Resulta importante sealar que no se puede agregar un prefijo si ste ya
existe en la tabla ya que un mismo prefijo no puede tener dos dominios diferentes, en dicho caso el
dominio no ser agregado, y se mostrar un mensaje de error.
Volver al inicio: como su nombre lo indica, nos permite regresar a la pgina principal.
Enrutamiento por From: permite enrutar las llamadas hacia uno otro dominio en funcin del
usuario que inici la llamada. Esto, de acuerdo a las reglas de enrutamiento establecidas en el archivo
de configuracin de OpenSER.
Por ejemplo, podra asignarse un dominio en especfico a las llamadas realizadas por telfonos
con un determinado cdigo de rea.
- 177 -
En la pgina principal de enrutamiento por el campo From, se muestra una tabla con los
prefijos y sus correspondientes dominios. Adems se presentan tres links con opciones de EDITAR,
AGREGAR y VOLVER AL INICIO.
- 178 -
Se deber colocar el prefijo a editar, y el nuevo dominio al cual se enrutarn las llamadas que
presenten dicho prefijo numrico.
En caso de que el prefijo no se encuentre en la tabla, se mostrar un mensaje de error.
Agregar: permite agregar un nuevo prefijo para el enrutamiento por el campo From,
con su correspondiente dominio a la tabla prefix2domain.
- 179 -
Volver al inicio: como su nombre lo indica, nos permite regresar a la pgina principal.
Enrutamiento por To: muy similar al enrutamiento por URI, las reglas de enrutamiento se
hacen en funcin del parmetro To del mensaje INVITE.
- 180 -
Similar a las tablas correspondientes a los enrutamientos anteriores, se muestra una tabla con
los prefijos y sus respectivos dominios para el enrutamiento en funcin del campo To del INVITE.
Tambin se presentan los links para EDITAR y AGREGAR prefijos en la tabla, as como para VOLVER
AL INICIO.
- 181 -
- 182 -
Volver al inicio: como su nombre lo indica, nos permite regresar a la pgina principal.
Enrutamiento por Hora: permite dirigir las llamadas, en un determinado rango de hora hacia un
dominio en especfico, en funcin de las necesidades que se tengan. Con esta opcin, al igual que en
los casos anteriores, se mostrar una tabla que contiene los prefijos y sus dominios para este tipo de
enrutamiento.
- 183 -
Editar: esta opcin sirve para modificar el dominio y/o el rango de horas entre las
cuales estar activo el enrutamiento de las llamadas de un prefijo ya existente en la tabla.
- 184 -
- 185 -
Enrutamiento por Reparticin de Carga: permite enrutar las llamadas en funcin del ltimo
dgito del nmero llamado. Esto puede justificarse ya que por ejemplo, hay servidores que en horas
pico no tienen la capacidad para manejar completamente el trfico sino que es necesario repartir el
mismo hacia dos o ms dominios.
- 186 -
Editar: esta opcin sirve para modificar un prefijo existente, o cambiar el dominio
hacia el cual se enrutarn las llamadas.
- 187 -
Agregar: esta opcin, al igual que como se explic en los enrutamientos anteriores,
permite agregar nuevos prefijos para realizar enrutamientos mediante reparticin de carga.
- 188 -
- 189 -
Agregar_openser.php
Editar_prefijo_to_html.php
Agregar_prefijo_carga.php
Editar_prefijo_uri.php
Agregar_prefijo_carga_html.php
Editar_prefijo_uri_html.php
Agregar_prefijo_from.php
Enrutamiento_ppal.php
Agregar_prefijo_from_html.php
Frames.php
Agregar_prefijo_hora.php
Indice.html
Agregar_prefijo_hora_html.php
Modificar_openser.php
Agregar_prefijo_to.php
Mostrar_prefijos_CARGA.php
Agregar_prefijo_to_html.php
Mostrar_prefijos_FROM.php
Agregar_prefijo_uri.php
Mostrar_prefijos_HORA.php
Agregar_prefijo_uri_html.php
Mostrar_prefijos_TO.php
Editar_prefijo_carga.php
Mostrar_prefijos_URI.php
Editar_prefijo_carga_html.php
Pagina_inicio.php
Editar_prefijo_from.php
LoginSW.php
Editar_prefijo_from_html.php
ProblemconnSW.php
Editar_prefijo_hora.php
UserhandlerSW.php
Editar_prefijo_hora_html.php
ValidateSW.php
Editar_prefijo_to.php
Si se desea colocar la pgina web en un servidor con una direccin IP diferente, en principio
ser necesario modificar en los archivos que se indican a continuacin la correspondiente direccin IP
para lograr el establecimiento de la conexin con la base de datos:
ProblemconnSW.php
Mediante este archivo se establece la conexin con la base de datos. En l se especifica el host,
la base de datos, el usuario su correspondiente contrasea.
LoginSW.php
Este archivo consiste en un formulario en el cual se recoge el nombre de usuario y contrasea,
las cuales son posteriormente pasadas a otro archivo php que se encargar de realizar la validacin y
por ende, permitir o denegar el acceso a la aplicacin web.
- 190 -
ValidateSW.php
Se encarga de corroborar los datos introducidos por el usuario. En caso de que el ingreso sea
exitoso, se le permite el acceso al usuario a la pgina principal.
Por motivos de seguridad, se utilizan las cookies. Una cookie es una porcin de informacin que
se guarda en el navegador permitiendo identificar el mismo por cierto intervalo de tiempo, estando la
informacin disponible entre varias pginas del mismo sitio.
La asignacin de la cookie se hace desde la funcin setcookie(). Esta funcin enva una cookie,
pero lo hace junto a la cabecera de la pgina, por esto es muy importante enviar las cookies antes de
mandar a imprimir cualquier cosa en la pgina, es decir si hay que enviar una cookie, para que no
genere error de cabeceras hay que enviarla antes de enviar cualquier echo u otro tipo de salida.
Userhandler.php
Mediante el archivo validateSW.php, el usuario ya tiene las cookies en su sistema. Sin embargo,
es necesario comprobar en las pginas que se desee, si el login es correcto, que el usuario adems
posee las cookies y que stas son vlidas. Para ello se crea este archivo, el cual se encarga de leer las
cookies y decir si es un usuario registrado y que ha hecho el respectivo ingreso al sistema.
Pagina_inicio.php
Es la pgina principal de la aplicacin web. En ella el administrador puede elegir que actividad
desea llevar a cabo.
Modificar Archivo de configuracin
Cambiar prefijos de enrutamiento
Frames.php
Como su nombre lo indica, consiste en una divisin de la pantalla del navegador en dos cuadros
que muestran contenidos de indice.html y modificar_openser.php
Modificar_openser.php
Mediante este archivo se hace bsicamente una lectura al archivo de configuracin de openser,
guardndolo en un archivo de extensin .txt para su posterior uso.
Adems, aqu se genera la lista desplegable con las diferentes opciones de cdigo a insertar en
el archivo de configuracin de OpenSER.
Agregar_openser.php
Se encarga de crear los puntos de insercin para los mdulos, parmetros, rutas y cada regla de
enrutamiento con el fin de lograr incluir de forma exitosa el cdigo en el archivo de configuracin de
openser.
- 191 -
- 192 -
Ac deber agregarse la
nueva opcin
Figura 20: Lista desplegable de los tipos de enrutamiento
Agregar_prefijo_Xphp
Esta explicacin aplica para todos los tipos de enrutamiento (URI, FROM, TO, hora, Reparticin
de Carga) es por ello que se ha puesto la letra x como un genrico a todos los tipos de enrutamiento.
Como su nombre lo indica, este programa establece una conexin en la base de datos e inserta
en la tabla prefix_domain el prefijo con su correspondiente dominio, as como el tipo de
enrutamiento al cual pertenece el mismo.
Agregar_prefijo_x_html.php
Esta explicacin aplica para todos los tipos de enrutamiento (URI, FROM, TO, hora, Reparticin
de Carga) es por ello que se ha puesto la letra x como un genrico a todos los tipos de enrutamiento.
Muestra una caja de texto (ver Figuras 6, 9, 12, 15, y 18) en ellas el administrador deber
introducir el prefijo a aadir con su correspondiente dominio. Los datos recopilados en este formulario
se entregan a su correspondiente archivo Agregar_prefijo_x.php.
Agregar_prefijo_URI_html.php
Agregar_prefijo_URI.php
Agregar_prefijo_TO.php
Agregar_prefijo_hora_html.php
Agregar_prefijo_hora.php
Agregar_prefijo_carga_html.php Agregar_prefijo_carga.php
Editar_prefijo_x.php
Por su parte, y como su nombre lo indica, este programa se encarga de editar o modificar el
dominio para un prefijo en especfico, esto lo hace estableciendo una conexin con la base de datos y
editando en la tabla prefix_domain el dominio para el prefijo insertado por el administrador va
web .
Editar_prefijo_x_html.php
De forma similar a Agregar_prefijo_x_html.php, establece una caja de texto (Ver Figuras 5, 8,
11, 14, 17), en ellas el administrador introduce el prefijo y el nuevo dominio al cual se enrutarn las
llamadas cuando se reciban llamadas con dicho prefijo numrico.
Los datos recopilados en este formulario se entregan a su correspondiente archivo
Editar_prefijo_x.php.
Editar_prefijo_URI_html.php
Editar_prefijo_URI.php
Editar_prefijo_FROM_html.php
Editar_prefijo_FROM.php
Editar_prefijo_TO_html.php
Editar_prefijo_TO.php
Editar_prefijo_hora_html.php
Editar_prefijo_hora.php
Editar_prefijo_carga_html.php
Editar_prefijo_carga.php
ndice.html
Contiene links a documentos que sirven de ayuda al administrador web.
En caso de que se desee agregar nueva informacin a la pgina, ser necesario incluir la misma
en la ruta /var/www/html al igual que todos los archivos que conforman la pgina web.
- 194 -
Para agregar un nuevo link siguiendo el esquema desarrollado hasta ahora, ser necesario
agregar una lnea de cdigo como la mostrada a continuacin. En ella debe especificarse el archivo as
como el link con el cual se desea aparezca en la pgina web.
<tr><td height=27><a ref. nombre_del_archivo target=_blank><p align=center class= style2 style5>
Nombre_del_link </p></td></tr>
Mostrar_prefijos_x.php
Esta explicacin aplica para todos los tipos de enrutamiento (URI, FROM, TO, hora, Reparticin
de Carga) es por ello que se ha puesto la letra x como un genrico a todos los tipos de enrutamiento.
Este archivo hace una conexin con la base de datos de openser, y recupera de la misma todos
los prefijos con sus correspondientes dominios para el tipo de enrutamiento seleccionado y luego los
muestra en forma tabulada. Los datos recopilados se entregan a su correspondiente archivo
Mostrar_prefijos_x_html.php con el fin de hacer una tabla dinmica en la que se muestren los prefijos.
Mostrar_prefijo_URI_html.php
Mostrar_prefijo_URI.php
Mostrar_prefijo_FROM_html.php Mostrar_prefijo_FROM.php
Mostrar_prefijo_TO_html.php
Mostrar_prefijo_TO.php
Mostrar_prefijo_hora_html.php
Mostrar_prefijo_hora.php
Mostrar_prefijo_carga_html.php Mostrar_prefijo_carga.php
Adems en ella se encuentran los links hacia las otras pginas que ofrecen el resto de
funcionalidades en lo que respecta al manejo de los prefijos para los enrutamientos.
Al igual que en la pgina explicada anteriormente, si se desea agregar una nueva funcionalidad
referente al manejo de los prefijos debe seguirse la misma sintaxis.
Mostrar_prefijos_x_html.php
Es la interfaz donde se le muestra al administrador, para cada enrutamiento, una tabla con los
prefijos y su correspondiente dominio, as como los links hacia las pginas que permiten bien sea
agregar o modificar un prefijo para esa clase de enrutamiento.
4. FAQ
- 195 -
Probablemente este problema se debe a que cuando se realiz el proceso de instalacin del
programa se obvi eliminar el usuario root de la lista de usuarios que no tienen permitido el acceso a
ftp.
Para esto, dirjase a la ruta /etc/vsftpd con el siguiente comando:
cd /etc/vsftpd
Edite el archivo user_list: vi user_list
All saldr una lista de usuarios, elimine de ella el usuario con el cual est accediendo al ftp,
guarde los cambios: esc : wq! Y posteriormente proceda a reiniciar el servicio ftp para que sus
cambios tomen efecto. Para ello ejecute la instruccin: service ./vsftpd restart
ejemplo, el
servidor
puede
recibir
una
peticin para
el
siguiente
documento:
http://dominio/index.html
El servidor buscar el fichero en el siguiente directorio por defecto:
/var/www/html/foo.html
6. Qu debo modificar si se coloca la pgina web en un servidor con una direccin IP distinta a
la 161.196.58.48?
Todos los archivos que se listan a continuacin presentan en al menos una lnea de cdigo un
redireccionamiento a otra pgina web, es por ello que ser necesario sustituir la direccin en caso de
que la aplicacin web se monte en un servidor con direccin IP distinta.
- 196 -
Por ejemplo: supongamos que ahora la direccin IP del servidor en que se va a montar la
aplicacin web es: 161.158.70.54
Para un archivo en el cual aparezca un redireccionamiento como el mostrado:
<meta http-equiv="refresh" content="4; URL=http://161.196.58.48/editar_prefijo_carga.php">
Ser necesario sustituir la URL por la nueva direccin:
<meta http-equiv="refresh" content="4; URL=http://161.158.70.54/editar_prefijo_carga.php">
A continuacin se lista un grupo de archivos que conforman la aplicacin web. En los mismos se
debern modificar las correspondientes URL en funcin de la nueva direccin IP que se tenga.
agregar_prefijo_carga.php
agregar_prefijo_from.php
agregar_prefijo_hora.php
agregar_prefijo_to.php
agregar_prefijo_uri.php
agregar_prefijo_.php
decisin_inicio.php
editar_prefijo_carga.php
editar_prefijo_from.php
editar_prefijo_hora.php
editar_prefijo_to.php
editar_prefijo_uri.php
modificar_openser.php
mostrar_prefijos_carga.php
mostrar_prefijos_from.php
mostrar_prefijos_hora.php
mostrar_prefijos_to.php
mostrar_prefijos_uri.php
toma_decisin.php
7. Qu se debe hacer si se desea cambiar el nombre de alguno de los archivos que conforman la
aplicacin web?
Como se sabe, una aplicacin web tpicamente est formada por un conjunto de archivos que se
llaman unos a otros en funcin de la estructura de programacin que se haya realizado. Debido a esto,
internamente en la programacin, es usual que un
El archivo
agregar_prefijo_carga_html.php
hace uso de
agregar_prefijo_carga.php
- 198 -
Es por ello que resulta necesario siempre q se cambie el nombre de alguno de los archivos, realizar los
cambios correspondientes en el resto.
- 200 -
161.196.168.122:9375;branch=z9hG4bK-d87543-555568460-1--d87543;rport=9375..From: 1112<sip:1112@161.196.58.48>;tag=7b3f
434c..To: <sip:02125001824@161.196.58.48>..Call-ID:
2e71af224e724d51..CSeq: 1 INVITE..User-Agent: Asterisk PBX..Allow: I
NVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY..Contact:
<sip:702125001824@161.196.58.47>..Content-Length: 0
....
#
U 161.196.58.47:5060 -> 200.109.126.164:5060
INVITE sip:02125001824@sip.ops.cantv.net;user=phone SIP/2.0..Via:
SIP/2.0/UDP 161.196.58.47:5060;branch=z9hG4bK1ce48ce4;
rport..From: "1112"
<sip:2123360502@sipproxy.cantv.net>;tag=as010aa68f..To:
<sip:02125001824@sip.ops.cantv.net;user=phon
e>..Contact: <sip:2123360502@161.196.58.47>..Call-ID:
2145884a7b64b8aa3f63371b1fc076c1@sipproxy.cantv.net..CSeq: 102 INV
ITE..User-Agent: Asterisk PBX..Max-Forwards: 70..Date: Thu, 04 Jan 2007
15:31:03 GMT..Allow: INVITE, ACK, CANCEL, OPTION
S, BYE, REFER, SUBSCRIBE, NOTIFY..Content-Type: application/sdp..ContentLength: 239....v=0..o=root 2793 2793 IN IP4 161
.196.58.47..s=session..c=IN IP4 161.196.58.47..t=0 0..m=audio 5212 RTP/AVP
0 8 101..a=rtpmap:0 PCMU/8000..a=rtpmap:8 PCM
A/8000..a=rtpmap:101 telephone-event/8000..a=fmtp:101 016..a=silenceSupp:off - - - -..
#
U 200.109.126.164:5060 -> 161.196.58.47:5060
SIP/2.0 100 Trying..Via: SIP/2.0/UDP
161.196.58.47:5060;branch=z9hG4bK1ce48ce4;rport=5060..From: "1112"
<sip:2123360502@
sipproxy.cantv.net>;tag=as010aa68f..To:
<sip:02125001824@sip.ops.cantv.net;user=phone>..Call-ID:
2145884a7b64b8aa3f63371
b1fc076c1@sipproxy.cantv.net..CSeq: 102 INVITE....
#
U 161.196.58.47:5060 -> 200.109.126.164:5060
ACK sip:02125001824@sip.ops.cantv.net;user=phone SIP/2.0..Via: SIP/2.0/UDP
161.196.58.47:5060;branch=z9hG4bK1ce48ce4;rpo
rt..From: "1112" <sip:2123360502@sipproxy.cantv.net>;tag=as010aa68f..To:
<sip:02125001824@sip.ops.cantv.net;user=phone>;
tag=1167923394-9031411168826535-21..Contact:
<sip:2123360502@161.196.58.47>..Call-ID: 2145884a7b64b8aa3f63371b1fc076c1@s
ipproxy.cantv.net..CSeq: 102 ACK..User-Agent: Asterisk PBX..Max-Forwards:
70..Content-Length: 0....
#
U 200.109.126.164:5060 -> 161.196.58.47:5060
SIP/2.0 183 Session Progress..Via: SIP/2.0/UDP
161.196.58.47:5060;branch=z9hG4bK6a5b643f;rport=5060..From: "1112" <sip:2
123360502@sipproxy.cantv.net>;tag=as010aa68f..To:
<sip:02125001824@sip.ops.cantv.net;user=phone>;tag=1167923394-91326611
68836660-21..Call-ID:
2145884a7b64b8aa3f63371b1fc076c1@sipproxy.cantv.net..CSeq: 103
INVITE..Contact: <sip:02125001824@2
00.109.126.164:5060;transport=udp>..Content-Type:
application/sdp..Content-Length: 210....v=0..o=hiQ9200/CN0/010/052/121
05256520070004114821 171180153 IN IP4 200.109.126.164..s=Phone Call via
hiQ9200 SIPCA..c=IN IP4 200.109.126.164..t=0 0.
.m=audio 35364 RTP/AVP 8..a=rtpmap:8 PCMA/8000..a=sendrecv..
- 201 -
#
U 200.109.126.164:5060 -> 161.196.58.47:5060
SIP/2.0 183 Session Progress..Via: SIP/2.0/UDP
161.196.58.47:5060;branch=z9hG4bK6a5b643f;rport=5060..From: "1112" <sip:2
123360502@sipproxy.cantv.net>;tag=as010aa68f..To:
<sip:02125001824@sip.ops.cantv.net;user=phone>;tag=1167923394-91326611
68836660-21..Call-ID:
2145884a7b64b8aa3f63371b1fc076c1@sipproxy.cantv.net..CSeq: 103
INVITE..Contact: <sip:02125001824@2
00.109.126.164:5060;transport=udp>..Content-Length: 0....
#
U 161.196.58.47:5060 -> 161.196.58.48:5060
SIP/2.0 183 Session Progress..Via: SIP/2.0/UDP
161.196.58.48;branch=z9hG4bKa0fe.6bb463a.0;received=161.196.58.48..Via: S
IP/2.0/UDP 161.196.168.122:9375;branch=z9hG4bK-d87543-555568460-1--d87543;rport=9375..From: 1112<sip:1112@161.196.58.48
>;tag=7b3f434c..To: <sip:02125001824@161.196.58.48>;tag=as390a5302..CallID: 2e71af224e724d51..CSeq: 1 INVITE..User-Agen
t: Asterisk PBX..Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER,
SUBSCRIBE, NOTIFY..Contact: <sip:702125001824@161.196.
58.47>..Content-Type: application/sdp..Content-Length: 239....v=0..o=root
2793 2793 IN IP4 161.196.58.47..s=session..c=I
N IP4 161.196.58.47..t=0 0..m=audio 6010 RTP/AVP 0 8 101..a=rtpmap:0
PCMU/8000..a=rtpmap:8 PCMA/8000..a=rtpmap:101 telep
hone-event/8000..a=fmtp:101 0-16..a=silenceSupp:off - - - -..
#
U 161.196.58.48:5060 -> 161.196.168.122:9375
SIP/2.0 183 Session Progress..Via: SIP/2.0/UDP
161.196.168.122:9375;branch=z9hG4bK-d87543-555568460-1--d87543-;rport=937
5..From: 1112<sip:1112@161.196.58.48>;tag=7b3f434c..To:
<sip:02125001824@161.196.58.48>;tag=as390a5302..Call-ID: 2e71af2
24e724d51..CSeq: 1 INVITE..User-Agent: Asterisk PBX..Allow: INVITE, ACK,
CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY.
.Contact: <sip:702125001824@161.196.58.47>..Content-Type:
application/sdp..Content-Length: 239....v=0..o=root 2793 2793
IN IP4 161.196.58.47..s=session..c=IN IP4 161.196.58.47..t=0 0..m=audio
6010 RTP/AVP 0 8 101..a=rtpmap:0 PCMU/8000..a=rt
pmap:8 PCMA/8000..a=rtpmap:101 telephone-event/8000..a=fmtp:101 016..a=silenceSupp:off - - - -..
#
U 200.109.126.164:5060 -> 161.196.58.47:5060
SIP/2.0 180 Ringing..Via: SIP/2.0/UDP
161.196.58.47:5060;branch=z9hG4bK6a5b643f;rport=5060..From: "1112"
<sip:2123360502
@sipproxy.cantv.net>;tag=as010aa68f..To:
<sip:02125001824@sip.ops.cantv.net;user=phone>;tag=1167923394913266116883666021..Call-ID: 2145884a7b64b8aa3f63371b1fc076c1@sipproxy.cantv.net..CSeq:
103 INVITE..Contact: <sip:02125001824@200.109.12
6.164:5060;transport=udp>..Content-Length: 0....
#
U 161.196.58.47:5060 -> 161.196.58.48:5060
SIP/2.0 180 Ringing..Via: SIP/2.0/UDP
161.196.58.48;branch=z9hG4bKa0fe.6bb463a.0;received=161.196.58.48..Via:
SIP/2.0/UD
P 161.196.168.122:9375;branch=z9hG4bK-d87543-555568460-1--d87543;rport=9375..From: 1112<sip:1112@161.196.58.48>;tag=7b3
- 202 -
f434c..To: <sip:02125001824@161.196.58.48>;tag=as390a5302..Call-ID:
2e71af224e724d51..CSeq: 1 INVITE..User-Agent: Asteri
sk PBX..Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE,
NOTIFY..Contact: <sip:702125001824@161.196.58.47>..C
ontent-Length: 0....
#
U 161.196.58.47:5060 ->161.196.58.48:5060
SIP/2.0 180 Ringing..Via: SIP/2.0/UDP
161.196.58.47:5060;branch=z9hG4bK6a5b643f;rport=5060..From: "1112"
<sip:2123360502
@sipproxy.cantv.net>;tag=as010aa68f..To:
<sip:02125001824@sip.ops.cantv.net;user=phone>;tag=1167923394913266116883666021..Call-ID: 2145884a7b64b8aa3f63371b1fc076c1@sipproxy.cantv.net..CSeq:
103 INVITE..Contact: <sip:02125001824@200.109.12
6.164:5060;transport=udp>..Content-Length: 0....
#
U 161.196.58.48:5060 -> 161.196.168.122:9375
SIP/2.0 180 Ringing..Via: SIP/2.0/UDP 161.196.168.122:9375;branch=z9hG4bKd87543-555568460-1--d87543-;rport=9375..From:
1112<sip:1112@161.196.58.48>;tag=7b3f434c..To:
<sip:02125001824@161.196.58.48>;tag=as390a5302..Call-ID: 2e71af224e724d51
..CSeq: 1 INVITE..User-Agent: Asterisk PBX..Allow: INVITE, ACK, CANCEL,
OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY..Contact:
<sip:702125001824@161.196.58.47>..Content-Length: 0....
#
U 200.109.126.164:5060 -> 161.196.58.47:5060
SIP/2.0 200 OK..Via: SIP/2.0/UDP
161.196.58.47:5060;branch=z9hG4bK6a5b643f;rport=5060..From: "1112"
<sip:2123360502@sipp
roxy.cantv.net>;tag=as010aa68f..To:
<sip:02125001824@sip.ops.cantv.net;user=phone>;tag=11679233949132661168836660-21..C
all-ID: 2145884a7b64b8aa3f63371b1fc076c1@sipproxy.cantv.net..CSeq: 103
INVITE..Contact: <sip:02125001824@200.109.126.164
:5060;transport=udp>..Allow: REGISTER, INVITE, ACK, BYE, CANCEL, NOTIFY,
REFER..Accept-Language: en; q=0.0..Content-Type
: application/sdp..Content-Length: 210....v=0..o=hiQ9200/CN0/010/052/121
05256520070004114821 171180153 IN IP4 200.109.1
26.164..s=Phone Call via hiQ9200 SIPCA..c=IN IP4 200.109.126.164..t=0
0..m=audio 35364 RTP/AVP 8..a=rtpmap:8 PCMA/8000..
a=sendrecv..
#
U 161.196.58.47:5060 -> 200.109.126.164:5060
ACK sip:02125001824@200.109.126.164:5060;transport=udp SIP/2.0..Via:
SIP/2.0/UDP 161.196.58.47:5060;branch=z9hG4bK5748b2
e1;rport..From: "1112"
<sip:2123360502@sipproxy.cantv.net>;tag=as010aa68f..To:
<sip:02125001824@sip.ops.cantv.net;user=p
hone>;tag=1167923394-9132661168836660-21..Contact:
<sip:2123360502@161.196.58.47>..Call-ID: 2145884a7b64b8aa3f63371b1fc0
76c1@sipproxy.cantv.net..CSeq: 103 ACK..User-Agent: Asterisk PBX..MaxForwards: 70..Content-Length: 0....
#
U 161.196.58.47:5060 -> 161.196.58.48:5060
- 203 -
- 204 -
02125001824@161.196.58.48>;tag=as390a5302..To:
1112<sip:1112@161.196.58.48>;tag=7b3f434c..Contact: <sip:702125001824@161
.196.58.47>..Call-ID: 2e71af224e724d51..CSeq: 102 BYE..User-Agent:
Asterisk PBX..Max-Forwards: 70..Content-Length: 0....
#
U 161.196.168.122:9375 -> 161.196.58.47:5060
SIP/2.0 200 OK..To: 1112<sip:1112@161.196.58.48>;tag=7b3f434c..From:
<sip:02125001824@161.196.58.48>;tag=as390a5302..Via
: SIP/2.0/UDP
161.196.58.47:5060;branch=z9hG4bK7b00404a;rport=5060;received=161.196.58.47.
.Call-ID: 2e71af224e724d51..CS
eq: 102 BYE..Contact: <sip:1112@161.196.168.122:9375>..Content-Length:
0....
ANEXO 4. Trazas de una llamada desde un telfono IP, colgando ste, hacia un telfono en
la PSTN.
- 206 -
- 207 -
68154974-21..Call-ID:
32316029369155616999758024d114c7@sipproxy.cantv.net..CSeq: 103
INVITE..Contact: <sip:02125001824@2
00.109.126.164:5060;transport=udp>..Content-Length: 0....
#
161.196.58.47:5060 -> 161.196.58.48:5060
SIP/2.0 183 Session Progress..Via: SIP/2.0/UDP
161.196.58.48;branch=z9hG4bK513c.c8b42013.0;received=161.196.58.48..Via:
SIP/2.0/UDP 161.196.168.122:9375;branch=z9hG4bK-d87543-497890199-1-d87543-;rport=9375..From: 1112<sip:1112@161.196.58.4
8>;tag=e159c21f..To: <sip:02125001824@161.196.58.48>;tag=as02b47578..CallID: 6b3730519b0fb428..CSeq: 1 INVITE..User-Age
nt: Asterisk PBX..Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER,
SUBSCRIBE, NOTIFY..Contact: <sip:702125001824@161.196
.58.47>..Content-Type: application/sdp..Content-Length: 239....v=0..o=root
2793 2793 IN IP4 161.196.58.47..s=session..c=
IN IP4 161.196.58.47..t=0 0..m=audio 7460 RTP/AVP 0 8 101..a=rtpmap:0
PCMU/8000..a=rtpmap:8 PCMA/8000..a=rtpmap:101 tele
phone-event/8000..a=fmtp:101 0-16..a=silenceSupp:off - - - -..
#
161.196.58.48:5060 -> 161.196.168.122:9375
SIP/2.0 183 Session Progress..Via: SIP/2.0/UDP
161.196.168.122:9375;branch=z9hG4bK-d87543-497890199-1--d87543-;rport=937
5..From: 1112<sip:1112@161.196.58.48>;tag=e159c21f..To:
<sip:02125001824@161.196.58.48>;tag=as02b47578..Call-ID: 6b37305
19b0fb428..CSeq: 1 INVITE..User-Agent: Asterisk PBX..Allow: INVITE, ACK,
CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY.
.Contact: <sip:702125001824@161.196.58.47>..Content-Type:
application/sdp..Content-Length: 239....v=0..o=root 2793 2793
IN IP4 161.196.58.47..s=session..c=IN IP4 161.196.58.47..t=0 0..m=audio
7460 RTP/AVP 0 8 101..a=rtpmap:0 PCMU/8000..a=rt
pmap:8 PCMA/8000..a=rtpmap:101 telephone-event/8000..a=fmtp:101 016..a=silenceSupp:off - - - -..
#
200.109.126.164:5060 -> 161.196.58.47:5060
SIP/2.0 180 Ringing..Via: SIP/2.0/UDP
161.196.58.47:5060;branch=z9hG4bK40ad24d3;rport=5060..From: "1112"
<sip:2123360502
@sipproxy.cantv.net>;tag=as1d25fc2e..To:
<sip:02125001824@sip.ops.cantv.net;user=phone>;tag=1167923513231461116815497421..Call-ID: 32316029369155616999758024d114c7@sipproxy.cantv.net..CSeq:
103 INVITE..Contact: <sip:02125001824@200.109.12
6.164:5060;transport=udp>..Content-Length: 0....
#
161.196.58.47:5060 -> 161.196.58.48:5060
SIP/2.0 180 Ringing..Via: SIP/2.0/UDP
161.196.58.48;branch=z9hG4bK513c.c8b42013.0;received=161.196.58.48..Via:
SIP/2.0/U
DP 161.196.168.122:9375;branch=z9hG4bK-d87543-497890199-1--d87543;rport=9375..From: 1112<sip:1112@161.196.58.48>;tag=e1
59c21f..To: <sip:02125001824@161.196.58.48>;tag=as02b47578..Call-ID:
6b3730519b0fb428..CSeq: 1 INVITE..User-Agent: Aster
isk PBX..Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE,
NOTIFY..Contact: <sip:702125001824@161.196.58.47>..
Content-Length: 0....
#
- 208 -
- 209 -
62;rport..From: "1112"
<sip:2123360502@sipproxy.cantv.net>;tag=as1d25fc2e..To:
<sip:02125001824@sip.ops.cantv.net;user=p
hone>;tag=1167923513-2314611168154974-21..Contact:
<sip:2123360502@161.196.58.47>..Call-ID: 32316029369155616999758024d1
14c7@sipproxy.cantv.net..CSeq: 104 BYE..User-Agent: Asterisk PBX..MaxForwards: 70..Authorization: Digest username="2123
360502", realm="sip.ops.cantv.net", algorithm=MD5,
uri="sip:02125001824@200.109.126.164:5060", nonce="3089300540-7373191
f87ba3a5fc82b6820d51b3161", response="3dc319f56609afe793044819aff7dd8d",
opaque="", qop=auth, cnonce="440581e2", nc=0000
0002..Content-Length: 0....
#
200.109.126.164:5060 -> 161.196.58.47:5060
SIP/2.0 200 OK..Via: SIP/2.0/UDP
161.196.58.47:5060;branch=z9hG4bK54822d62;rport=5060..From: "1112"
<sip:2123360502@sipp
roxy.cantv.net>;tag=as1d25fc2e..To:
<sip:02125001824@sip.ops.cantv.net;user=phone>;tag=11679235132314611168154974-21..C
all-ID: 32316029369155616999758024d114c7@sipproxy.cantv.net..CSeq:
ANEXO 5. Trazas de una llamada desde un telfono IP hacia un telfono celular, colgando
ste.
interface: eth0 (161.196.58.0/255.255.255.0)
filter: (ip) and ( port 5060 )
#
U 161.196.168.122:9375 -> 161.196.58.48:5060
INVITE sip:04168269381@161.196.58.48 SIP/2.0..To:
<sip:04168269381@161.196.58.48>..From: 1112<sip:1112@161.196.58.48>;ta
g=d1774231..Via: SIP/2.0/UDP 161.196.168.122:9375;branch=z9hG4bK-d87543735001294-1--d87543-;rport..Call-ID: e731d418904
2c723..CSeq: 1 INVITE..Contact: <sip:1112@161.196.168.122:9375>..MaxForwards: 70..Allow: INVITE, ACK, CANCEL, OPTIONS,
BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO..Content-Type:
application/sdp..User-Agent: eyeBeam release 3006o stamp 175
51..Content-Length: 244....v=0..o=- 9268981 9269023 IN IP4
161.196.168.122..s=eyeBeam..c=IN IP4 161.196.168.122..t=0 0..
m=audio 9728 RTP/AVP 8 0 3 18 101..a=alt:1 1 : 16B56C63 000000D7
161.196.168.122 9728..a=fmtp:101 0-15..a=rtpmap:101 tel
ephone-event/8000..a=sendrecv..
#
U 161.196.58.48:5060 -> 161.196.168.122:9375
SIP/2.0 100 trying -- your call is important to us..To:
<sip:04168269381@161.196.58.48>..From: 1112<sip:1112@161.196.58.
48>;tag=d1774231..Via: SIP/2.0/UDP 161.196.168.122:9375;branch=z9hG4bKd87543-735001294-1--d87543-;rport=9375..Call-ID:
e731d4189042c723..CSeq: 1 INVITE..Date: Thu, 04 Jan 2007 14:38:14
GMT..Date: Thu, 04 Jan 2007 14:38:14 GMT..Server: Open
Ser (1.0.0 (i386/linux))..Content-Length: 0..Warning: 392
161.196.58.48:5060 "Noisy feedback tells: pid=21963 req_src_i
p=161.196.168.122 req_src_port=9375 in_uri=sip:04168269381@161.196.58.48
out_uri=sip:704168269381@161.196.58.47 via_cnt=
=1"....
#
U 161.196.58.48:5060 -> 161.196.58.47:5060
INVITE sip:704168269381@161.196.58.47 SIP/2.0..To:
<sip:04168269381@161.196.58.48>..From: 1112<sip:1112@161.196.58.48>;t
ag=d1774231..Via: SIP/2.0/UDP
161.196.58.48;branch=z9hG4bKbc78.333fd176.0..Via: SIP/2.0/UDP
161.196.168.122:9375;branch=
z9hG4bK-d87543-735001294-1--d87543-;rport=9375..Call-ID:
e731d4189042c723..CSeq: 1 INVITE..Contact: <sip:1112@161.196.16
8.122:9375>..Max-Forwards: 69..Allow: INVITE, ACK, CANCEL, OPTIONS, BYE,
REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO..Conten
t-Type: application/sdp..User-Agent: eyeBeam release 3006o stamp
17551..Content-Length: 244....v=0..o=- 9268981 9269023
IN IP4 161.196.168.122..s=eyeBeam..c=IN IP4 161.196.168.122..t=0
0..m=audio 9728 RTP/AVP 8 0 3 18 101..a=alt:1 1 : 16B56
C63 000000D7 161.196.168.122 9728..a=fmtp:101 0-15..a=rtpmap:101
telephone-event/8000..a=sendrecv..
#
U 161.196.58.47:5060 -> 161.196.58.48:5060
SIP/2.0 100 Trying..Via: SIP/2.0/UDP
161.196.58.48;branch=z9hG4bKbc78.333fd176.0;received=161.196.58.48..Via:
SIP/2.0/UD
- 211 -
P 161.196.168.122:9375;branch=z9hG4bK-d87543-735001294-1--d87543;rport=9375..From: 1112<sip:1112@161.196.58.48>;tag=d17
74231..To: <sip:04168269381@161.196.58.48>..Call-ID:
e731d4189042c723..CSeq: 1 INVITE..User-Agent: Asterisk PBX..Allow:
INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY..Contact:
<sip:704168269381@161.196.58.47>..Content-Length:
0....
#
U 161.196.58.47:5060 -> 200.109.126.164:5060
INVITE sip:04168269381@sip.ops.cantv.net;user=phone SIP/2.0..Via:
SIP/2.0/UDP 161.196.58.47:5060;branch=z9hG4bK39788cb9;
rport..From: "1112"
<sip:2123360502@sipproxy.cantv.net>;tag=as1ab24c88..To:
<sip:04168269381@sip.ops.cantv.net;user=phon
e>..Contact: <sip:2123360502@161.196.58.47>..Call-ID:
4d686319232c3306250aee9464a2eeae@sipproxy.cantv.net..CSeq: 102 INV
ITE..User-Agent: Asterisk PBX..Max-Forwards: 70..Date: Thu, 04 Jan 2007
14:21:34 GMT..Allow: INVITE, ACK, CANCEL, OPTION
S, BYE, REFER, SUBSCRIBE, NOTIFY..Content-Type: application/sdp..ContentLength: 239....v=0..o=root 2793 2793 IN IP4 161
.196.58.47..s=session..c=IN IP4 161.196.58.47..t=0 0..m=audio 6844 RTP/AVP
0 8 101..a=rtpmap:0 PCMU/8000..a=rtpmap:8 PCM
A/8000..a=rtpmap:101 telephone-event/8000..a=fmtp:101 016..a=silenceSupp:off - - - -..
#
U 200.109.126.164:5060 -> 161.196.58.47:5060
SIP/2.0 100 Trying..Via: SIP/2.0/UDP
161.196.58.47:5060;branch=z9hG4bK39788cb9;rport=5060..From: "1112"
<sip:2123360502@
sipproxy.cantv.net>;tag=as1ab24c88..To:
<sip:04168269381@sip.ops.cantv.net;user=phone>..Call-ID:
4d686319232c3306250aee9
464a2eeae@sipproxy.cantv.net..CSeq: 102 INVITE....
#
U 200.109.126.164:5060 -> 161.196.58.47:5060
SIP/2.0 183 Session Progress..Via: SIP/2.0/UDP
161.196.58.47:5060;branch=z9hG4bK1bbac563;rport=5060..From: "1112" <sip:2
123360502@sipproxy.cantv.net>;tag=as1ab24c88..To:
<sip:04168269381@sip.ops.cantv.net;user=phone>;tag=1167919226-90079411
68820020-21..Call-ID:
4d686319232c3306250aee9464a2eeae@sipproxy.cantv.net..CSeq: 103
INVITE..Contact: <sip:04168269381@2
00.109.126.164:5060;transport=udp>..Content-Type:
application/sdp..Content-Length: 210....v=0..o=hiQ9200/CN0/010/064/125
05251020070004103852 171966589 IN IP4 200.109.126.164..s=Phone Call via
hiQ9200 SIPCA..c=IN IP4 200.109.126.164..t=0 0.
.m=audio 35288 RTP/AVP 8..a=rtpmap:8 PCMA/8000..a=sendrecv..
#
U 161.196.58.47:5060 -> 161.196.58.48:5060
SIP/2.0 183 Session Progress..Via: SIP/2.0/UDP
161.196.58.48;branch=z9hG4bKbc78.333fd176.0;received=161.196.58.48..Via:
SIP/2.0/UDP 161.196.168.122:9375;branch=z9hG4bK-d87543-735001294-1-d87543-;rport=9375..From: 1112<sip:1112@161.196.58.4
8>;tag=d1774231..To: <sip:04168269381@161.196.58.48>;tag=as6ea6ed3e..CallID: e731d4189042c723..CSeq: 1 INVITE..User-Age
nt: Asterisk PBX..Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER,
SUBSCRIBE, NOTIFY..Contact: <sip:704168269381@161.196
- 212 -
- 213 -
- 214 -
ANEXO 6. Trazas de una llamada desde un telfono IP, colgando ste, hacia un telfono
celular.
interface: eth0 (161.196.58.0/255.255.255.0)
filter: (ip) and ( port 5060 )
#
U 161.196.168.122:9375 -> 161.196.58.48:5060
INVITE sip:04168269381@161.196.58.48 SIP/2.0..To:
<sip:04168269381@161.196.58.48>..From: 1112<sip:1112@161.196.58.48>;ta
g=5663e06f..Via: SIP/2.0/UDP 161.196.168.122:9375;branch=z9hG4bK-d87543660490420-1--d87543-;rport..Call-ID: 12416543776
feb46..CSeq: 1 INVITE..Contact: <sip:1112@161.196.168.122:9375>..MaxForwards: 70..Allow: INVITE, ACK, CANCEL, OPTIONS,
BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO..Content-Type:
application/sdp..User-Agent: eyeBeam release 3006o stamp 175
51..Content-Length: 246....v=0..o=- 10116493 10116950 IN IP4
161.196.168.122..s=eyeBeam..c=IN IP4 161.196.168.122..t=0 0
..m=audio 9728 RTP/AVP 8 0 3 18 101..a=alt:1 1 : 3E25CD6B 000000CD
161.196.168.122 9728..a=fmtp:101 0-15..a=rtpmap:101 t
elephone-event/8000..a=sendrecv..
#
U 161.196.58.48:5060 -> 161.196.168.122:9375
SIP/2.0 100 trying -- your call is important to us..To:
<sip:04168269381@161.196.58.48>..From: 1112<sip:1112@161.196.58.
48>;tag=5663e06f..Via: SIP/2.0/UDP 161.196.168.122:9375;branch=z9hG4bKd87543-660490420-1--d87543-;rport=9375..Call-ID:
12416543776feb46..CSeq: 1 INVITE..Date: Thu, 04 Jan 2007 14:52:22
GMT..Date: Thu, 04 Jan 2007 14:52:22 GMT..Server: Open
Ser (1.0.0 (i386/linux))..Content-Length: 0..Warning: 392
161.196.58.48:5060 "Noisy feedback tells: pid=21961 req_src_i
p=161.196.168.122 req_src_port=9375 in_uri=sip:04168269381@161.196.58.48
out_uri=sip:704168269381@161.196.58.47 via_cnt=
=1"....
#
U 161.196.58.48:5060 -> 161.196.58.47:5060
INVITE sip:704168269381@161.196.58.47 SIP/2.0..To:
<sip:04168269381@161.196.58.48>..From: 1112<sip:1112@161.196.58.48>;t
ag=5663e06f..Via: SIP/2.0/UDP
161.196.58.48;branch=z9hG4bKf4bd.2d13ebc5.0..Via: SIP/2.0/UDP
161.196.168.122:9375;branch=
z9hG4bK-d87543-660490420-1--d87543-;rport=9375..Call-ID:
12416543776feb46..CSeq: 1 INVITE..Contact: <sip:1112@161.196.16
8.122:9375>..Max-Forwards: 69..Allow: INVITE, ACK, CANCEL, OPTIONS, BYE,
REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO..Conten
t-Type: application/sdp..User-Agent: eyeBeam release 3006o stamp
17551..Content-Length: 246....v=0..o=- 10116493 1011695
0 IN IP4 161.196.168.122..s=eyeBeam..c=IN IP4 161.196.168.122..t=0
0..m=audio 9728 RTP/AVP 8 0 3 18 101..a=alt:1 1 : 3E2
5CD6B 000000CD 161.196.168.122 9728..a=fmtp:101 0-15..a=rtpmap:101
telephone-event/8000..a=sendrecv..
#
U 161.196.58.47:5060 -> 161.196.58.48:5060
SIP/2.0 100 Trying..Via: SIP/2.0/UDP
161.196.58.48;branch=z9hG4bKf4bd.2d13ebc5.0;received=161.196.58.48..Via:
SIP/2.0/UD
- 216 -
P 161.196.168.122:9375;branch=z9hG4bK-d87543-660490420-1--d87543;rport=9375..From: 1112<sip:1112@161.196.58.48>;tag=566
3e06f..To: <sip:04168269381@161.196.58.48>..Call-ID:
12416543776feb46..CSeq: 1 INVITE..User-Agent: Asterisk PBX..Allow:
INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY..Contact:
<sip:704168269381@161.196.58.47>..Content-Length:
0....
#
U 161.196.58.47:5060 -> 200.109.126.164:5060
INVITE sip:04168269381@sip.ops.cantv.net;user=phone SIP/2.0..Via:
SIP/2.0/UDP 161.196.58.47:5060;branch=z9hG4bK1c14fc44;
rport..From: "1112"
<sip:2123360502@sipproxy.cantv.net>;tag=as50626e58..To:
<sip:04168269381@sip.ops.cantv.net;user=phon
e>..Contact: <sip:2123360502@161.196.58.47>..Call-ID:
3246dcb166b35b445ab20e7c04ea2d13@sipproxy.cantv.net..CSeq: 102 INV
ITE..User-Agent: Asterisk PBX..Max-Forwards: 70..Date: Thu, 04 Jan 2007
14:35:42 GMT..Allow: INVITE, ACK, CANCEL, OPTION
S, BYE, REFER, SUBSCRIBE, NOTIFY..Content-Type: application/sdp..ContentLength: 239....v=0..o=root 2793 2793 IN IP4 161
.196.58.47..s=session..c=IN IP4 161.196.58.47..t=0 0..m=audio 5684 RTP/AVP
0 8 101..a=rtpmap:0 PCMU/8000..a=rtpmap:8 PCM
A/8000..a=rtpmap:101 telephone-event/8000..a=fmtp:101 016..a=silenceSupp:off - - - -..
#
U 200.109.126.164:5060 -> 161.196.58.47:5060
SIP/2.0 100 Trying..Via: SIP/2.0/UDP
161.196.58.47:5060;branch=z9hG4bK1c14fc44;rport=5060..From: "1112"
<sip:2123360502@
sipproxy.cantv.net>;tag=as50626e58..To:
<sip:04168269381@sip.ops.cantv.net;user=phone>..Call-ID:
3246dcb166b35b445ab20e7
c04ea2d13@sipproxy.cantv.net..CSeq: 102 INVITE....
#
U 200.109.126.164:5060 -> 161.196.58.47:5060
SIP/2.0 183 Session Progress..Via: SIP/2.0/UDP
161.196.58.47:5060;branch=z9hG4bK60e65157;rport=5060..From: "1112" <sip:2
123360502@sipproxy.cantv.net>;tag=as50626e58..To:
<sip:04168269381@sip.ops.cantv.net;user=phone>;tag=1167920074-67886911
68598943-21..Call-ID:
3246dcb166b35b445ab20e7c04ea2d13@sipproxy.cantv.net..CSeq: 103
INVITE..Contact: <sip:04168269381@2
00.109.126.164:5060;transport=udp>..Content-Type:
application/sdp..Content-Length: 210....v=0..o=hiQ9200/CN0/010/048/123
05251720070004105300 170918011 IN IP4 200.109.126.164..s=Phone Call via
hiQ9200 SIPCA..c=IN IP4 200.109.126.164..t=0 0.
.m=audio 35302 RTP/AVP 8..a=rtpmap:8 PCMA/8000..a=sendrecv..
#
U 161.196.58.47:5060 -> 161.196.58.48:5060
SIP/2.0 183 Session Progress..Via: SIP/2.0/UDP
161.196.58.48;branch=z9hG4bKf4bd.2d13ebc5.0;received=161.196.58.48..Via:
SIP/2.0/UDP 161.196.168.122:9375;branch=z9hG4bK-d87543-660490420-1-d87543-;rport=9375..From: 1112<sip:1112@161.196.58.4
8>;tag=5663e06f..To: <sip:04168269381@161.196.58.48>;tag=as4020aa7c..CallID: 12416543776feb46..CSeq: 1 INVITE..User-Age
nt: Asterisk PBX..Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER,
SUBSCRIBE, NOTIFY..Contact: <sip:704168269381@161.196
- 217 -
- 218 -
- 219 -