SIP Servlet 1.x (JSR 116/289)

37
SIP Servlet 1.x (JSR 116/289) Javier Alexander Hurtado Ingeniero en Electrónica y Telecomunicaciones [email protected]

description

SIP Servlet 1.x (JSR 116/289). Javier Alexander Hurtado Ingeniero en Electrónica y Telecomunicaciones [email protected]. Servicios avanzados. Un Servidor SIP actúa como una plataforma para la creación de servicios - PowerPoint PPT Presentation

Transcript of SIP Servlet 1.x (JSR 116/289)

Page 1: SIP Servlet 1.x (JSR 116/289)

SIP Servlet 1.x (JSR 116/289)

Javier Alexander HurtadoIngeniero en Electrónica y [email protected]

Page 2: SIP Servlet 1.x (JSR 116/289)

Ing. Javier Alexander Hurtado

Servicios avanzados

• Un Servidor SIP actúa como una plataforma para la creación de servicios

• Extiende la funcionalidad básica de un Servidor Proxy SIP (nuevos servicios)

• El API SIP Servlet propone un modelo para la creación de nuevos servicios sobre SIP

• SIP Servlet 1.0 (JSR 116), SIP Servlet 1.1 (JSR 289)

• http://jcp.org/en/jsr/detail?id=116 y http://jcp.org/en/jsr/detail?id=289

Más información: JSR 116 – SIP Servlet

Page 3: SIP Servlet 1.x (JSR 116/289)

Ing. Javier Alexander Hurtado

Historia• Sip Servlet 1 (Marzo de 2003)• Expert Group

– 8x8, ”Dynamicsoft Inc.”, Ericsson Inc., IBM, Nokia Corporation, Siemens AG, Sun Microsystems Inc., Ubiquity Software Corporation

• SIP Servlet 1.1 (Marzo de 2006)• Expert Group

– 8x8, Apache Software Foundation, Appium Technologies AB, AT&T, BayPackets Inc., BEA Systems, Cingular Wireless, Cisco Systems, Ericsson AB, Fraunhofer-Gesellschaft Institute FIRST, Fujitsu Limited, IBM, JBoss Inc., Mailvision LTD, Netcentrex, Nexcom Systems, Oracle, Orange France SA, Sun Microsystems Inc., T-Mobile International AG & Co. KG, Telcordia Technologies Inc., Telecom Italia, Ubiquity Software Corporation, Voztelecom Sistemas S.L.

Page 4: SIP Servlet 1.x (JSR 116/289)

Ing. Javier Alexander Hurtado

Conceptos básicos

• Aplicaciones de Telefonía convencional son exigentes y complejas (tiempo/costo)

• SIP Servlet provee una especificación y un conjunto de interfaces neutral que soporta una plataforma abierta y consistente sobre la cual desarrollar y publicar servicios portables

• Extiende el modelo HTTP Servlet• Proxy Server estándar puede ser la base de

un Servidor de Aplicaciones SIP

Page 5: SIP Servlet 1.x (JSR 116/289)

Ing. Javier Alexander Hurtado

HTTP Servlet vs SIP Servlet

• Conceptos comúnes– Método service()– Archivos de publicación JAR– Descriptores de despliegue

• Diferencias– Concepto de proxy que puede iniciar

nuevas solicitudes– Asíncrono– Soporta composición

Page 6: SIP Servlet 1.x (JSR 116/289)

Ing. Javier Alexander Hurtado

Servidor de Aplicaciones SIP

• Implementa un Container SIP soporte para SIP Servlets

• Carga e inicializa al Servlet e invoca los métodos apropiados cuando un mensaje SIP llega

• Cuando se detiene, destruye todos los SIP Servlets

• Ejecuta algunas de las funciones de un contenedor HTTP Servlet

Fuente: NIST

Page 7: SIP Servlet 1.x (JSR 116/289)

Ing. Javier Alexander Hurtado

Componentes SIP Servlet

• Servlet Container– Entorno de ejecución de los Servlets

• Servlets– Clase con un método service() compilada

en un Servlet Archive File (SAR)• Deployment Descriptor

– Archivo XML con información de configuración y reglas de mapeo de mensajes

Page 8: SIP Servlet 1.x (JSR 116/289)

Ing. Javier Alexander Hurtado

Modelo básico SIP Servlet

S ervlet E ngine

