Arquitectura para Redes Convergentes
Arquitectura para Redes Convergentes
Arquitectura para Redes Convergentes
ARQUITECTURA DE APLICACIONES
PARA REDES CONVERGENTES
PROFESOR GUÍA:
JORGE SANDOVAL ARENAS
MIEMBROS DE LA COMISIÓN:
NÉSTOR BECERRA YOMA
ALBERTO CASTRO ROJAS
SANTIAGO DE CHILE
OCTUBRE 2008
RESUMEN DE LA MEMORIA
PARA OPTAR AL TÍTULO DE
INGENIERO CIVIL ELECTRICISTA
POR: DIEGO SAAVEDRA RENDIC
FECHA: 13/10/2008
PROF. GUÍA: Sr. JORGE SANDOVAL A.
Confucio
i
Índice
ii
3.3.2.2 Servicios de Voz .........................................................................................................................................57
3.3.2.3 Presencia y Mensajería Instantánea.............................................................................................................61
3.3.2.4 Otros Servicios............................................................................................................................................67
CAPÍTULO 4 DISCUSIÓN DE RESULTADOS ............................................................................................72
4.1 RESULTADOS TEST PLAN ...........................................................................................................................72
4.1.1 Registro.................................................................................................................................................72
4.1.2 Servicios de Voz....................................................................................................................................73
4.1.3 Presencia y Mensajería Instantánea.....................................................................................................74
4.1.4 Otros Servicios .....................................................................................................................................76
4.2 ORQUESTACIÓN DE SERVICIOS ...................................................................................................................77
4.3 INTEGRACIÓN CON PLATAFORMAS EXISTENTES.........................................................................................78
CAPÍTULO 5 CONCLUSIONES.....................................................................................................................79
REFERENCIAS .........................................................................................................................................................81
ACRÓNIMOS.............................................................................................................................................................84
ANEXOS .....................................................................................................................................................................87
ANEXO 1: EJEMPLO XML IFC ..................................................................................................................................87
ANEXO 2: CONFIGURACIÓN BÁSICA OPENSER ........................................................................................................89
ANEXO 3: CONFIGURACIÓN BÁSICA GATEWAY SMS KANNEL ................................................................................92
ANEXO 4: CÓDIGO PHP WEB PRESENCIA/ENVÍO SMS ............................................................................................95
iii
Índice de Figuras
iv
Índice de Tablas
v
Capítulo 1
Introducción
En este primer capítulo se introduce al lector en el tema del trabajo de título, detallando
los antecedentes que motivan el desarrollo de la labor, los objetivos que se han planteado y el
alcance del documento. Además, se presenta una descripción de la información contenida en este
texto.
1.1 Motivación
En una red de telecomunicaciones, se ofrecen variados servicios y aplicaciones que son
ejecutados en el terminal del usuario final. Se suele distinguir a las redes en función del acceso a
éstas; por ejemplo, existen las redes de telefonía móvil, telefonía fija o tradicional (PSTN), voz
sobre IP, redes de datos IP en general y muchas otras. Se puede pensar que dichas redes son
totalmente independientes o con poca interrelación, pero actualmente la tendencia apunta a
integrarlas en una sola red convergente, con un core (núcleo de red) común. Un ejemplo de este
tipo de red convergente es la red de telefonía móvil 3G, que actualmente se encuentra en una
etapa de desarrollo y puesta en marcha en diversos países, incluyendo Chile. En particular, el
modelo desarrollado por el grupo 3GPP (3rd Generation Partnership Project) considera un core
IMS (IP Multimedia Subsystem) basado en IP. La idea es alcanzar la ubicuidad de servicios y
aplicaciones a través de la red, sin importar el tipo de acceso a ella, para lo cual se hace necesario
una arquitectura de aplicaciones que se integre al core IMS y logre la transversalidad en la
provisión de éstas.
1.2 Objetivos
A continuación se presentan los objetivos del presente trabajo de memoria.
1
1.2.1 General
1.2.2 Específicos
1.3 Alcance
Este trabajo está orientado principalmente a estudiantes, académicos y profesionales
relacionados con el ámbito de las telecomunicaciones, dado su carácter técnico. La labor
desarrollada también puede servir al público general interesado en conocer más sobre las redes
convergentes y su desarrollo, a nivel introductorio.
2
En el Capítulo 3 se detalla el desarrollo del trabajo en sí, presentando la metodología de
trabajo y los resultados específicos obtenidos.
Por último, el Capítulo 5 reúne las conclusiones que se obtuvieron en el transcurso del
trabajo. Se incluyen además las referencias, un glosario y los anexos respectivos.
3
Capítulo 2
Arquitecturas de Aplicaciones
El presente capítulo representa un marco teórico respecto a la evolución de las
plataformas de servicios, mencionando algunas de ellas que se utilizan en la actualidad y
detallando su implementación.
4
La Red Inteligente se desarrolló para proveer una manera uniforme de ofrecer traducción
de números a través de las redes de los distintos operadores. Así, permite desplegar una gran
cantidad de servicios, tales como los números 800 en redes fijas y el roaming en redes móviles.
Actualmente se utiliza para proveer servicios de prepago en la mayoría de los teléfonos móviles.
Otro modelo similar que apareció junto con el modelo de Red Inteligente fue el modelo de
Nodos de Servicio. La diferencia básica con el primero es la de juntar las tres funciones (SCF,
SSF y SRF) en un solo elemento de red. Esta aproximación brinda mayor flexibilidad ya que no
se utiliza el protocolo INAP ni un modelo de llamada estandarizado, pero su desventaja radica en
la centralización de las funciones, lo que deriva en mayores recursos destinados al control y
mantenimiento de la llamada.
5
Figura 2-3 [2]: Evolución de Estructuras Monolíticas a Enablers por Capas
6
implementado redes Release 4 o bien Release 5 con HSDPA (High Speed Downlink Packet
Access), planificando implementar IMS (IP Multimedia Subsystem) en un futuro cercano.
La introducción de IMS en las redes fijas y móviles [4] representa un cambio fundamental
en las redes de telecomunicaciones de tipo voz. Las nuevas capacidades de las redes y de los
terminales, el acercamiento entre la Internet y la voz, el contenido y la movilidad hacen aparecer
nuevos modelos de redes, pero por sobre todo ofrecen un amplio potencial para el desarrollo de
nuevos servicios. Con esta meta, IMS fue concebido para ofrecer a los usuarios la posibilidad de
establecer sesiones multimedia usando todo tipo de acceso de alta velocidad y una red de
conmutación de paquetes IP.
IMS no es una única red sino diferentes redes que interoperan gracias a distintos acuerdos
de roaming IMS fijo-fijo, fijo-móvil y móvil-móvil. Puede definirse como un enabler o
catalizador que hace posible a los proveedores de servicios ofrecer:
• Servicios de comunicaciones en tiempo real, pseudo tiempo real y basadas en eventos,
según una configuración cliente-servidor o entre entidades pares (Peer-to-Peer, P2P).
• La movilidad de servicios/movilidad del usuario (nomadismo).
• Varias sesiones y servicios simultáneamente sobre la misma conexión de red.
• Soporte para aplicaciones de redes ya desplegadas (Legacy).
7
Como se vio en la sección de evolución de las arquitecturas de red, éstas están migrando
hacia una estructura por capas, e IMS no se queda atrás en esta materia. Así, en la figura, cuatro
capas importantes pueden ser identificadas:
• La capa de acceso puede representar todo acceso de alta velocidad tal como: UTRAN o
CDMA2000 para redes móviles, xDSL, redes de cable, Wireless IP, WiFi, etc.
• La capa de transporte representa una red IP, la cual puede integrar distintos stacks de
transmisión y mecanismos de calidad de servicio como MPLS. La capa de transporte esta
compuesta de enrutadores o routers (edge routers para el acceso y core routers para el
tránsito), conectados por una red de transmisión.
• La capa de control consiste en controladores de sesión responsables del encaminamiento
de la señalización entre usuarios y de la invocación de los servicios. Estos nodos se
denominan CSCF (Call State Control Function). IMS introduce entonces un ámbito de
control de sesiones sobre el dominio de conmutación de paquetes.
• La capa de aplicación introduce las aplicaciones (servicios de valor agregado) propuestas
a los usuarios. El operador, gracias a su capa de control, puede actuar como integrador de
servicios ofrecidos por el mismo o bien por terceros. La capa de aplicación consiste en
servidores de aplicación (Application Server, AS) y MRF (Multimedia Resource
Function) que los proveedores llaman Servidores de Medios IP (IP Media Sever, IP MS).
8
2.2.2 IMS y el Protocolo SIP
SIP [4] es un protocolo de señalización definido por la IETF (Internet Engineering Task
Force) que permite el establecimiento, la liberación y la modificación de sesiones multimedia.
SIP es usado en IMS como protocolo de señalización para el control de sesiones y el control de
servicio. Así, reemplaza a la vez los protocolos ISUP (ISDN User Part) e INAP (Intelligent
Network Application Part) del mundo de la telefonía, aportando el soporte de funciones
multimedia.
SIP es adecuado para proveer servicios pues, ya que los elementos y protocolos
subyacentes a SIP tienen mucho en común con HTTP. Es decir, diseñar e implementar nuevos
servicios de voz u otros basados en SIP es tan fácil como crear páginas Web: las aplicaciones SIP
son desarrolladas con métodos HTTP básicos, con los cuales los desarrolladores están
familiarizados. Así, pueden crear aplicaciones orientadas a las telecomunicaciones de forma
nativa y rápida, reduciendo el tiempo asociado a desplegar nuevas características en la red. Así, el
operador se ve en la posibilidad de integrar transparentemente variadas aplicaciones,
representando para los usuarios un servicio de comunicaciones en constante mejora, además de
costos iniciales y recurrentes más bajos.
SIP se apoya sobre un modelo transaccional cliente/servidor, tal como HTTP, mientras
que el direccionamiento utiliza el concepto de Uniform Resource Locator o URL SIP, parecido a
una dirección e-mail. Cada participante en una red SIP es alcanzable por medio de una URL SIP.
Por otra parte, las solicitudes SIP son satisfechas por respuestas identificadas por un
código numérico. Cabe destacar que SIP es un protocolo textual: un mensaje SIP está constituido
de encabezamientos (headers), mientras que la mayor parte de los códigos de repuestas SIP
provienen del protocolo HTTP. Por ejemplo, cuando el destinatario no se ha podido ubicar, un
código de respuesta “404 Not Found” es enviado.
• METHOD: corresponde al tipo de mensaje que se está enviando (p. ej. REGISTER,
INVITE, OPTIONS, BYE, etc.).
• Request-URI: indica el usuario al cual va destinado el mensaje.
• Via: contiene la dirección a la cual debe ser devuelta la respuesta a la petición, además de
un parámetro branch que identifica la transacción.
• To: contiene un nombre y un URI SIP al cual está dirigido el mensaje.
• From: contiene un nombre y un URI SIP que indica el origen del mensaje, además de un
parámetro tag agregado para propósitos de identificación en el cliente destino (p.ej. un
softphone).
• Call-ID: identificador global formado por un número aleatorio y por el nombre del host o
su dirección IP.
• Cseq: contiene un número entero y el nombre del método SIP. El número va
incrementándose en una unidad por cada nueva dentro de un mismo diálogo.
• Contact: contiene un URI que sirve para indicar donde enviar peticiones futuras al cliente,
a diferencia de Via que indica dónde enviar la respuesta a la petición en curso solamente.
9
Un ejemplo de mensaje SIP es el que sigue:
v=0
o=- 8 2 IN IP4 172.16.231.184
s=CounterPath X-Lite 3.0
c=IN IP4 172.16.231.184
t=0 0
m=audio 24276 RTP/AVP 107 119 100 106 0 105 98 8 101
a=fmtp:101 0-15
a=rtpmap:107 BV32/16000
a=rtpmap:119 BV32-FEC/16000
a=rtpmap:100 SPEEX/16000
a=rtpmap:106 SPEEX-FEC/16000
a=rtpmap:105 SPEEX-FEC/8000
a=rtpmap:98 iLBC/8000
a=rtpmap:101 telephone-event/8000
a=sendrecv
m=video 27894 RTP/AVP 115 34
a=fmtp:115 QCIF=2 CIF=3 I=1 J=1 T=1 MaxBR=1960
a=fmtp:34 QCIF=2 CIF=3 MaxBR=1960
a=rtpmap:115 H263-1998/90000
a=rtpmap:34 H263/90000
a=sendrecv
Descripción de la sesión:
• v= (versión del protocolo)
• o= (identificador de sesión y origen)
• s= (nombre de sesión)
• i=* (información de sesión)
• u=* (URI de descripción)
• e=* (dirección e-mail)
• p=* (número telefónico)
10
• c=* (información de conexión)
• b=* (información de ancho de banda)
• k=* (llave de encriptación)
• a=* (atributos de sesión)
Descripción de tiempo:
• t= (tiempo durante el cual la sesión está activa)
• r=* (cero o más tiempos de repetición)
• z=* (ajustes de zona horaria)
Las entidades de red principales presentes en la red IMS [4] y sus funcionalidades se
presentan a continuación:
Terminal IMS
Se trata de una aplicación sobre un equipo de usuario que emite y recibe solicitudes SIP.
Se materializa a través de un software instalado sobre un PC, sobre un teléfono IP o sobre un
terminal móvil GSM/UMTS (User Equipment o UE).
11
Home Subscriber Server (HSS)
La entidad Home Subscriber Server o HSS es la base principal de almacenamiento de los
datos de los usuarios y de los servicios a los cuales se suscribieron. Los principales datos
almacenados son las identidades del usuario, la información de registro y los parámetros de
acceso, así como la información que permite la invocación de los servicios del usuario. La
entidad HSS interactúa con las entidades de la red a través del protocolo DIAMETER.
El P-CSCF actúa como un Proxy Server SIP cuando encamina los mensajes SIP hacia el
destinatario apropiado y como un User Agent SIP cuando termina la llamada (después de un error
en el mensaje SIP recibido). Las funciones realizadas por la entidad P-CSCF abarcan:
• El encaminamiento del método SIP REGISTER emitido por el terminal a la entidad I-
CSCF desde el nombre del dominio nominal
• El encaminamiento de los métodos SIP emitidos por el terminal al S-CSCF cuyo nombre
ha sido obtenido en la respuesta del proceso de registrarse
• El envío de los métodos SIP o respuestas SIP al terminal
• La generación de Call Detailed Records o CDRs
12
• La compresión/descompresión de mensajes SIP
El I-CSCF es el punto de contacto dentro de una red para todas las sesiones destinadas a
un usuario del respectivo operador. Pueden existir varias I-CSCF dentro de una red. Las
funciones realizadas por la entidad I-CSCF incluyen:
• La asignación de un S-CSCF a un usuario que se registra
• El encaminamiento al S-CSCF de los métodos SIP recibidos desde otra red
• La obtención de la dirección del S-CSCF por parte del HSS
• La generación de CDRs
Por último, el S-CSCF asume el control de la sesión. Él mantiene un estado de sesión con
el fin de poder invocar servicios. En una red de operadores, distintos S-CSCF pueden presentar
diferentes funcionalidades. Las funciones realizadas por el S-CSCF durante una sesión incluyen:
• La emulación de la función Registrar ya que acepta los métodos SIP de registro y
actualiza el HSS
• La emulación de la función Proxy Server ya que acepta los métodos SIP y los encamina
• La emulación de la función User Agent ya que puede terminar métodos SIP, por ejemplo
cuando ejecuta servicios complementarios
• La interacción con servidores de aplicación después de haber analizado los criterios de
contacto de los AS correspondientes (detallado más adelante)
• La generación de CDRs
Antes de poder utilizar los servicios del dominio IMS, tales como establecer una sesión
multimedia o recibir un pedido de sesión, un usuario tiene que registrarse a la red. Esté el usuario
en su red nominal o en una red visitada, este procedimiento involucra un P-CSCF.
Por otra parte, todos los mensajes de señalización emitidos por el terminal o destinados a
él son relevados por el P-CSCF; el terminal nunca tiene el conocimiento de las direcciones de los
demás CSCFs (I-CSCF y S-CSCF).
La arquitectura de servicio IMS básica [4] está constituida por entidades servidores de
aplicación, de servidores de medios IP y de S-CSCF equivalentes a servidores de llamadas.
El servidor de aplicación SIP o SIP AS ejecuta los servicios (p. ej. Push To Talk,
Presencia, Prepago, Mensaje Instantáneo, etc.) y puede influenciar el desempeño de la sesión a
pedido del servicio. El servidor de aplicación corresponde a la entidad SCF de la Red Inteligente.
13
Figura 2-8 [4]: Red Inteligente vs. IMS
Cabe mencionar que el RFC 3976: Interworking SIP and Intelligent Network Applications
trata el tema de integrar y soportar servicios provistos por la Red Inteligente en clientes basados
en el protocolo SIP, cuando ocurre una llamada entre un host IP y un teléfono tradicional. La
llamada es originada en un cliente SIP, pero los servicios para la llamada están provistos por
datos y procedimientos residentes en la PSTN/IN. Para proveer dichos servicios de una manera
transparente a los clientes SIP, el RFC detalla un mecanismo para realizar interworking entre SIP
e INAP.
14
Además de los AS, existe el mencionado servidor de medios, MRF. Establece
conferencias multimedia, difunde anuncios de voz o multimedia y recaba información del
usuario. Se trata de la evolución de la entidad SRF hacia el mundo multimedia. Las funciones de
la entidad MRF son dos:
• La función MRF Processor o MRFP que procesa los medios a través del transporte
RTP/UDP/IP.
• La función MRF Controller o MRFC que procesa la señalización.
Cabe destacar que la interfaz MR entre las entidades S-CSCF y MRFC es soportada por el
protocolo SIP.
Todos los servidores de aplicación (IM-SSF y OSA SCS incluido) se comportan como
servidores de aplicación SIP. Por otra parte, estos servidores de aplicación pueden interactuar con
la entidad MRFC a través del S-CSCF para controlar las actividades de medios puestas en obra
por la entidad MRFP.
En la arquitectura IMS [7], como se detalló anteriormente, los servicios son alojados y
ejecutados en servidores de aplicación, por lo que se hace necesario tener un punto de referencia
para poder enviar y recibir mensajes SIP entre estas entidades y los CSCFs. Esta interfaz se
denomina ISC (IMS Service Control) y el protocolo seleccionado para su implementación
corresponde a SIP. Los procedimientos de la interfaz ISC pueden corresponder al enrutamiento
de un mensaje SIP hacia un servidor de aplicación, o bien al enrutamiento de una solicitud SIP
iniciada por un servidor de aplicación, por ejemplo, en nombre de un usuario.
15
IMS provee los métodos necesarios para invocar y proveer servicios, lo que lleva a
precisar tres pasos fundamentales:
1. Definir el posible servicio o conjunto de servicios.
2. Creación de información específica referente al usuario, cuando éste requiere una
suscripción o la modifica, en formato de iFC (Initial Filter Criteria).
3. Encaminar el requerimiento inicial hacia un servidor de aplicación.
Los iFC son propios del perfil del usuario, y representan información específica de éste
con respecto a la aplicación. Dichos datos son necesarios cuando la suscripción IMS del usuario
contiene servicios de valor agregado a utilizar, o bien cuando un operador requiere utilizar
servidores de aplicación como parte de su infraestructura IMS.
Un TP (Trigger Point) es un componente del iFC que es utilizado para decidir cómo es
contactado un servidor de aplicación; es decir, a qué AS contactar y cómo se gatilla su
intervención en la sesión. El TP contiene una o más instancias de SPT (Service Point Trigger),
que comprenden los tipos condicionales que se detallan a continuación:
• Request-URI: corresponde a una identidad o dirección única del AS, por ejemplo,
servidor@operador.com.
• SIP Method: indica el tipo de requerimiento, por ejemplo, mensajes del tipo INVITE.
• SIP Header: contiene información relativa al requerimiento, por lo que un SPT puede
corresponder a la presencia o ausencia de dichos datos específicos, los cuales son
interpretados como una expresión regular.
• Session Case: indica si el filtro debe ser utilizado por el S-CSCF que atiende a la llamada
originada (Originating, del usuario que llama), terminada (Terminating, del usuario que es
llamado), o terminada en un usuario no registrado en el core (Terminating Unregistered).
• Session Description: el SPT se define en base al contenido de cualquier campo SDP en el
cuerpo del mensaje SIP, evaluado como una expresión regular.
Basado en lo anterior, el operador puede definir iFC para manejar a ciertos tipos de
usuario. Por ejemplo, para aquellos usuarios que no se han registrado contra el core, se puede
definir que cuando el SIP Method sea del tipo INVITE y el Session Case corresponda a
Terminating Unregistered (lo que correspondería a una llamada hacia ese tipo de usuario), la
llamada se desvíe hacia un buzón de voz localizado en una URI particular o simplemente se
cancele la llamada.
Los iFC se codifican en lenguaje XML, como se muestra en el Anexo 1. Esta información
se descarga del HSS hacia el S-CSCF cuando el usuario se registra o cuando el requerimiento va
hacia un usuario no registrado. El S-CSCF evalúa los iFC de acuerdo a los siguientes pasos:
1. Chequear si al usuario se le está prohibido utilizar el servicio; si no, proceder.
2. Chequear si es un requerimiento iniciado por el usuario o terminado en éste,
seleccionando los iFC para el caso correspondiente.
3. Chequear si el requerimiento coincide con los iFC registrados en el perfil del usuario de
acuerdo a un orden estricto de prioridad. Es decir, si el requerimiento coincide con las
reglas del iFC de más alta prioridad, se contacta al AS respectivo; si no coincide se sigue
con el iFC de prioridad siguiente, y así sucesivamente hasta que se contacta al AS
requerido.
4. Si el requerimiento no corresponde a ningún iFC y por lo tanto a ningún AS, enviar el
requerimiento al siguiente nodo de acuerdo a las reglas de enrutamiento por defecto.
16
El AS recibe el requerimiento filtrado por la información establecida en los iFC, actuando
como uno de los siguientes:
• Terminating UA: el AS actúa como UE, por ejemplo para proveer un servicio de Voice
Mail.
• Redirect Server: servidor de redireccionamiento; el AS informa a quien originó el
requerimiento sobre la nueva ubicación del usuario o sobre nuevos servicios, por ejemplo
redireccionándolo a una página web específica.
• SIP Proxy: el AS procesa el requerimiento y lo envía de vuelta al S-CSCF, cambiando o
agregando información en las cabeceras del mensaje SIP si es necesario.
Es preciso mencionar que el AS también puede actuar como Originating UA, siendo
capaz de enviar requerimientos a los usuarios.
2.3.1 Parlay/OSA
Actualmente, los servicios a los cuales los usuarios acceden en una red dependen en
demasía del operador, por lo cual se tienen usuarios cautivos y las aplicaciones nuevas tardan en
aparecer. Los usuarios quieren que dichos servicios sean estables y soportados en cualquier red,
teniendo la libertad de utilizarlos mediante cualquier tipo de acceso; los operadores quieren hacer
negocio con ello, desarrollando nuevas tecnologías que incrementen sus ingresos o se reduzcan
sus costos; y los desarrolladores de aplicaciones quieren poder vender sus productos,
desplegándolos de una manera fácil y rápida. Así, se hacen necesarios cambios en los modelos de
negocios que convengan los deseos de todas las partes y aumente los beneficios de cada una de
ellas.
Ahora bien, con tal de que lo anteriormente expuesto ocurra y se puedan ofrecer servicios
transversales a través de redes convergentes como las actuales, debe existir un elemento técnico
que comunique el mundo del operador con los distintos proveedores de aplicaciones. Es aquí
donde aparece el concepto de la arquitectura Parlay/OSA [9].
17
Figura 2-10 [10]: Modelo de Interacción Parlay/OSA
Los SCS son entes funcionales que proporcionan interfaces Parlay/OSA a las
aplicaciones, a través de abstracciones de las funcionalidades de la red accesibles mediante el
API. A éstas últimas se les llama Service Capability Features (SCFs). Cada SCS presenta uno o
más SCFs, que se definen en términos de la clase de interfaz y sus métodos.
El Framework, por su parte, permite acceder a los servicios de la red, aislando a su vez la
infraestructura de la red de comunicaciones. Todas las aplicaciones que requieran la utilización
de Parlay/OSA deben registrarse con el Framework, la cual está representada en la red mediante
la Parlay/OSA Gateway. Actualmente existen variadas empresas que ofrecen dichas entidades de
red, tales como Alcatel-Lucent y Ericsson.
18
Figura 2-11 [11]: Arquitectura Detallada Parlay/OSA
OMA IMPS [12] no es en realidad una arquitectura de servicio, sino un enabler que
presenta una estructura digna de destacar en este ámbito, como ejemplo de una plataforma
desarrollada para la provisión de una aplicación específica.
La OMA (Open Mobile Alliance) es una organización creada en junio de 2002 que
desarrolla estándares abiertos para la industria de la telefonía móvil. Su misión es proporcionar
servicios interoperables que permitan trabajar a través de diversos países, operadoras y
19
dispositivos móviles (terminales de usuario), mientras que entre sus miembros se incluyen
algunos de los más importantes fabricantes de dispositivos móviles, operadores de telefonía
móvil y compañías de software. Las especificaciones OMA son agnósticas en cuanto al tipo de
tecnología de red a utilizar en la conexión y el transporte de datos, es decir, la especificación de
OMA para una funcionalidad concreta, es la misma para redes GSM, UMTS o CDMA2000.
IMPS (Instant Messaging and Presence Service) es un enabler desarrollado por la OMA,
diseñado para intercambiar mensajes instantáneos e información de presencia no sólo entre
dispositivos móviles, sino también entre dispositivos móviles y fijos. Sus orígenes se remontan a
la iniciativa Wireless Village, la cual se incorporó luego a la OMA, finalizándose la versión 1.2
de IMPS. Actualmente IMPS se encuentra en la versión 1.3, la cual representa una mejora
significativa, no siendo totalmente compatible con la versión 1.2 y anteriores.
Por otra parte, la mensajería instantánea es un concepto familiar para el mundo tanto
móvil como fijo. Los clientes de chat en línea, tales como MSN Messenger y Google Talk, así
como los SMS enviados entre celulares, son formas de mensajería instantánea. IMPS habilitará la
mensajería instantánea móvil e interoperable, en conjunto con otras características innovadoras,
para proveer una experiencia de usuario mejorada.
En cuanto a los grupos, tanto los operadores y usuarios finales son capaces de crear y
administrarlos. Los usuarios pueden invitar a sus amigos y familia a conversar en discusiones
grupales, mientras que los operadores pueden crear grupos de interés común donde los usuarios
finales pueden conocerse en línea.
Por último, el contenido compartido permite a los usuarios y operadores montar su propia
área de almacenamiento donde pueden publicar imágenes, música y variados contenidos
multimedia, compartiéndolos con otros individuos y grupos en una sesión de mensajería
instantánea, por ejemplo.
IMPS es un sistema cliente-servidor, donde los clientes que se conectan con el servidor
IMPS pueden ser terminales móviles, clientes fijos u otros servicios o aplicaciones. La
arquitectura IMPS se presenta en la siguiente figura:
20
Figura 2-12 [12]: Arquitectura OMA IMPS
El Service Access Point (SAP) sirve como interfaz entre el servidor IMPS y cualquier otra
entidad de red, tal como los clientes IMPS, otros servidores IMPS, la red core y gateways
propietarios hacia servidores no-IMPS. El Service Access Point cumple las funcionalidades de:
• Autentificación y autorización (Authentication and Authorization)
• Descubrimiento de servicios y acuerdos de servicio (Service Discovery, Service
Agreement)
• Gestión de perfiles de usuario (User Profile Management)
• Relay de servicios (Service Relay)
Los clientes IMPS corresponden a terminales fijos o móviles, los cuales interoperan a
través del Service Access Point utilizando CSP (Client Server Protocol).
21
Figura 2-13 [12]: Protocolos OMA IMPS por Capas
La telefonía IP es uno de los servicios que se pueden proveer mediante el uso del
protocolo SIP. Dicho protocolo hace las veces de señalización, mientras que la voz es
transportada a través de un flujo de paquetes encapsulados en RTP.
22
Por otro lado, el servicio de Voicemail (correo de voz) es un servicio conocido que puede
ser provisto mediante SIP. El servicio de Voicemail consiste en lo siguiente: un usuario llama a
otro que se encuentra ocupado o no contesta, a lo cual el primero deja grabado un mensaje de voz
en un repositorio específico del servicio. Luego, el segundo recibe una notificación de que tiene
un mensaje a su disposición, por ejemplo a través de un SMS o directamente mediante un MWI
(Message Waiting Indicator). De esta manera, el usuario puede recuperar el mensaje cuando esté
desocupado o cuando él lo requiera, mediante una llamada de voz con señalización SIP como la
descrita anteriormente.
SIP puede ser usado para mensajería instantánea y presencia mediante un método
dedicado llamado MESSAGE, que puede transportar cualquier contenido MIME (como texto
plano “text/plain” o una imagen “image/gif”), y que ha sido definido por la IETF para propósitos
de mensajería. Cabe notar que SIP permite el uso de herramientas de presencia, aun cuando la
gestión de dichas características, tales como la edición de la lista de contactos, se hace
típicamente con herramientas basadas en HTTP o WAP. Con SIP, la mensajería instantánea o
multimedia puede ser integrada transparentemente con comunicaciones conversacionales,
creando el concepto de comunicaciones ubicuas: el uso transversal de variados medios de
comunicación y servicios de mensajería, en tiempo real, dependiendo de la información de
presencia de las partes.
SIP provee todo lo anterior; por ejemplo remite peticiones INVITE u otras a servidores
que manejan el usuario y el método REGISTER permite al usuario informar su localización y
otra información al servidor. Más aún, la IETF ha desarrollado una serie de especificaciones bajo
el alero del grupo SIMPLE (SIP for Instant Messaging and Presence Leverage Extensions) con el
fin de definir una estructura basada en SIP que soporte los servicios de mensajería instantánea y
presencia. Este protocolo hace uso del lenguaje XML/XCAP y está avalado también por la OMA
en sus enablers relacionados con dichos servicios. En IMS, el HSS se transforma en un servidor
23
de presencia en sí, sino en una interfaz común para la información de presencia de un usuario, la
cual queda disponible para las aplicaciones que quieran hacer uso de ella.
Llamada Multimedia
Actualmente, cuando se llama a un usuario en un teléfono móvil GSM, el número del
emisor es desplegado generalmente en la pantalla del teléfono del receptor. En vez de sólo
mostrar el nombre, quien llama podría enviar su tarjeta de visita, una fotografía, un sonido
personalizado, o cualquier otro elemento extra. Más aún, durante la llamada, los usuarios podrían
intercambiar información tal como documentos, datos, imágenes o cualquier otro tipo de medios.
En otras palabras, una llamada multimedia es el término para ampliar la definición de una
llamada telefónica, agregándole otros tipos de medios.
Respuesta Automática
El usuario B es un fanático del fútbol y ofrece un servicio automático de entrega de
resultados. Cuando otros usuarios le envían un mensaje SIP que incluye la palabra “fútbol”, la
respuesta es un mensaje HTML o ASCII generado automáticamente que incluye los últimos
resultados. La palabra clave puede estar, por ejemplo, en la cabecera “Subject”, o dentro de otra
cabecera.
Podrían también configurarse reglas para que se enviara un SMS determinado si el usuario
está en reunión, o presentar una voz de respuesta automática que alerte que el usuario está
ocupado o hablando en el momento.
Una llamada SIP básica puede ser representada mediante el siguiente esquema:
24
Figura 2-15 [15]: Flujo Sesión SIP Básica
Ahora bien, cada servicio tiene su flujo de mensajes propio, con ciertas características que
lo diferencian de otros servicios. Algunos ejemplos se muestran a continuación:
Presencia
25
Figura 2-17 [8]: Publicación Exitosa de Presencia
Mensajería
Conferencia
26
2.4.3 Interfaces SIP
Existen variadas alternativas para implementar servicios basados en SIP [16], entre las
cuales se pueden destacar las siguientes:
CPL
Call Processing Language (CPL) corresponde al primer API desarrollado para SIP. En
estricto rigor, no es realmente un API, sino un lenguaje de scripting basado en XML para
describir y controlar servicios de llamada. Está diseñado para ser implementado en servidores de
red, o bien en servidores de UAs, y está pensado para ser simple, extensible, fácilmente editable
mediante clientes gráficos e independiente del sistema operativo o del protocolo de señalización.
CPL está diseñado para la creación de servicios de usuario final: un intérprete de CPL es
muy liviano y un servidor puede fácilmente analizar y validar un CPL, además de proteger contra
comportamiento malicioso. Es adecuado para correr en un servidor donde a los usuarios no se les
permite ejecutar programas arbitrarios, pues no tiene variables, loops ni capacidad para ejecutar
programas externos. Tiene rutinas primitivas para tomar decisiones y llevar a cabo acciones
basadas en las propiedades de las llamadas, tales como hora, quien llama, quien recibe la llamada,
etc. Por último, el estándar se puede encontrar en el sitio web de la IETF [35] (RFC 3880).
SIP CGI
En Internet, la Common Gateway Interface (CGI) ha servido como un medio popular para
programar Web Services. Los scripts CGI han sido el mecanismo inicial para hacer que los sitios
web interactúen con bases de datos y otras aplicaciones. Debido a las semejanzas entre SIP y
HTTP, CGI es un buen candidato para la creación de servicios en un ambiente SIP.
Como en HTTP, un script SIP CGI reside en el servidor y traspasa parámetros de mensaje
mediante variables a un proceso separado. El proceso envía instrucciones de vuelta al servidor
mediante su descriptor de archivos de salida estándar. SIP CGI es casi idéntico a HTTP CGI y es
particularmente adecuado para servicios que contienen componentes Web sustanciales.
Un script CGI puede ser escrito en Perl, C, C++, Java u otros, haciéndolo accesible a una
gran comunidad de desarrolladores. El estándar se puede encontrar en el sitio Web de la IETF
[35] (RFC 3050).
SIP Servlets
Un servlet es una aplicación Java que corre en un servidor Web o un servidor de
aplicaciones, la cual provee procesamiento en el lado del servidor, por ejemplo, para acceder a
una base de datos. En otras palabras, es un reemplazo basado en Java para los scripts CGI, Active
Server Pages (ASPs) y plug-ins propietarios escritos en C y C++. Los servlets son similares al
concepto de los CGI, pero, en vez de usar un proceso separado, los mensajes son traspasados a
una clase Java que corre en una máquina virtual (Java Virtual Machina, JVM) dentro del
servidor.
Los SIP Servlets son similares a los HTTP Servlets; solamente complementan la interfaz
para soportar funciones SIP. Además, como están escritos en Java, los Servlets son operables en
distintos servidores y sistemas operativos. La especificación está siendo desarrollada bajo el
programa Java Community Process(SM).
27
JAINTM APIs
Las JAIN APIs están siendo especificadas como una extensión basada en comunidades
para la plataforma Java. Al proveer un nuevo nivel de abstracción e interfaces Java asociadas
para la creación de servicios a través de redes de conmutación de circuitos y de paquetes, JAIN
está juntando protocolos IP y de la Red Inteligente para crear un mercado abierto.
Actualmente existen dos SIP APIs que han sido desarrolladas o están siéndolo, en el
marco de la iniciativa JAIN:
• JAIN SIP: es un API de bajo nivel que se mapea directamente al RFC 2543 publicado por
la IETF (actualmente RFC 3261). El desarrollo de JAIN SIP se encuentra finalizado y la
especificación del API y el Reference Implementation and Technology Compatibility Kit
(suite para realizar pruebas) pueden ser descargados libremente desde el sitio Web del
programa Java Community Process.
• JAIN SIP Lite: es un API de alto nivel cuya meta es permitir a los desarrolladores crear
aplicaciones basadas en SIP de forma rápida y sin necesidad de tener un conocimiento
extensivo sobre el protocolo. Es decir, es un API ligero que encapsula al protocolo SIP.
Se podría nombrar también a los SIP Servlets como otra iniciativa asociada, pero fueron
discutidos en un punto anterior.
Parlay
Discutido en secciones previas, el grupo Parlay fue formado en 1998 para especificar y
promover APIs abiertas que integraran las aplicaciones de las tecnologías de la información con
las capacidades del mundo de las telecomunicaciones. Los esfuerzos iniciales han sido enfocados
en el control de las llamadas y la mensajería, si bien el foco primordial de Parlay es permitir a las
aplicaciones acceder a las funcionalidades de las redes de telecomunicaciones de forma segura.
Las Parlay APIs consisten de dos categorías de interfaz:
• Interfaces de servicio: ofrecen a las aplicaciones acceso a determinada información y
características de la red.
• Interfaces de framework: proveen las capacidades de soporte necesarias para que las
interfaces de servicio sean seguras y manejables.
Las Parlay APIs están definidas en lenguaje UML (Unified Modeling Language). Las
JAIN SPA (Service Provider APIs) definen un estándar de la industria en relación a las Parlay
APIs que utiliza la tecnología Java. Además de las especificaciones Java API, las JAIN SPA
28
proveen implementaciones de referencia, suites de prueba y un programa completo de
certificación.
Otra iniciativa relacionada con Parlay dice relación con Parlay X, lo cual se detallará más
adelante en el apartado de Web Services.
SIP está basado en un modelo cliente-servidor, donde cada entidad, dependiendo del
contexto, se comporta como un cliente (UAC) o un servidor (UAS). Los modelos cliente-servidor
tienen que superar un problema básico: la escalabilidad. Este problema, junto con el de la alta
disponibilidad, puede ser resuelto utilizando técnicas Peer-to-Peer [17].
Por otro lado, la arquitectura puede ser escalada hasta administrar millones de suscriptores
sin mermar su desempeño, simplemente agregando nodos a la red. A diferencia de P2P puro, el
tiempo requerido para localizar un usuario y establecer una sesión interactiva es ínfimo (del
orden de milisegundos).
La arquitectura está basada en URIs SIP, similares a una dirección de e-mail, que son
buscadas y traducidas a través de requerimientos DNS estándar, siendo alcanzables globalmente
dentro de la red e Internet, o bien pueden ser privadas.
29
En cuanto a los componentes de la arquitectura, se pueden nombrar los siguientes:
• Red overlay Peer-to-Peer
• DNS y ENUM
• Sistema de provisión
• Proxy/Registrar SIP
• Contabilidad mediante Call Data Record (CDR)
• NAT traversal utilizando “media relays” distribuidos
• User Agents (UAs)
A menudo, las SDPs presentan un directorio unificado de clientes que provee una
arquitectura de información para todas las bases de datos de clientes existentes en la red
convergente, incluyendo las de empresas, consumidores, clientes fijos, clientes móviles, etc. Las
SDPs son empleadas para aplicaciones orientadas tanto a empresas como a consumidores
comunes, siendo su uso en el primer caso centrado principalmente en la integración de
capacidades de telecomunicaciones y de tecnologías de la información.
30
Los siguientes son los componentes básicos de una SDP:
• Ambiente de Creación de Servicios (Service Creation Environment, SCE)
• Ambiente de Control de Servicios (Service Control Environment)
• Ambiente de Dirección y Ejecución de Servicios
• Abstracciones para control de medios, presencia/localización, integración, y otras
capacidades de comunicaciones de menor nivel
El punto de entrada es el SCE, usado por el desarrollador para crear software, scripts y
otros recursos que implementen los servicios a desplegar. El propósito del SCE es facilitar la
creación rápida de nuevos servicios de comunicaciones, es decir, lo mencionado anteriormente
como una característica fundamental de las SDPs. Por ejemplo, el auge de SCEs basados en J2EE
(Java) y SIP ha acelerado la adopción de SDPs específicos que integran esta característica. Así,
programadores familiarizados con el lenguaje Java pueden desarrollar aplicaciones de
telecomunicaciones usando J2EE, SIP y servicios web basados, por ejemplo, en Parlay.
Otro aspecto de las SDPs es que deben estar al tanto del punto de presencia del usuario,
esto es, el lugar de acceso del cliente a los servicios convergentes donde sus preferencias y
derechos son evaluados en tiempo real, asegurando que la información entregada al usuario
corresponda a su contexto y predilección. La utilización de estándares como SIP y derivaciones
de éste como SIMPLE en la arquitectura SDP empleada, facilitan el uso de esta característica y se
vuelven un factor crítico en la implementación.
Los IDEs proveen un marco de trabajo amigable para la mayoría de los lenguajes de
programación tales como Java, C, C++, C#, Visual Basic, etc. En algunos lenguajes, un IDE
31
puede funcionar como un sistema en tiempo de ejecución, en donde se permite utilizar el lenguaje
de programación y probar las aplicaciones en forma interactiva, sin necesidad de trabajo
orientado a archivos de texto. El lenguaje Visual Basic, por ejemplo, puede ser usado dentro de
las aplicaciones de Microsoft Office, lo que hace posible escribir sentencias Visual Basic en
forma de macros para Microsoft Word.
Es posible que un mismo IDE pueda funcionar con varios lenguajes de programación.
Este es el caso de Eclipse, que mediante plug-ins se le puede añadir soporte de lenguajes
adicionales. De hecho, es uno de los IDE más utilizados, junto con NetBeans, JBuilder, JCreator,
JDeveloper, C++Builder, Turbo C y Turbo C++.
Componentes
• Un editor de texto.
• Un compilador.
• Un intérprete.
• Herramientas de automatización.
• Un depurador.
• Posibilidad de ofrecer un sistema de control de versiones.
• Factibilidad para ayudar en la construcción de GUIs.
Un servicio Web [20] (Web Service) es una colección de protocolos y estándares que
sirven para intercambiar datos entre aplicaciones. Distintas aplicaciones de software desarrolladas
en lenguajes de programación diferentes, y ejecutadas sobre cualquier plataforma, pueden utilizar
los servicios Web para intercambiar datos en redes de computadores, tales como Internet. La
interoperabilidad se consigue mediante la adopción de estándares abiertos. Las organizaciones
OASIS y W3C son los comités responsables de la arquitectura y reglamentación de los servicios
Web. Para mejorar la interoperabilidad entre distintas implementaciones de servicios Web se ha
creado el organismo WS-I, encargado de desarrollar diversos perfiles para definir de manera más
exhaustiva estos estándares.
Estándares empleados
• Web Services Protocol Stack: así se denomina al conjunto de servicios y protocolos de los
servicios Web.
• XML (Extensible Markup Language): es el formato estándar para los datos que se vayan a
intercambiar.
• SOAP (Simple Object Access Protocol) o XML-RPC (XML Remote Producer Call):
protocolos sobre los que se establece el intercambio.
• Otros protocolos: los datos en XML también pueden enviarse de una aplicación a otra
mediante protocolos normales como HTTP (Hypertext Transfer Protocol), FTP (File
Transfer Protocol), o SMTP (Simple Mail Transfer Protocol).
• WSDL (Web Services Description Languages): es el lenguaje de la interfaz pública para
los servicios Web. Es una descripción basada en XML de los requisitos funcionales
necesarios para establecer una comunicación con los servicios Web.
32
• UDDI (Universal Description, Discovery and Integration): protocolo para publicar la
información de los servicios Web. Permite a las aplicaciones comprobar qué servicios
web están disponibles.
• WS-Security (Web Service Security): protocolo de seguridad aceptado como estándar por
OASIS (Organization for the Advancement of Structured Information Standards).
Garantiza la autenticación de los actores y la confidencialidad de los mensajes enviados.
Otra razón es que, antes de que existiera SOAP, no había buenas interfaces para acceder a
las funcionalidades de otros computadores en red. Las que había eran ad-hoc y poco conocidas,
tales como algunas APIs privadas.
Una tercera razón por la cual los servicios Web son muy prácticos es que pueden aportar
gran independencia entre la aplicación que usa el servicio Web y el propio servicio. De esta
forma, los cambios a lo largo del tiempo en uno no deben afectar al otro. Esta flexibilidad será
cada vez más importante, dado que la tendencia a construir grandes aplicaciones a partir de
componentes distribuidos más pequeños es cada día más usada.
33
2.5.3.1 Parlay X
Parlay X no depende directamente de Parlay; puede invocar funciones a través del API
Parlay pero también puede manejar interfaces directamente con las plataformas de servicios o los
elementos de red subyacentes, tal como muestra la siguiente figura:
Las aplicaciones que hacen uso de las APIs Parlay X pueden ser escritas en una variedad
de lenguajes de programación, dado que están basados en Web Services, utilizando así interfaces
definidas en XML y transmitidas mediante el protocolo SOAP.
Los estándares actuales definen 14 APIs de Web Services Parlay X, los cuales se enuncian
a continuación:
• Common (define objetos y servicios comunes a múltiples APIs)
• Third Party Call Control (control de la llamada por terceras partes)
• Call Notification (notificación de llamada)
• Short Message (mensajería corta)
• Multimedia Message (mensajería multimedia)
• Payment (tarificación)
• Account Management (gestión de cuentas)
• Terminal Status (estatus del terminal)
• Terminal Location (localización del terminal)
34
• Call Handling (manejo de la llamada)
• Audio Call (llamada de voz)
• Multimedia conference (conferencia multimedia)
• Address List Management (gestión de lista de direcciones)
• Presence (presencia)
El Test Plan es un documento operacional que es la base para las pruebas, describiendo
estrategias y casos de pruebas. Aunque su naturaleza es operacional, presenta también aspectos
administrativos, por lo que se puede usar tanto para nuevos desarrollos como para
mantenimiento. Cabe destacar que se trata de un documento en constante evolución.
Un Test Plan debería ser construido a partir de una plantilla estandarizada. Hay numerosas
fuentes que contienen dichas plantillas; en el caso de software existe el estándar IEEE 829-1998,
“A Standard for Testing Application Software” (Perry) y “The Handbook of MIS Application
Software Testing” (Mosley). Es también aceptable combinar partes de dichos documentos para
construir un estándar híbrido para Test Plans. Así, las partes fundamentales de un Test Plan son
las siguientes:
• Alcance de las pruebas
• Cronograma
• Documentos a entregar
• Detalle de las pruebas a realizar
• Criterios de aprobación
• Riesgos y contingencias
35
Capítulo 3
Desarrollo
El presente capítulo muestra el trabajo realizado en cuanto a metodología,
implementación de la plataforma y resultados obtenidos de los servicios desplegados.
OpenSER [22]
36
• Redundancia directa, capacidad de operar en plataformas VoIP distribuidas.
• Puede ejecutarse en sistemas embebidos, con recursos limitados.
• Con balance de carga y en modo “stateless”, puede manejar hasta 5000 peticiones de
establecimiento de llamada por segundo; en sistemas con alta memoria, puede servir a
más de 300000 suscriptores.
Ubiquity [23]
Plataformas Soportadas
Sistema Operativo • Solaris 8, 9, 10; Windows Server 2003 Enterprise Edition;
Windows 2000 Advanced Server; Redhat Enterprise Linux 4;
SuSE Linux ES 8, 9
Java • JRE 1.4.2, 1.5
Base de Datos • IBM DB2 UDB v8 • Oracle 9i, 10g
• MySQL 5.0 Database Server – Community Edition (soportado en
UDE Developer Edition 1.2 y posterior solamente)
Hardware • Servidores comerciales de HP, IBM, Intel, Sun, y otros
Infraestructura de Red e Interoperabilidad
Media Server • Cantata SnowShore IP Media Server, Convedia CMS-1000/6000,
HP OpenCall Media Platform
J2EE Application • Cualquier J2EE Application Server que soporte RMI o SOAP
Server (JBoss App Server, BEA WLS, IBM Websphere)
Session Border • Netrake, Newport Networks
Controller
Media • Cisco 5350, proveedores de terminaciones PSTN Tier 1 vía
Gateways/PSTN conexión SIP directa
3GPP IMS • RFC 3588 Base Diameter Stack; interfaces Service Control (ISC),
Ro, Rf, Sh y APIs; generador de ICID, AVP, CDR, CTF, CDF;
Registration Data Reader
Ambiente de Ejecución de Servicios
SIP A/S Service Host • JAIN SIP Servlet Container que cumpla la norma JSR 116
SIP SOA Application • Extensión opcional para el contenedor JSR 116; framework de
Framework desarrollo y despliegue de aplicaciones basado en SOA
External Application • Interfaces RMI y SOAP a plataformas de aplicación externas;
Environment interoperabilidad con Microsoft Connected Services Framework
Desempeño y Escalabilidad
Escalabilidad • Escalamiento horizontal mediante agregación de más servidores o
canales por cluster
• Escalamiento vertical mediante agregación de más CPUs y
memoria por servidor
Desempeño • Desempeño (llamadas por segundo) se incrementa linealmente con
servidores/canales adicionales; miles de llamadas por segundo por
cluster
Clustering y Alta Disponibilidad
Balance de Carga • Balance de carga a través de múltiples SIP Service Hosts o Canales
37
en un cluster vía Service Director
Alta Disponibilidad • Disponibilidad del servicio del 99.999%
Continuidad del • Protección de fallas e intercambio de servicio para asegurar que las
Servicio sesiones SIP se mantengan abiertas si un elemento de servicio falla
• Actualizaciones “en caliente”
38
Tarificación • 3GPP IMS Diameter, Ro, Rf, ICID, generación de CDR, CTF,
CDF
• Logging Extraction Service
Gestión de Red • API de sistema de mantenimiento basada en JMX
• SNMPv2c
• Conector que cumple la norma JSR 160
GlassFish [24]
39
• GlassFish es utilizado directamente para la implementación de referencia oficial de Java
EE 5.
• GlassFish es el código base para el Sun Java System Application Server.
• GlassFish incorporará las caracterísiticas disponibles hoy en SJS AS 8.x.
• Muchos componentes se encuentran el repositorio Maven, y pronto habrán más.
Para ejemplificar aun más las diferencias entre las alternativas de implementación, se
presenta a continuación de forma general la manera de proveer el servicio de Click-to-Dial en
cada una de ellas.
El usuario de la aplicación utiliza una página web o un servicio web para introducir la
dirección del usuario que desea llamar, así como los detalles (nombre de usuario, contraseña,
dominio) de la cuenta SIP que será usada para efectuar la llamada. Con toda esta información, la
aplicación inicia una sesión 3PCC (Third Party Call Control, RFC 3725) que primero contacta a
quien llama. Cuando quien llama contesta, se contacta separadamente a quien se desea llamar.
Cuando éste contesta, se conectan ambos enlaces usando técnicas estándar de 3PCC. El cliente
(usuario de la página web o cliente de servicio web) interroga sobre el estado de ambos enlaces
usando llamadas HTTP o SOAP repetidamente.
La aplicación Click-to-Dial sigue el estándar 3pcc RFC 3725 para control de llamadas de
terceros. El modelo elegido del RFC es el “Flow 1” debido a su simplicidad. El diagrama muestra
los eventos de señalización más importantes:
40
En la página web de WeSIP se entrega un código que implementa la aplicación Click-to-
Dial usando dos tipos de interfaz. Una de ellas es una página web en AJAX que utiliza DWR
(Direct Web Remoting). La segunda es un servicio web implementado con AXIS. El código y los
archivos necesarios se encuentran en el siguiente link:
http://www.wesip.eu/mediawiki/index.php/Special:UserDownload?action=download&download
=click2call-08_11_06.sar
Ubiquity [23]
Esta plataforma hace uso de los llamados Open Web Services (OWS), que proveen una
interfaz externa estándar al SIP AS y a los Service Components que residen en él. Los OWS
están basados en la especificación Parlay X, lo que permite a aplicaciones externas hacer uso de
servicios de telecomunicaciones disponibles en el SIP AS mediante una interfaz abierta, basada
en SOAP. En este caso, también se hace uso de un contenedor Java (JEE), llamado JBoss, que se
comunica con el contenedor de SIP Servlets del AS.
El usuario de la parte superior utiliza cualquier dispositivo compatible con Web para
acceder a su libreta de direcciones centralizada. La capa de presentación de la libreta de
direcciones está representada mediante JSP y CSS residente en Tomcat, que en sí pertenecen a
JBoss. El JSP invocado por el usuario invocará a su vez a un EJB residente en la plataforma
JBoss. Este último será responsable de proveer una lista de contactos contenidos en la libreta de
direcciones del usuario. Adicionalmente, permite que el JSP pueda iniciar una llamada a un
41
usuario en la libreta, invocando un servicio Web residente en el SIP AS, que a su vez invoca los
métodos apropiados en los Service Components vía SOOF. Estos componentes son responsables
de generar la señalización apropiada para llevar a cabo la llamada.
Cada contacto será mostrado de una manera definida por el JSP. Al hacer click sobre una
dirección de contacto, el EJB de la lista de contactos invocará a los servicios residentes en el SIP
AS para establecer una llamada entre el contacto y la dirección del usuario local (especificada
también en el formulario Web). Del punto de vista del usuario, hacer click en su página causará
que su teléfono suene, y al contestar estará comunicado con el contacto en el cual hizo click.
En este caso, GlassFish utiliza un contenedor de SIP Servlets llamado SailFin. Los pasos
que sigue la aplicación son los siguientes:
• Alice y Bob se conectan cada uno a la aplicación web
• Alice y Bob registran cada uno un Softphone SIP
• Alice hace click en el enlace “Call” para llamar a Bob
• El teléfono de Alice suena
• Cuando Alice contesta, suena el teléfono de Bob
• Cuando Bob contesta, se lleva a cabo la conexión
• Cuando uno de ellos cuelga, el otro también es desconectado
Un esquema de los mensajes SIP intercambiados se presenta a continuación:
Para manejar estos mensajes, se utilizan dos SIP Servlets y un HTTP Servlet, cuyas
características se presentan a continuación:
42
Este SIP Servlet maneja el registro de los softphones. Cuando Alice o Bob inician su
softphone, éste registra su dirección con un Proxy SIP. En este caso, se graba la información de
contacto de los softphones usando la API Java Persistence.
Analizando los puntos anteriores, se puede ver que es factible desplegar una arquitectura
simple para proveer servicios, tales como Click-to-Dial, mediante las tres opciones de
implementación estudiadas. Sin embargo, hay dos de ellas que presentan serios obstáculos en
relación a los objetivos del proyecto, lo cual se analizará a continuación.
Por otro lado, la opción de GlassFish, si bien representa una alternativa de código libre y
con alto respaldo basado en comunidades, no presenta una conexión intuitiva con los sistemas de
AAA y tarificación, lo que constituye una desventaja potente del punto de vista del operador.
Además, su orientación hacia Java lo hace poco flexible frente a otras tecnologías y opciones de
implementación, siendo incierta su interconexión con otros sistemas desplegados.
Así, finalmente, la opción será utilizar OpenSER como SIP Server junto con WeSIP como
B2BUA y Application Server, ya que presentan la combinación óptima de flexibilidad,
escalabilidad e interoperabilidad, además de ser fácilmente modificables y adaptables a
requerimientos específicos (en el caso de OpenSER).
3.2 Implementación
En esta sección se detallará la instalación de las aplicaciones y los resultados que se
obtuvieron durante el despliegue de los servicios.
43
3.2.1 Topología Utilizada
Se realizó la instalación [27] de OpenSER 1.2.2 sin soporte para TLS, en un sistema
Linux con la distribución Ubuntu 7.10 “Gutsy Gibbon”. Algunos paquetes deben ser instalados o
actualizados a su última versión antes de proceder con la compilación e instalación del programa.
Estos paquetes son los siguientes:
• gcc o icc
• bison o yacc
• flex
• GNU make, install, tar y gzip
44
• mysqlclient y zlib (lib y devel) para el soporte de bases de datos MySQL (opcionalmente
se puede instalar PostgreSQL u ODBC)
• Otras librerías opcionales para soporte de Jabber, CPL y Presence Agent
En este caso particular se tuvo que instalar bison, flex, openssl, mysql (cliente y devel) y
zlib (devel).
El archivo que contiene los binarios de OpenSER se debe descomprimir usando tar, y
luego se ingresa a la carpeta:
Luego se compila e instala el programa junto a todos sus módulos como root o super user
(su), usando prefix=/ si se quiere instalar en el directorio principal del sistema de archivos, o sin
usar prefix si se desea colocar en /usr/local. En el primer caso se ejecutan las siguientes
instrucciones:
Las cinco instrucciones anteriores pueden reemplazarse por las dos siguientes, que
incluyen los módulos de MySQL y presencia en la compilación e instalación:
El siguiente paso es configurar MySQL, empezando por establecer una contraseña para la
cuenta root:
45
Luego se debe crear la base de datos de OpenSER mediante el script openser_mysql.sh
ubicado en /sbin:
- loadmodule "/usr/lib/openser/modules/auth.so"
- loadmodule "/usr/lib/openser/modules/auth_db.so"
- modparam("usrloc", "db_mode", 2)
- if (!www_authorize("dominio_o_ip_del_host", "subscriber")) {
- www_challenge("dominio_o_ip_del_host", "0");
- break;
- };
Nótese que en las últimas líneas se debe ingresar nuevamente el dominio al que servirá el
servidor SIP o en su defecto la IP del host, si se ejecuta para servir un entorno local. Además, se
debe comentar la siguiente línea (agregando # al principio):
46
están usando las contraseñas por defecto, las cuales deben cambiarse lo antes posible para evitar
riesgos.
Así, en la base de datos se tienen tres usuarios: admin, user1 y user2. A estas alturas se
puede utilizar un cliente SIP para efectuar un registro contra OpenSER usando alguno de estos
tres usuarios, para poder comenzar a utilizar servicios basados en SIP. Por ejemplo, utilizando el
programa X-Lite, se puede establecer la siguiente configuración básica para el registro:
Tabla 12: Instalación OpenSER (10)
Username: user1
Password: user1pw
Authorization user name: user1 (se puede dejar en blanco)
Domain/Realm: dominio.com
3.2.3 Aplicaciones
En esta sección se detallará el despliegue de los diferentes servicios basados en SIP que
corresponden a la implementación de la plataforma de aplicaciones.
Por otro lado, para proveer el servicio de Voicemail, se recurre al software Asterisk.
Específicamente, se utiliza un software llamado trixbox CE (Community Edition) [28], el cual
además de Asterisk incluye una serie de herramientas complementarias, en adición a una interfaz
gráfica basada en Web accesible desde cualquier navegador. La principal característica de trixbox
CE es que corresponde a un software de código abierto; existen a su vez versiones propietarias de
características más completas.
47
Para proveer el servicio, es necesario hacer ciertas modificaciones al archivo de
configuración básico de OpenSER detallado en el anexo 2 [29]. Si solamente se desea proveer el
servicio de Voicemail, se pueden omitir o comentar las líneas del archivo de configuración que
correspondan al manejo de otros tipos de requerimiento. Esto resultaría en agregar las siguientes
líneas al archivo mencionado, en los lugares adecuados y reemplazando ip_trixbox por el valor
correspondiente:
if(!isflagset(10)) {
t_on_failure("1");
};
# Servidor Voicemail
if(uri=~"sip:\*98@.*") {
route(4);
}
# Casilla Voicemail
if(uri=~"sip:\*981@.*") {
if(is_present_hf("X-VM")) {
remove_hf("X-VM");
}
append_hf("X-VM: $fU\r\n");
route(4);
}
…
}
# ---------------------------
# Redireccion hacia Voicemail
# ---------------------------
failure_route[1] {
if(!t_was_cancelled()) {
if (t_check_status("(486)|(408)")) {
rewritehostport("ip_trixbox:5060");
append_branch();
# Activamos el flag 10 para evitar bucles
setflag(10);
t_relay();
exit;
}
}
}
48
Cabe destacar que la lógica implementada captura los errores de comunicación,
reconociendo éstos mediante un flag particular del mensaje y redirigiéndolos hacia el servidor de
Voicemail. Así, es posible soportar desvíos de los siguientes tipos: CFNA (Call Forwarding No
Answer), CFNR (Call Forwarding on No Reply) y CFB (Call Forwarding Busy); en este caso la
lógica no posibilita la redirección del tipo CFU (Call Forwarding Unconditional), pues no se trata
de un error de la llamada sino un desvío predeterminado para todas las llamadas.
Por otra parte, para proveer el servicio de presencia, es necesario realizar modificaciones
al archivo de configuración básico de OpenSER del anexo 2 [30]. Cabe destacar que si sólo se
desea proveer el servicio de presencia, las líneas del archivo de configuración correspondientes al
manejo de registro, mensajes INVITE y otros pueden ser comentadas u omitidas. Esto deriva en
la adición de las siguientes líneas al archivo de configuración mencionado, en las posiciones
respectivas y reemplazando ip_db e ip_servidor por los correspondientes valores:
# presence handling
if(method=="PUBLISH"){
route(2);
}
if(method=="SUBSCRIBE"){
route(2);
}
…
}
# presence handling route
route[2]
{
# absorb retransmissions
if (! t_newtran())
{
sl_reply_error();
exit;
};
if(is_method("PUBLISH"))
49
{
handle_publish();
t_release();
} else if( is_method("SUBSCRIBE")) {
handle_subscribe();
t_release();
};
exit;
}
C2D (Click-to-Dial)
Se optó por utilizar el programa UCT B2BUA [31], el cual envía los mensajes INVITE a
dos usuarios registrados contra un Proxy SIP o contra un core IMS, para luego contactar a ambos
en una sesión P2P. El programa se instala mediante el paquete Debian uctb2bua, el cual a su vez
instala los paquetes adicionales necesarios (fundamentalmente libexosip). La forma más fácil
de ejecutar el programa es vía Web, como muestra la figura 3-7.
50
Figura 3-7: Interfaz Web UCT B2BUA
Gateway SMS
Para proveer el servicio de Gateway SMS se optó por el software Kannel [32], alternativa
flexible y modificable a gusto del usuario. Nuevamente se optó por instalar el paquete Debian
respectivo (kannel), modificando luego a discreción los archivos de configuración kannel.conf
y smskannel.conf para incluir los datos de la red y el SMSC (Short Message Service Center,
centro de mensajería corta) a utilizar. Los comandos para ejecutar el programa son los siguientes:
Para probar el servicio se optó por implementar una página Web basada en PHP que
extrajera la información de presencia de un usuario mediante MySQL y ofreciera la opción de
enviar dichos datos vía SMS. El código se detalla en el Anexo 4. Cabe destacar que el archivo
considera un include para obtener ciertos parámetros como el $db_user y $db_passwd. Más
adelante se mostrará la apariencia de dicha Web.
Parlay X
Se optó por implementar la versión de ejemplo de JDeveloper de Oracle [33],
proveyéndose un servicio de presencia basado en Parlay X Web Services. Para instalar y ejecutar
la demo, se siguió paso a paso la guía de instalación que se detalla en el archivo
http://www.oracle.com/technology/products/ocms/pdf/parlayxjdeveloper.pdf.
IPTV
El paquete Debian uctiptv [34] instala el programa y los archivos necesarios. Lo que
sigue es aprovisionar el AS en el core IMS mediante la interfaz gráfica del HSS
(http://localhost:8080, username hssAdmin, password hss), siguiendo los pasos que se muestran a
continuación:
• Agregar un Trigger Point y los SPT correspondientes; en este caso se contacta al servidor
mediante un INVITE a channelX@iptv.playsip.lab, por lo
52
Para tener el un canal transmitiendo el archivo channel1.mpg a 100 kb/s en
channel1@iptv.playsip.lab, el servidor se ejecuta mediante el siguiente comando:
3.3.1 Definición
Los clientes a utilizar durante las pruebas corresponden al cliente SIP X-Lite 3.0, el
cliente IMS UCT 1.0.11 (1.0.12 en algunas pruebas) y el cliente SIP incluido en un teléfono
móvil Nokia E61i. Previamente a las pruebas de servicios, los clientes deben estar registrados
contra un servidor SIP o contra un core IMS; es por esta razón que se incluyen pruebas básicas de
registro.
Las pruebas podrán resultar exitosas (OK), no exitosas (NOK) o no serán aplicables (NA).
Las pruebas que no se realicen entrarán en la categoría anterior. Como cada prueba puede
presentar matices o situaciones particulares, se entregarán observaciones ad-hoc.
53
Tabla 17: Plan de Pruebas
ID Prueba
1 Registro SIP: X-Lite
2 Registro SIP: Nokia
3 Registro IMS: UCT
4 Registro IMS: Nokia
5 Sesión Voz SIP/SIP: X-Lite/X-Lite
6 Sesión Voz SIP/SIP: X-Lite/Nokia
7 Sesión Voz SIP/IMS: X-Lite/UCT
8 Sesión Voz SIP/IMS: Nokia/UCT
9 Sesión Voz IMS/IMS: UCT/UCT
10 Sesión Voz IMS/IMS: Nokia/UCT
11 Sesión Voicemail SIP: X-Lite
12 Sesión Voicemail SIP: Nokia
13 Sesión Voicemail IMS: UCT
14 Sesión Voicemail IMS: Nokia
15 Sesión Mensajería Instantánea SIP/SIP: X-Lite/X-Lite
16 Sesión Mensajería Instantánea SIP/IMS: X-Lite/UCT
17 Sesión Mensajería Instantánea IMS/IMS: UCT/UCT
18 Presencia OpenSER SIP: X-Lite
19 Presencia OpenSER IMS: UCT
20 Sesión Presencia OpenSER SIP/SIP: X-Lite/X-Lite
21 Sesión Presencia OpenSER SIP/IMS: X-Lite/UCT
22 Sesión Presencia OpenSER IMS/IMS: UCT/UCT
23 Sesión Presencia Parlay X: Oracle/Web
24 Sesión Click-to-Dial SIP/SIP: X-Lite/X-Lite
25 Sesión Click-to-Dial SIP/SIP: X-Lite/Nokia
26 Sesión Click-to-Dial SIP/IMS: X-Lite/UCT
27 Sesión Click-to-Dial SIP/IMS: X-Lite/Nokia
28 Sesión Click-to-Dial IMS/IMS: UCT/UCT
29 Sesión Click-to-Dial IMS/IMS: Nokia/UCT
30 Sesión IPTV SIP: X-Lite
31 Sesión IPTV SIP: Nokia
32 Sesión IPTV IMS: UCT
33 Sesión IPTV IMS: Nokia
34 Envío SMS: Web (PC)
35 Envío SMS: Web (Nokia)
3.3.2 Resultados
3.3.2.1 Registro
54
Tabla 18: Resultados Test Plan, Registro
ID Prueba Resultado
1 Registro SIP: X-Lite OK
2 Registro SIP: Nokia OK
3 Registro IMS: UCT OK
4 Registro IMS: Nokia OK
A continuación se presentan los flujos obtenidos para el registro SIP e IMS en el caso del
cliente Nokia. En el primer caso se trata de un registro sin autenticación, mientras que contra el
core IMS se utiliza el algoritmo de autenticación AKAv1-MD5.
Tabla 19: Mensaje (1) REGISTER - Registro SIP Nokia sin autenticación
REGISTER sip:172.16.231.213:8060 SIP/2.0
Route: <sip:172.16.231.213:8060;lr>
Via: SIP/2.0/UDP
10.177.22.217:5060;branch=z9hG4bKgsen0knbs1hc6cc70pe1elm;rport
From: <sip:diego@chile.lab>;tag=ec870kiviphc67on0pe1
To: <sip:diego@chile.lab>
Contact: <sip:diego@10.177.22.217>;expires=3600
CSeq: 1202 REGISTER
Call-ID: VEhMkIqNoIch9wps5VWOtDuYHuwUEC
Supported: sec-agree
User-Agent: Nokia RM-227 1.0633.22.06
Max-Forwards: 70
Content-Length: 0
55
Figura 3-13: Registro IMS Nokia con autenticación Digest-AKAv1
Tabla 20: Mensaje (7) REGISTER - Registro IMS Nokia con autenticación Digest-AKAv1
REGISTER sip:icscf.playsip.lab SIP/2.0
Route: <sip:172.16.231.213:4060;lr>
Via: SIP/2.0/UDP 172.16.231.213:4060;branch=z9hG4bK45f4.fe12b963.0
Via: SIP/2.0/UDP
172.16.198.236:5060;branch=z9hG4bKquq18h8k8k6l4vlv4riunhr;rport=5060
From: <sip:test02@playsip.lab>;tag=4mu2dpavm5hc6c9n06hk
To: <sip:test02@playsip.lab>
Contact: <sip:test02@172.16.198.236>;expires=3600
CSeq: 1311 REGISTER
Call-ID: KTwCVjtsoIc62M6zjUShUQ-9LGsTLv
Supported: sec-agree
User-Agent: Nokia RM-227 1.0633.22.06
Max-Forwards: 16
Content-Length: 0
Authorization: Digest
realm="playsip.lab",nonce="6404672e1861d0af9eff7209ad926bfe",algorithm=MD5,use
rname="test02@playsip.lab",uri="sip:icscf.playsip.lab",response="b044980422ed3
fdfe37464946f798596", integrity-protected="no"
Path: <sip:term@pcscf.playsip.lab:4060;lr>
Require: path
P-Charging-Vector: icid-value="P-CSCFabcd484d4ee4000003d3";icid-generated-
at=172.16.231.213;orig-ioi="playsip.lab"
P-Visited-Network-ID: playsip.lab
56
3.3.2.2 Servicios de Voz
En el caso de los servicios de voz, las llamadas entre clientes del mismo tipo (SIP/SIP o
IMS/IMS) resultaron satisfactorias, así como la comunicación entre un cliente SIP y un usuario
registrado contra el core IMS. En cuanto al servicio de Voicemail, se presentaron ciertos
problemas al acceder a éste desde un cliente IMS, los cuales serán discutidos en el siguiente
capítulo. Adicionalmente, las pruebas de Voicemail para el cliente Nokia registrado contra
OpenSER tampoco resultaron satisfactorias.
A continuación se presenta el flujo obtenido para una llamada de voz entre dos usuarios
IMS pertenecientes al mismo dominio, además del flujo hacia y desde el servidor de Voicemail al
rescatar un mensaje, utilizando un cliente SIP X-Lite. Se presentan también los mensajes INVITE
iniciales para cada caso.
57
Figura 3-14: Llamada IMS en el Mismo Dominio
58
Tabla 22: Mensaje (1) INVITE - Llamada IMS en el Mismo Dominio
INVITE sip:javier@playsip.lab SIP/2.0
Via: SIP/2.0/UDP 172.16.231.213:5061;rport;branch=z9hG4bK1087001947
Route: <sip:orig@scscf.playsip.lab:6060;lr>
From: "Bob" <sip:bob@playsip.lab>;tag=865285700
To: <sip:javier@playsip.lab>
Call-ID: 269933587
CSeq: 20 INVITE
Contact: <sip:bob@172.16.231.213:5061>
Content-Type: application/sdp
Allow: INVITE, ACK, CANCEL, BYE, PRACK, UPDATE, REFER, MESSAGE
Max-Forwards: 70
User-Agent: UCT IMS Client
Subject: IMS Call
Expires: 120
P-Preferred-Identity: "Bob" <sip:bob@playsip.lab>
P-Preferred-Service: urn:xxx:3gpp-service.ims.icsi.mmtel
Privacy: none
P-Access-Network-Info: IEEE-802.11a
Require: precondition
Require: sec-agree
Proxy-Require: sec-agree
Supported: 100rel
Content-Length: 441
v=0
o=- 0 0 IN IP4 172.16.231.213
s=IMS Call
c=IN IP4 172.16.231.213
t=0 0
m=audio 26213 RTP/AVP 3 0 101
b=AS:64
a=rtpmap:3 GSM/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-11
a=curr:qos local none
a=curr:qos remote none
a=des:qos mandatory local sendrecv
a=des:qos mandatory remote sendrecv
m=message 21039 TCP/MSRP
a=accept-types:text/plain
a=path:msrp://172.16.231.213:21039/3a72007d16b9;tcp
59
Figura 3-15: Llamada SIP a Voicemail
v=0
o=- 6 2 IN IP4 172.16.231.184
s=CounterPath X-Lite 3.0
c=IN IP4 172.16.231.184
t=0 0
m=audio 9092 RTP/AVP 107 119 100 106 0 105 98 8 101
a=alt:1 3 : ECO4BFoN gNa0cLEd 172.16.231.184 9092
60
a=alt:2 2 : 5CsWRXnN Un/99Quw 192.168.102.1 9092
a=alt:3 1 : Zsfuf0/j PyTY0Zio 192.168.154.1 9092
a=fmtp:101 0-15
a=rtpmap:107 BV32/16000
a=rtpmap:119 BV32-FEC/16000
a=rtpmap:100 SPEEX/16000
a=rtpmap:106 SPEEX-FEC/16000
a=rtpmap:105 SPEEX-FEC/8000
a=rtpmap:98 iLBC/8000
a=rtpmap:101 telephone-event/8000
a=sendrecv
La que sigue corresponde a la tabla resumen de resultados para los servicios de presencia
y mensajería instantánea.
61
Tabla 25: Mensaje (1) MESSAGE - Mensajería Instantánea
MESSAGE sip:javier@playsip.lab SIP/2.0
Via: SIP/2.0/UDP 172.16.231.213:6060;branch=z9hG4bK530e.7e9b6bf.0
Via: SIP/2.0/UDP 172.16.231.213:4060;branch=z9hG4bK530e.c5561b41.0
Via: SIP/2.0/UDP 172.16.231.213:5061;rport=5061;branch=z9hG4bK10683234
From: "Diego" <sip:diego@playsip.lab>;tag=2053192809
To: <sip:javier@playsip.lab>
Call-ID: 1757419275
CSeq: 20 MESSAGE
Content-Type: application/im-iscomposing+xml
Max-Forwards: 15
User-Agent: UCT IMS Client
P-Access-Network-Info: IEEE-802.11b
Content-Length: 300
P-Asserted-Identity: "Diego" <sip:diego@playsip.lab>
P-Charging-Vector: icid-value="P-CSCFabcd48b16e44000000f1";icid-
generated-at=172.16.231.213;orig-ioi="playsip.lab"
hola
El primer mensaje corresponde a una alerta hacia el usuario destino, del tipo “el usuario
origen está escribiendo un mensaje”, para que el primero sepa que luego obtendrá texto del
segundo. Como se puede apreciar, dicha alerta se encuentra codificado en lenguaje XML.
62
Figura 3-17: Publicación de Presencia
63
Figura 3-18: Suscripción a Presencia
64
Figura 3-19: Sesión con Presencia
65
El servicio de presencia mediante Web Service Parlay X funciona de la misma manera
que el caso anterior, con la diferencia que en este caso se utiliza un cliente propietario de Oracle
junto con un cliente basado en Web. Los flujos son los mismos; cambia un poco el formato XML
de la información de presencia, lo que será discutido en el próximo capítulo.
66
3.3.2.4 Otros Servicios
A continuación se presenta el flujo obtenido para una sesión C2D entre dos usuarios SIP,
incluyendo el flujo de medios teórico que no pudo ser establecido, lo cual se discutirá en el
siguiente capítulo.
67
Tabla 31: Mensaje (7) ACK – Click-to-Dial SIP
ACK sip:Bob@172.16.231.186:61238 SIP/2.0
Max-Forwards: 69
Content-Length: 546
To:
<sip:Bob@172.16.231.186:61238>;rinstance=de475c3d49dcc195;tag=a759236d
Cseq: 1 ACK
Via: SIP/2.0/UDP 172.16.231.184:5060;branch=z9hG4bKffefca38-faee-4746-
9278-7d42e8c5b11c
Content-Type: application/sdp
From:
<sip:Alice@172.16.231.185:54532>;rinstance=d8aeff9fa6125dc6;tag=ffcq248r-
8
Call-Id: 172.16.231.184_2_6860402202160814491
v=0
o=- 2 2 IN IP4 172.16.231.186
s=CounterPath X-Lite 3.0
c=IN IP4 172.16.231.186
t=0 0
m=audio 5734 RTP/AVP 107 119 100 106 0 105 98 8 101
a=fmtp:101 0-15
a=rtpmap:107 BV32/16000
a=rtpmap:119 BV32-FEC/16000
a=rtpmap:100 SPEEX/16000
a=rtpmap:106 SPEEX-FEC/16000
a=rtpmap:105 SPEEX-FEC/8000
a=rtpmap:98 iLBC/8000
a=rtpmap:101 telephone-event/8000
a=sendrecv
m=video 41818 RTP/AVP 115 34
a=fmtp:115 QCIF=1 I=1 J=1 T=1 MaxBR=1960
a=fmtp:34 QCIF=1 CIF=1 MaxBR=1960
a=rtpmap:115 H263-1998/90000
a=rtpmap:34 H263/90000
a=sendrecv
68
En el caso de IPTV, se muestra el flujo de datos para un cliente registrado contra el core
IMS y el mensaje INVITE respectivo.
69
P-Access-Network-Info: IEEE-802.11b
Require: sec-agree
Proxy-Require: sec-agree
Supported: 100rel
Content-Length: 524
v=0
o=- 0 0 IN IP4 172.16.231.213
s=IMS Call
c=IN IP4 172.16.231.213
t=0 0
m=audio 17537 RTP/AVP 3 0 101
b=AS:64
a=rtpmap:3 GSM/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-11
a=curr:qos local none
a=curr:qos remote none
a=des:qos none local sendrecv
a=des:qos none remote sendrecv
m=video 17145 RTP/AVP 96
b=AS:128
a=curr:qos local none
a=curr:qos remote none
a=des:qos none local sendrecv
a=des:qos none remote sendrecv
a=rtpmap:96 H263-1998
a=fmtp:96 profile-level-id=0
Por último, con respecto al servicio Web de información de presencia y envío vía SMS
presenta la siguiente interfaz en un PC:
70
Figura 3-25: Confirmación envío SMS Web
En el caso del teléfono Nokia, la página Web también puede ser desplegada, a lo cual el
envío de SMS se hace transparente para el usuario.
71
Capítulo 4
Discusión de Resultados
En este capítulo se examinan los resultados del capítulo anterior, mencionando y haciendo
críticas tanto de lo que resultó exitoso como de lo que no, planteando así el desarrollo del tema a
futuro.
4.1.1 Registro
Se logró registrar los diferentes clientes tanto contra el servidor SIP OpenSER como
contra el core IMS. Como se puede ver en los flujos y capturas de la sección 3.3.2, se logró
registrar un usuario utilizando el cliente SIP nativo del teléfono Nokia, primero sin autenticación
contra el Proxy/Registrar SIP y luego utilizando autenticación AKAv1 contra el core IMS. Esto
72
representa una clara oportunidad para desarrollar servicios compatibles con clientes ya
desplegados en el mercado, como es el caso del cliente SIP nativo d dicho teléfono móvil.
Cabe destacar que al intentar registrarse contra el core en otra oportunidad, el registro
contra el core IMS no llegó a realizarse. Esto ocurrió dado que al momento de autenticar el
nombre de usuario era cambiado durante el flujo del mensaje. A continuación se detalla el
REGISTER que incluye las credenciales:
Así, el nombre de usuario es totalmente distinto al original md5, por lo que el HSS no lo
reconoce como válido y le prohibe el registro mediante un mensaje 403 Forbidden - HSS User
Unknown. Se sospechó en un principio que el problema se debía a un cambio en los equipos del
core de paquetes de la operadora, específicamente el GGSN, cuyo proveedor difiere del original,
pero notando el rango de la IP asignada al teléfono móvil se puede notar que el registro detallado
en la sección 3.3.2.1 se realizó a través de la red WiFi y no vía la red GSM. Por otro lado, el
cambio de nombre de usuario se debe a lo propuesto en la especificación 3GPP TR 33.978, que
establece que la identidad pública del usuario IMS se construye a partir de los datos almacenados
en la tarjeta SIM del teléfono móvil, de la siguiente manera:
[IMSI]@ims.mnc[MNC].mcc[MCC].3gppnetwork.org
Así, el IMSI del usuario acompaña al MNC (Mobile Network Code), que en el caso de la
red de Movistar Chile es el 02 (se agregan ceros a la izquierda hasta completar tres dígitos), y
también al MCC (Mobile Country Code), que en el caso de Chile es el 730. Se puede decir
entonces que son detalles a tener en cuenta el desplegar servicios en una operadora real, y que
deben ser analizados en profundidad para poder realizar exitosamente el registro del cliente SIP
Nokia vía la red GSM.
En cuanto a los servicios de voz, tanto la plataforma SIP como el core IMS proveen casi
transparentemente el servicio de telefonía IP, pero en este caso se desarrollaron las pruebas en un
73
mismo segmento de red. En un despliegue real, se comunican usuarios de redes distintas que
muchas veces hacen uso de NAT, apareciendo entonces el problema del NAT traversal (el paso
del flujo de datos a través de NATs) para el flujo de medios entre ellos. Si bien la señalización
SIP puede ser enrutada debidamente, los medios encapsulados en el protocolo de transporte RTP
son Peer-to-Peer, por lo que necesitan un método para ser enrutados adecuadamente.
Para evitar dicho inconveniente, una opción es utilizar Proxies para los medios RTP (RTP
Proxies), que redirijan y enluten los medios entre los usuarios. OpenSER ofrece dicha alternativa
mediante el módulo nathhelper y la utilización de rtpproxy, o en su defecto la utilización del
módulo mediaproxy. Otra alternativa es utilizar servidores STUN o un SBC (Service Border
Controller), que modifican tanto el flujo de señalización como el de medios para que no ocurran
problemas con los NATs.
Por otro lado, un problema recurrente al intentar comunicar dos clientes IMS consistió en
la caída sin razón aparente del S-CSCF del core. Si se intentaba llamar nuevamente bajo las
mismas condiciones, la llamada podía ser cursada. Este hecho no hace más que acentuar el
carácter de servicio en constante desarrollo de la implementación del core (OpenIMSCore), en la
cual pueden surgir bugs que se van solucionando a medida que la comunidad los informa a los
desarrolladores. Así, una comunicación fluida con los autores del software, y más aún, un aporte
personal al desarrollo del tema pueden ayudar a remediar los problemas que brotan y contribuir a
una constante mejora del programa.
En el caso del servicio de presencia basado en Web Services Parlay X, el cliente a utilizar
es el llamado Oracle Communicator, pues el ejemplo implementado considera aportes
propietarios que obligan a ocupar dicho software. Este punto es importante, ya que las
plataformas propietarias cierran la puerta al desarrollo de nuevos o mejores servicios. Si bien en
este caso se ofrece una plataforma de desarrollo mediante JDeveloper, el hecho de tener que
utilizar un cliente propietario sin posibilidad de agregarle funcionalidades o características hace
que se dificulte su adopción masiva.
El principal punto a discutir en este caso corresponde a las diferencias entre los mensajes
XML que transportan la información de presencia, de acuerdo al cliente utilizado. A continuación
se presenta un ejemplo de información de presencia para cada uno de los clientes considerados
(UCT IMS Client, X-Lite y Oracle Communicator en conjunto con el Web Service Parlay X):
74
Tabla 35: XML Presencia UCT
<?xml version="1.0" encoding="UTF-8"?>
<presence xmlns="urn:ietf:params:xml:ns:pidf"
xmlns:im="urn:ietf:params:xml:ns:pidf:im"
entity="sip:diego@playsip.lab">
[09]<tuple id="UCTIMSClient">
[09][09]<status>
[09][09][09]<basic>open</basic>
[09][09]</status>
[09][09]<note>Away</note>
[09]</tuple>
</presence>
Como se puede apreciar, las diferencias saltan a la vista. Cada cliente implementa su
propio “sabor” de la información de presencia, lo que a la larga produce problemas de
compatibilidad entre clientes. Si bien el formato de la información está normado (IETF RFC
75
3863), los clientes hacen su propia interpretación del estándar y presentan la información de
manera distinta, cayendo en la incompatibilidad citada anteriormente.
v=0
o=- 0 0 IN IP4 172.16.231.213
s=IMS_Call
c=IN IP4 172.16.231.213
t=0 0
m=audio 0 RTP/AVP
m=video 17145 RTP/AVP 96
b=AS:128
a=curr:qos local sendrecv
a=curr:qos remote none
a=des:qos none local sendrecv
a=des:qos none remote sendrecv
a=rtpmap:96 H263-1998
a=fmtp:96 profile-level-id=0
Por ejemplo, en este caso se indica que no habrá audio durante el stream, y que el video
será transmitido en el formato H.263+ (H.263-1998). Si bien el cliente X-Lite manifiesta soporte
76
para dicho codec, las pruebas realizadas con éste no fueron satisfactorias en cuanto a video, lo
que saca a la luz una incompatiblidad surgida de una compatibilidad aparente, la cual se debe
tener en cuenta.
Por último, el envío de SMS vía Web y conexión a un SMSC presenta varios puntos
interesantes a considerar. Primero que todo, la capacidad de hacer transparente al usuario el envío
de información específica (en este caso, información de presencia), permite que se puedan
proveer servicios de valor agregado utilizando dicha característica. Además, la capacidad de
poder realizarlo sobre un cliente desplegado masivamente como lo es un PC o un teléfono móvil,
permite que los servicios puedan llegar a más usuarios y enriquecer su experiencia de uso. Por
último, se abre la puerta a proveedores o terceros para que puedan proveer sus propios
contenidos, llegando a acuerdos monetarios con el respectivo operador de la red.
Por otro lado, para que la orquestación de servicios se pueda llevar a cabo, los servidores
de aplicaciones SIP deben soportar las extensiones al protocolo que introduce IMS, tales como
los P-Headers. Es importante entonces que el desarrollo tanto de las aplicaciones como de los
77
servidores que las proveen evolucione en una misma dirección, guiado por estándares y normas
que eviten las incompatibilidades.
78
Capítulo 5
Conclusiones
IMS representa beneficios tanto para los operadores y propietarios de las redes como para
los fabricantes de equipos, los proveedores o desarrolladores de servicios, y los usuarios finales.
La arquitectura definida y sus interfaces estandarizadas permiten que proveer nuevos y mejores
servicios de valor agregado en la red se haga de forma fácil y rápida, enriqueciendo así la
experiencia del usuario final. El operador puede desarrollar servicios propios o bien incluir
servidores de aplicaciones de terceros, mientras cumplan con las normas IMS para asegurar la
compatibilidad.
Por otro lado, IMS permite que las aplicaciones se ofrezcan sin importar el tipo de acceso
o terminal de usuario, lo que se traduce en una transversalidad en la provisión de servicios que
beneficia al usuario. Así, éste puede tener acceso a sus propios servicios desde cualquier tipo de
terminal, en el momento que él desee. Además, la información del usuario es accesible por las
diferentes aplicaciones de manera centralizada; una identidad única a través de la red permite que
la ubicuidad de servicios pueda ser real.
Existen terminales compatibles con IMS ya en circulación, los cuales permitirán una
evolución más rápida en el uso de aplicaciones relacionadas con las nuevas capacidades de la red.
Además, las APIs y otras plataformas de desarrollo permiten que los clientes puedan actualizarse
y obtener nuevas características conducentes a la compatibilidad con las nuevas redes.
80
Referencias
[1] BATES, J. et al. 2006. Converged Multimedia Networks. Inglaterra, John Wiley &
Sons. 348p.
[2] CISCO. Supporting the IP Multimedia Subsystem for Mobile, Wireline, and Cable
Providers [en línea].
http://www.cisco.com/en/US/solutions/collateral/ns341/ns525/ns537/ns549/net_imple
mentation_white_paper0900aecd80395cb0_ns609_Networking_Solutions_White_Pa
per.html [Consulta: septiembre 2007]
[6] TECH INVITE. ABNF Grammar for SDP – Session Description Protocol (RFC
4566) [en línea]. http://www.tech-invite.com/Ti-sdp-abnf.html [Consulta: octubre
2007]
[7] FRAUNHOFER FOKUS. The Open IMS Core Project [en línea].
http://www.openimscore.org/ [Consulta: enero 2008]
[8] POIKSELKÄ, M. et al. 2004. The IMS: IP Multimedia Concepts and Services in the
Mobile Domain. Inglaterra, John Wiley & Sons. 419p.
[11] IBM. Business Apps via Telco Gateway, Part 1: Introduction to the Parlay
Architecture [en línea]. http://www.ibm.com/developerworks/library/wi-
telco/index.html [Consulta: noviembre 2007]
[12] OMA. 2005. WV-040 System Architecture Model, Instant Messaging and Presence
Service [IMPS] v1.2.
81
[13] MÄKELÄINEN, S. y MICHAEL, M. P. 2005. OMA IMPS (Previously Wireless
Village) [en línea].
http://martinpeter.michael.googlepages.com/OMAIMPS.pdf [Consulta: enero 2008]
[15] TECH INVITE. RFC 3261’s Main Example Revisited [en línea]. http://www.tech-
invite.com/Ti-sip-CF3261.html [Consulta: octubre 2007]
[17] SIPCENTER. Addressing survivability and scalability of SIP networks by using Peer-
to-Peer protocols [en línea]. http://www.sipcenter.com/sip.nsf/html/AG+P2P+SIP
[Consulta: octubre 2007]
[25] WESIP. WeSIP – The OpenSER Converged Application Server [en línea].
http://www.wesip.com/mediawiki/index.php/Main_Page [Consulta: septiembre 2007]
82
[28] TRIXBOX. trixbox CE – The Open Platform for Business Telephony [en línea].
http://www.trixbox.org/ [Consulta: enero 2008]
[29] IBARRA, S. 2007. HOWTO: OpenSER + Asterisk como Voicemail Server [en
línea]. http://www.saghul.net/blog/2007/08/22/howto-openser-asterisk-como-
voicemail-server/ [Consulta: enero 2008]
[30] IBARRA, S. 2007. HOWTO: Presencia SIMPLE con OpenSER [en línea].
http://www.saghul.net/blog/2007/09/15/howto-presencia-simple-con-openser/
[Consulta: enero 2008]
[31] UCT. How to Set Up a Back-to-Back User Agent in Your IMS Network [en línea].
http://uctimsclient.berlios.de/back-2-back_user_agent_howto.html [Consulta: febrero
2008]
[32] KANNEL. Kannel: Open Source WAP and SMS Gateway [en línea].
http://www.kannel.org/ [Consulta: marzo 2008]
[34] UCT. How to Run the UCT IPtv Streaming Server [en línea].
http://uctimsclient.berlios.de/uctiptv_howto.html [Consulta: febrero 2008]
[35] IETF RFC Page [en línea]. http://www.ietf.org/rfc.html [Consulta: octubre 2007]
83
Acrónimos
3GPP Third Generation Partnership Project
3PCC Third Party Call Control
AAA Authentication, Authorization and Accounting
AKA Authentication and Key Agreement
API Application Programming Interface
AS Application Server
ASCII American Standard Code for Information Interchange
B2BUA Back-to-Back User Agent
BSS Business Support System
C2D Click-to-Dial
CAMEL Customized Applications for Mobile Network Enhanced Logic
CAP CAMEL Application Part
CDMA Code Division Multiple Access
CDR Charging Data Record
CFB Call Forwarding Busy
CFNA Call Forwarding No Answer
CFNR Call Forwarding on No Reply
CFU Call Forwarding Unconditional
CGI Common Gateway Interface
CPL Call Processing Language
CSCF Call Session Control Function
CSE CAMEL Service Environment
DNS Domain Name System
DoS Denial of Service
EDGE Enhanced Data Rate for GSM Evolution
ENUM Electronic Number Mapping
GGSN Gateway GPRS Support Node
GPRS Global System for Mobil communications
GUI Graphical User Interface
HSDPA High Speed Downlink Packet Access
HSS Home Subscriber Server
HTTP Hipertext Transfer Protocol
I-CSCF Interrogating Call Session Control Function
IDE Integrated Development Environment
IETF Internet Engineering Task Force
iFC Initial Filter Criteria
IMPS Instant Messaging and Presence Service
IMS IP Multimedia Subsystem
IMSI International Mobile Subscriber Identity
IN Intelligent Network
INAP Intelligent Network Application Part
IP Internet Protocol
ISDN Integrated Services Digital Network
ISUP ISDN User Part
84
LTE Long Term Evolution
MCC Mobile Country Code
MIME Multimedia Internet Message Extensions
MNC Mobile Network Code
MPLS MultiProtocol Label Switching
MRF Multimedia Resource Function
MRFC Multimedia Resource Function Controller
MRFP Multimedia Resource Function Processor
OMA Open Mobile Alliance
OSA Open Service Access
OSS Operational Support System
P2P Peer-to-Peer
P-CSCF Proxy Call Session Control Function
PSTN Public Switched Telephone Network
QoS Quality of Service
RADIUS Remote Authentication Dial-In User Service
RFC Request For Comments
RTP Real Time Protocol
SCE Service Creation Environment
SCIM Service Capability Interaction Manager
SDP Session Description Protocol
SDP Service Delivery Platform
SIM Subscriber Identity Module
SIMPLE SIP for Instant Messaging and Presence Leverage Extensions
SIP Session Initiation Protocol
SMPP Short Message Peer-to-Peer Protocol
SMS Short Message Service
SMSC Short Message Service Center
SOA Service Oriented Architecture
SOAP Simple Object Access Protocol
SPT Service Point Trigger
SQL Structured Query Language
SRF Special Resource Function
SSF Service Switching Function
SSP Service Switching Point
TCP Transfer Control Protocol
TLS Transport Layer Security
TP Trigger Point
UA User Agent
UAC User Agent Client
UAS User Agent Server
UDP User Datagram Protocol
UE User Entity
UML Unified Modeling Language
UMTS Universal Mobile Telecommunications System
URI Uniform Resource Identifier
UTRAN UMTS Terrestrial Radio Access Network
VoIP Voicer over IP
WAP Wireless Application Protocol
85
WLAN Wireless Local Area Network
WSDL Web Services Description Language
XCAP XML Configuration Access Protocol
xDSL Digital Subscriber Line
XML eXtensible Markup Language
86
Anexos
En este apartado se incluyen los anexos respectivos a los cuales se hace referencia en la
descripción del trabajo.
87
<IMSSubscription>
<PrivateID>alice@playsip.lab</PrivateID>
<ServiceProfile>
<PublicIdentity>
<Identity>sip:alice@playsip.lab</Identity>
<Extension>
<IdentityType>0</IdentityType>
</Extension>
</PublicIdentity>
<InitialFilterCriteria>
<Priority>0</Priority>
<TriggerPoint>
<ConditionTypeCNF>1</ConditionTypeCNF>
<SPT>
<ConditionNegated>0</ConditionNegated>
<Group>0</Group>
<Method>PUBLISH</Method>
<Extension></Extension>
</SPT>
<SPT>
<ConditionNegated>0</ConditionNegated>
<Group>0</Group>
<Method>SUBSCRIBE</Method>
<Extension></Extension>
</SPT>
<SPT>
<ConditionNegated>0</ConditionNegated>
<Group>1</Group>
<SIPHeader>
<Header>Event</Header>
<Content>.*presence.*</Content>
</SIPHeader>
<Extension></Extension>
</SPT>
</TriggerPoint>
<ApplicationServer>
<ServerName>sip:172.16.231.213:5065</ServerName>
<DefaultHandling>0</DefaultHandling>
</ApplicationServer>
</InitialFilterCriteria>
<InitialFilterCriteria>
<Priority>1</Priority>
<TriggerPoint>
<ConditionTypeCNF>1</ConditionTypeCNF>
<SPT>
<ConditionNegated>0</ConditionNegated>
<Group>0</Group>
<Method>INVITE</Method>
<Extension></Extension>
</SPT>
<SPT>
<ConditionNegated>0</ConditionNegated>
<Group>1</Group>
<SIPHeader>
<Header>To</Header>
<Content>.*iptv.playsip.lab.*</Content>
</SIPHeader>
<Extension></Extension>
88
</SPT>
</TriggerPoint>
<ApplicationServer>
<ServerName>sip:172.16.231.213:7070</ServerName>
<DefaultHandling>0</DefaultHandling>
</ApplicationServer>
</InitialFilterCriteria>
</ServiceProfile>
</IMSSubscription>
port=5060
loadmodule "sl.so"
loadmodule "tm.so"
loadmodule "rr.so"
loadmodule "maxfwd.so"
loadmodule "usrloc.so"
loadmodule "registrar.so"
loadmodule "textops.so"
89
loadmodule "mi_fifo.so"
# -- mi_fifo params --
# -- usrloc params --
modparam("usrloc", "db_url",
"mysql://openser:openserrw@ip_location/openser")
#modparam("usrloc", "db_mode", 0)
# -- auth params --
# Uncomment if you are using auth module
#
modparam("auth_db", "calculate_ha1", yes)
#
# If you set "calculate_ha1" parameter to yes (which true in this
config),
# uncomment also the following parameter)
#
modparam("auth_db", "password_column", "password")
modparam("auth_db", "db_url",
"mysql://openser:openserrw@ip_location/openser")
# --uri params --
modparam("uri_db", "db_url",
"mysql://openser:openserrw@ip_location/openser")
# -- rr params --
# add value to ;lr param to make some broken UAs happy
modparam("rr", "enable_full_lr", 1)
route{
90
exit;
};
if (!uri==myself) {
# mark routing logic in request
append_hf("P-hint: outbound\r\n");
# if you have some interdomain connections via TLS
#if(uri=~"@tls_domain1.net") {
# t_relay("tls:domain1.net");
# exit;
#} else if(uri=~"@tls_domain2.net") {
# t_relay("tls:domain2.net");
# exit;
#}
route(1);
};
if (method=="ACK") {
route(1);
exit;
} if (method=="INVITE") {
route(3);
exit;
} if (method=="REGISTER") {
route(2);
exit;
};
lookup("aliases");
if (!uri==myself) {
append_hf("P-hint: outbound alias\r\n");
route(1);
};
91
append_hf("P-hint: usrloc applied\r\n");
};
route(1);
}
route[1] {
# send it out now; use stateful forwarding as it works reliably
# even for UDP2TCP
if (!t_relay()) {
sl_reply_error();
};
exit;
}
route[3] {
# --------------------------------------------------------------
# INVITE Message Handler
# --------------------------------------------------------------
if (!proxy_authorize("dominio.com","subscriber")) {
proxy_challenge("dominio.com","0");
exit;
} else if (!check_from()) {
sl_send_reply("403", "Use From=ID");
exit;
};
consume_credentials();
lookup("aliases");
if (uri!=myself) {
route(1);
exit;
};
if (!lookup("location")) {
sl_send_reply("404", "User Not Found");
exit;
};
route(1);
}
92
Tabla 41: Configuración Básica Gateway SMS Kannel
#---------------------------------------------
# CORE
#
# There is only one core group and it sets all basic settings
# of the bearerbox (and system). You should take extra notes on
# configuration variables like 'store-file' (or 'store-dir'),
# 'admin-allow-ip' and 'access.log'
group = core
admin-port = 13000
smsbox-port = 13001
admin-password = bar
#status-password = foo
admin-deny-ip = "*.*.*.*"
admin-allow-ip = "ip_1;ip_2;ip_3"
log-file = "/home/user/kannel/kannel.log"
log-level = 0
box-deny-ip = "*.*.*.*"
box-allow-ip = "ip_1;ip_2;ip_3"
#unified-prefix = "+358,00358,0;+,00"
access-log = "/home/user/kannel/access.log"
store-file = "/home/user/kannel/kannel.store"
#ssl-server-cert-file = "cert.pem"
#ssl-server-key-file = "key.pem"
#ssl-certkey-file = "mycertandprivkeyfile.pem"
dlr-storage = mysql
#---------------------------------------------
# SMSC CONNECTIONS
#
# SMSC connections are created in bearerbox and they handle SMSC specific
# protocol and message relying. You need these to actually receive and
send
# messages to handset, but can use GSM modems as virtual SMSCs
# This is a fake smsc connection, _only_ used to test the system and
services.
# It really cannot relay messages to actual handsets!
#group = smsc
#smsc = fake
#smsc-id = FAKE
#port = 10000
#connect-allow-ip = *.*.*.*
group = smsc
smsc = smpp
host = ip_smsc
port = puerto_smsc
receive-port = puerto_recepcion_smsc
smsc-username = "user"
smsc-password = "pass"
system-type = "system_type"
address-range = ""
#---------------------------------------------
# SMSBOX SETUP
#
93
# Smsbox(es) do higher-level SMS handling after they have been received
from
# SMS centers by bearerbox, or before they are given to bearerbox for
delivery
group = smsbox
bearerbox-host = 127.0.0.1
sendsms-port = 13013
global-sender = 12341234
#sendsms-chars = "0123456789 +-"
log-file = "/home/user/kannel/smsbox.log"
log-level = 0
access-log = "/home/user/kannel/access.log"
#---------------------------------------------
# SEND-SMS USERS
#
# These users are used when Kannel smsbox sendsms interface is used to
# send PUSH sms messages, i.e. calling URL like
# http://kannel.machine:13013/cgi-
bin/sendsms?username=tester&password=foobar...
group = sendsms-user
username = tester
password = foobar
#user-deny-ip = ""
#user-allow-ip = ""
#---------------------------------------------
# SERVICES
#
# These are 'responses' to sms PULL messages, i.e. messages arriving from
# handsets. The response is based on message content. Only one sms-
service is
# applied, using the first one to match.
group = sms-service
keyword = nop
text = "You asked nothing and I did it!"
group = sms-service
keyword = default
text = "No service specified"
#---------------------------------------------
# MySQL DLR
#
group = mysql-connection
id = mydlr
host = ip_host
username = kannel
password = kannel
database = dlr
max-connections = 1
94
group = dlr-db
id = mydlr
table = dlr
field-smsc = smsc
field-timestamp = ts
field-destination = destination
field-source = source
field-service = service
field-url = url
field-mask = mask
field-status = status
field-boxc-id = boxc
<?php
// Conexion, seleccion de base de datos
include ("../../Info/openser.php");
include ("../../Info/kannel.php");
$enlace = mysql_connect('172.16.231.213:3306', $db_user, $db_passwd) or
die('No pudo conectarse : ' . mysql_error());
echo "Conexión exitosa.\n";
mysql_select_db('openser') or die('No pudo seleccionarse la BD.');
// Cerrar la conexion
mysql_close($enlace);
?>
<!--Enviar SMS-->
95
<FORM ACTION="http://172.16.231.213:24133/cgi-bin/sendsms" METHOD=GET>
<?php
echo "<INPUT TYPE=\"hidden\" NAME=\"username\" VALUE=\"".$sms_user."\">
<INPUT TYPE=\"hidden\" NAME=\"password\" VALUE=\"".$sms_passwd."\">\n";
?>
Número:
<INPUT TYPE="text" NAME="to">
<?php
echo "<INPUT TYPE=\"hidden\" NAME=\"text\"
VALUE=\"".strstr($valor_col,"<status>")."\">\n";
?>
<INPUT TYPE="submit" VALUE="Enviar SMS">
</FORM>
</body>
</html>
96