S IP S erverreques ts

responses

reques ts

respons es

s e rvle ts e rvle t

• Localización del SIP Server y el Servlet engine:– En la misma Java Virtual Machine– Diferentes procesos, el mismo host– Diferentes hosts: 1:1, 1:n, n:1, n:m

Page 9: SIP Servlet 1.x (JSR 116/289)

Ing. Javier Alexander Hurtado

Enrutamiento de Servicios

• Servlet enruta el request a uno o más destinos

• Re-envía la respuesta al llamante

S erver

s e rvle tUA C UA S

S IP S IP

RTP

Page 10: SIP Servlet 1.x (JSR 116/289)

Ing. Javier Alexander Hurtado

Servlet como UAS

• Los Servlets pueden rechazar (filtrar) llamadas

• Pueden aceptar y configurar flujos multimedia

S erver

s e rvle t

UA C

S IP

RTP

Page 11: SIP Servlet 1.x (JSR 116/289)

Ing. Javier Alexander Hurtado

Los SIP Servlets

SipServlet

SipServletAdapter ServletConfig1

ServletsClases Java extendiendo a javax.servlet.sip.SipServlet e implementa los métodos apropiados. Se empaqueta en un archivo SAR con su Deployment Descriptor.

Page 12: SIP Servlet 1.x (JSR 116/289)

Ing. Javier Alexander Hurtado

Herramientas para el Servlet

ContactDatabaseSipFactory

SipServletContext

Abstracciones de ServidorServidor SIP, Servlet engine, información de localización

Page 13: SIP Servlet 1.x (JSR 116/289)

Ing. Javier Alexander Hurtado

Manejo de mensajes SIP

SipMessage

SipRequest SipResponse

SipTransaction1

Mensajes SIPClases para manipulación de mensajes

Page 14: SIP Servlet 1.x (JSR 116/289)

Ing. Javier Alexander Hurtado

Manejo de direcciones SIP

SipAddress

SipContact

SipURL1

DireccionamientoManipulación de direcciones SIP (SIP-URIs)

Page 15: SIP Servlet 1.x (JSR 116/289)

Ing. Javier Alexander Hurtado

Eventos / Métodos SIP• SipServlet recibe mensajes a través del método

service() que a su vez llama a doRequest() o doResponse() respectivamente y por último, estos invocan a uno de los siguiente métodos:

– doInvite() - doAck()- doOptions() - doBye()- doCancel() - diRegister()- doSubscribe() - doNotify()- doMessage() - doInfo()- doProvisionalResponse() Para respuestas SIP 1xx- doSucessResponse() Para respuestas SIP 2xx- doRedirectResponse() Para respuestas SIP 3xx- doErrorResponse() Para respuestas SIP 4xx, 5xx y 6xx

Page 16: SIP Servlet 1.x (JSR 116/289)

Ing. Javier Alexander Hurtado

Algunas clase del API

• ServletConfig: información de configuración• ServletContext: servlet container• SipServletMessage: aspectos comúnes• SipServletRequest: SIP request message• SipServletResponse: SIP response message• SipFactory: interface• SipAddress: cabeceras From y To• SipSession: sesión SIP (igual que RFC3261)• SipApplicationSession: como HttpSession• Proxy: operación de Proxy y control sobre él

Page 17: SIP Servlet 1.x (JSR 116/289)

Ing. Javier Alexander Hurtado

Estructura de directorios

Page 18: SIP Servlet 1.x (JSR 116/289)

Ing. Javier Alexander Hurtado

sip.xml – Deployment Descriptor

• El root element es sip-app• Solicitudes mapeadas hacia los servlets

sip basadas en un lenguaje de reglas• No tienen significado algunas etiquetas

como: jsp-file, taglib, welcome-file-list• El modelo de composición de SIP

servlet le permite a muchas aplicaciones ejecutarse a partir de un solo Request

Page 19: SIP Servlet 1.x (JSR 116/289)

Ing. Javier Alexander Hurtado

Elementos del Deployment Descriptor

• Parámetros inciales del ServletContext• Configuración de Sesión• Definiciones de Servlets• Mapeo de Servlets• Application lifecycle listener classes• Manejador de Errores• Definiciones y mapeo de Filtros• Seguridad

Page 20: SIP Servlet 1.x (JSR 116/289)

Ing. Javier Alexander Hurtado

DOCTYPE / DTD de sip.xml

• <!DOCTYPE sip-app PUBLIC "-//Java Community Process//DTD SIP Application 1.0//EN" "http://www.jcp.org/dtd/sip-app_1_0.dtd">

• <!ELEMENT sip-app (icon?, display-name?, description?, distributable?, context-param*, listener*, servlet*, servlet-mapping*, proxy-config?, session-config?, resource-env-ref*, resource-ref*, security-constraint*, login-config?, security-role*, env-entry*, ejb-ref*, ejb-local-ref*)>

Page 21: SIP Servlet 1.x (JSR 116/289)

Ing. Javier Alexander Hurtado

Ejemplo: sip.xml

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE sip-appPUBLIC "-//Java Community Process//DTD SIP Application 1.0//EN“

"http://www.jcp.org/dtd/sip-app_1_0.dtd"><sip-app> <display-name>A Simple SIP Application</display-name> <context-param> <param-name>vxml-server</param-name> <param-value>sip:[email protected]</param-value> </context-param><servlet> <servlet-name>WeatherService</servlet-name> <servlet-class>com.example.Weather</servlet-class> <init-param> <param-name>weather-server</param-name> <param-value>http://example.com/weather</param-value> </init-param></servlet>

Page 22: SIP Servlet 1.x (JSR 116/289)

Ing. Javier Alexander Hurtado

Ejemplo: sip.xml

<servlet-mapping> <servlet-name>WeatherService</servlet-name> <pattern> <and> <equal> <var>request.method</var> <value>INVITE</value> </equal> <equal> <var>request.to.uri.user</var> <value>weather</value> </equal> </and> </pattern></servlet-mapping><session-config> <session-timeout>15</session-timeout></session-config></sip-app>

Page 23: SIP Servlet 1.x (JSR 116/289)

Ing. Javier Alexander Hurtado

Patrones de mapeo• Elemento pattern: puede contener

– and (cond.), or (cond.), not (cond.), equal (var, value), contains (var, value), exists (var), subdomain-of (var, value)

<equal> <var>request.method</var> <value>INVITE</value></equal><contains> <var>request.to.uri.user</var> <value>javhur</value></contains>

Page 24: SIP Servlet 1.x (JSR 116/289)

Ing. Javier Alexander Hurtado

Lenguaje de reglas• Define los siguientes objetos:

– Request: la solicitud SIP punto de entrada a la regla.• method: el método SIP• uri: la request URI (puede ser SipURI o TelURI)• from: un objeto Address que representa la cabecera From• to: un objeto Address que representa la cabecera To

– URI• scheme: el esquema URI

– SipURI (hereda de URI)• scheme: puede ser “sip” o “sips”• user: la parte de usuario de la SipURI• host: la parte de host de la SipURI• port: número del puerto en formato decimal• tel: número telefónico si existe• param.name: un parámetro dentro del URI SIP

Page 25: SIP Servlet 1.x (JSR 116/289)

Ing. Javier Alexander Hurtado

Lenguaje de reglas

• Más objetos:– TelURI (hereda de URI)

• scheme: siempre será “tel”• tel: el nombre del suscriptor• param.name: un parámetro dentro de la URL

– Address• uri: una SipURI o un TelURI• display-name: la parte del display-name de las

cabeceras From o To

Page 26: SIP Servlet 1.x (JSR 116/289)

Ing. Javier Alexander Hurtado

Ejemplo (Variables)

• Un mensaje INVITE de ejemploINVITE sip:[email protected] SIP/2.0From: A. Bell <sip:[email protected]>;tag=3pccTo: T. Watson <sip:[email protected]>…

• Algunas variables

Page 27: SIP Servlet 1.x (JSR 116/289)

Ing. Javier Alexander Hurtado

Ejemplo (Variables)

Page 28: SIP Servlet 1.x (JSR 116/289)

Ing. Javier Alexander Hurtado

Ejemplo (reglas)<pattern> <and> <equal> <var>request.method</var> <value>INVITE</value> </equal> <not> <contains ignore-case="true"> <var>request.from.display-name</var> <value>bell</value> </contains> </not> <subdomain-of> <var>request.from.uri.host</var> <value>bell-tel.com</value> </subdomain-of> </and></pattern>

El resultado de la evaluación de esta regla es false

Analizar!

Regla1 = True

Regla2 = False

Regla3 = True

Page 29: SIP Servlet 1.x (JSR 116/289)

Ing. Javier Alexander Hurtado

Ejemplo 1 (source)• El Servlet espera por Mensajes INVITE, y

reenvía el INVITE al Agente de Usuario de destino

public class SampleServlet extends SipServlet { public void doInvite(SipServletRequest req)

throws ServletException, java.io.IOException {

try { req.send();} catch (IOException e) { throw new ServletException("Could not send

request", e); }

} }

Page 30: SIP Servlet 1.x (JSR 116/289)

Ing. Javier Alexander Hurtado

Ejemplo 1 (sip.xml)• Deployment Descriptor<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE sip-appPUBLIC "-//Java Community Process//DTD SIP Application 1.0//EN“

"http://www.jcp.org/dtd/sip-app_1_0.dtd"><sip-app> <display-name>A Simple SIP Application</display-name> <servlet> <servlet-name>HolaSip</servlet-name> <display-name>HolaSip</display-name> <description>HolaSip</description> <servlet-class>sat.HolaSip</servlet-class> </servlet> <servlet-mapping> <pattern> <and> <equal> <var>request.method</var> <value>INVITE</value> </equal>

Page 31: SIP Servlet 1.x (JSR 116/289)

Ing. Javier Alexander Hurtado

Ejemplo 1 (sip.xml)

• Deployment Descriptor<not> <contains ignore-case="true"> <var>request.from.display-name</var> <value>bell</value> </contains> </not> <subdomain-of> <var>request.from.uri.host</var> <value>bell-tel.com</value> </subdomain-of> </and> </pattern> </servlet-mapping></sip-app>

Page 32: SIP Servlet 1.x (JSR 116/289)

Ing. Javier Alexander Hurtado

Ejemplo 2• Comportamiento de Proxy• El Servlet actúa como un Proxy

– Modo Supervisado permite ver las respuestas– Modo RecordRoute permite ver ACK y BYE

public void doInvite(SipServletRequest req) throws ServletException, IOException {Proxy p = req.getProxy(true); p.setSupervised(true); p.setRecordRoute(true); System.out.println("Proxying request: " + req.getRequestURI());

p.proxyTo(req.getRequestURI());}

Page 33: SIP Servlet 1.x (JSR 116/289)

Ing. Javier Alexander Hurtado

Productos comerciales

• Ubiquity Software– Ubiquity SIP Application Server

(Runtime y Development Tools)

• MicroMethod Technologies– SIPMethod Application Server 1.0

Released – Marzo 2006

Page 34: SIP Servlet 1.x (JSR 116/289)

Ing. Javier Alexander Hurtado

Alternativas a SIP Servlet

• CPL:– Simple y seguro – usado para (no confiables)

usuarios finales• SIP CGI:

– Basedo en HTTP CGI y similar en alcance a SIP Servlets

• Parlay– Permite a servidores de aplicaciones externos a

un servidor SIP, controlar llamadas• JAIN:

– Definido bajo el Java Community Process

Page 35: SIP Servlet 1.x (JSR 116/289)

Ing. Javier Alexander Hurtado

Beneficios del modelo Servlet

• Poderoso:– Acceso completo a señalización SIP

• Performance:– No necesita crear nuevos procesos por cada Request– El mismo Servlet puede manejar muchos Requests

simultáneamente• Seguro: revisión de tipos; no usa punteros; manejo

de excepciones• Conveniencia:

– Alto nivel de abstracción– Integration suave con servidores: logging, seguridad,

base de datos de localización

Page 36: SIP Servlet 1.x (JSR 116/289)

Ing. Javier Alexander Hurtado

Beneficios del modelo Servlet

• El modelo del ciclo de vida de los Servlets permite– Mantener el estado, p.e. conexiones a bases de datos– Manajar Timers

• Acceso a un amplio rango de APIs, p.e.– JNDI para acceso a directorio– JDBC para acceso a bases de datos– JMF/FMJ para manejo de flujos multimedia, p.e. codecs y

RTP– El speech API– JavaMail– EJBs– HTTP Servlets

Page 37: SIP Servlet 1.x (JSR 116/289)

Ing. Javier Alexander Hurtado

¿Preguntas?

¡Gracias por su atención!¡Gracias por su atenció[email protected]@unicauca.edu.co