El protocolo SIP (Session Initiation Protocol o Protocolo de inicio de sesin) es un protocolo de sealizacin utilizado para el control de las sesiones de comunicacin, tales como llamadas de voz y video sobre protocolo de Internet (IP). El protocolo se puede utilizar para gestionar el control de llamadas entre emisor y receptor o conferencias multi usuario. El protocolo SIP tambin sirve para gestionar videoconferencias, distribucin de streaming multimedia, mensajera instantnea, informacin de presencia y transferencia de archivos. El protocolo SIP es un protocolo independiente de la capa de transporte, as se puede ejecutar sobre TCP, UDP, o SCTP. En el protocolo SIP cada transaccin consiste en una peticin de cliente que origina una respuesta del servidor SIP. SIP utiliza los campos de la cabecera, la codificacin de las normas y cdigos de estado de HTTP, proporcionando una lectura basada en formato texto. Uno de los objetivos de SIP es proporcionar un protocolo de establecimiento de llamada para comunicaciones basadas en IP. Aunque existen otros protocolos de VoIP (Voz sobre IP) como H.323, el protocolo SIP se distingue por no proceder de la industria de las telecomunicaciones. SIP ha sido estandarizado y se rige principalmente por el IETF, mientras que otros protocolos, tales como H.323, han sido tradicionalmente asociada con la Unin Internacional de Telecomunicaciones (UIT). Aplicaciones que ofrecen las comunicaciones sobre el protocolo SIP: El nmero de dispositivos que emplean el protocolo SIP sigue creciendo, existen Adaptadores Terminales SIP, SIP Gateways y servicios de "Trunk SIP", todos ellos proporcionan funcionalidades para reemplazar las lneas telefnicas actuales. Tambin elementos como el router wifi y la centralita telefnica tambin tienen versiones que funcionan sobre SIP y permiten acceder a soluciones VoIP. Adicionalmente existen servidores SIP y muchas compaas de telfono de VoIP permiten a los clientes utilizar sus propios dispositivos SIP, como telfonos IP (SIP) o Softphones. Tambin existen cmaras de video vigilancia SIP que permiten realizar llamadas para alertar que un evento ha ocurrido, por ejemplo, para notificarle que se ha detectado movimiento fuera de horas en un rea protegida. El protocolo SIP es juntamente con el H.323 uno de los protocolos de VoIP ms estandarizados.
Historia del protocolo SIP En febrero de 1996, Mark Handley y Eve Schooler presentaron al IETF un borrador del Session Invitation Protocol conocido ahora como SIPv1. Pensado principalmente para sistemas de videoconferencia. Su principal fortaleza, heredada por la versin actual de SIP, era el concepto de registro, por el cual un usuario informaba a la red dnde (en qu host de Internet) poda recibir invitaciones a conferencias. Esta caracterstica permita la movilidad del usuario. 1
Ese mismo da el Dr. Henning Schulzrinne present un borrador del Simple Conference Invitation Protocol (SCIP), que estaba basado en el HTTP (Hypertext Transport Protocol). Usaba TCP (Transmission Control Protocol) como protocolo de transporte.
El IETF decidi combinar ambos en un nico protocolo denominado Session Initiation Protocol, (es decir cambiando el significado de la inicial I en el acrnimo "SIP") y su nmero de versin fue el dos, dando origen al SIPv2. En diciembre de 1996 los tres autores (Schulzrinne, Handley y Schooler), presentaron el borrador del SIPv2. Publicado en febrero de1999. 1
En septiembre de 1999 se cre el grupo de trabajo SIP en el IETF que continu con el desarrollo del protocolo y en junio de 2002 se public la RFC 3261 que reemplaz a la anterior introduciendo modificaciones propuestas durante el trabajo del grupo SIP. Los autores de esta ltima RFC, hoy vigente son: Jonnathan Rosenberg, Henning Schulzrinne,Gonzalo Camarillo, Allan Johnston, Jon Peterson, Robert Sparks, Mark Handley y Eve Schooler.
El protocolo SIP adopta el modelo cliente-servidor y es transaccional. El cliente realiza peticiones (requests) que el servidor atiende y genera una o ms respuestas (dependiendo de la naturaleza, mtodo de la peticin). Por ejemplo para iniciar una sesin el cliente realiza una peticin con el mtodo INVITE en donde indica con qu usuario (o recurso) quiere establecer la sesin. El servidor responde ya sea rechazando o aceptado esa peticin en una serie de respuestas. Las respuestas llevan un cdigo de estado que brindan informacin acerca de si las peticiones fueron resueltas con xito o si se produjo un error. La peticin inicial y todas sus respuestas constituyen una transaccin. Los servidores, por defecto, utilizan el puerto 5060 en TCP (Transmission Control Protocol) y UDP (User Datagram Protocol) para recibir las peticiones de los clientes SIP. En caso de mandar la sealizacin encriptada, SIP usa el puerto 5061.
Funcionamiento del protocolo El protocolo SIP permite el establecimiento de sesiones multimedia entre dos o ms usuarios. Para hacerlo se vale del intercambio de mensajes entre las partes que quieren comunicarse. Agentes de Usuario Estos no son ms que los puntos extremos del protocolo, es decir son los que emiten y consumen los mensajes del protocolo SIP. Un videotelfono, un telfono, un cliente de software (softphone) y cualquier otro dispositivo similar es para el protocolo SIP un agente de usuario. Los agentes de usuario se comportan como clientes (UAC: User Agent Clients) y como servidores (UAS: User Agent Servers). Son UAC cuando realizan una peticin y son UAS cuando la reciben. Por esto los agentes de usuario deben implementar un UAC y un UAS.
Servidores de Registro o Registrar El protocolo SIP permite establecer la ubicacin fsica de un usuario determinado, esto es, en qu punto de la red est conectado. Para ello se vale del mecanismo de registro. Cada usuario tiene una direccin lgica que es invariable respecto de la ubicacin fsica del usuario. Una direccin lgica del protocolo SIP es de la forma usuario@dominio es decir tiene la misma forma que una direccin de correo electrnico. La direccin fsica (denominada "direccin de contacto") es dependiente del lugar en donde el usuario est conectado (de su direccin IP). Cuando un usuario inicializa su terminal (por ejemplo conectando su telfono o abriendo su software de telefona SIP) el agente de usuario SIP que reside en dicho terminal enva una peticin con el mtodo REGISTER a un Servidor de Registro, informando a qu direccin fsica debe asociarse la direccin lgica del usuario. El servidor de registro realiza entonces dicha asociacin (denominada binding). Servidores Proxy y de Redireccin Para encaminar un mensaje entre un agente de usuario cliente y un agente de usuario servidor normalmente se recurre a los servidores. Estos servidores pueden actuar de dos maneras:
1. Como Proxy, encaminando el mensaje hacia destino, 2. Como Redirector (Redirect) generando una respuesta que indica al originante la direccin del destino o de otro servidor que lo acerque al destino. La principal diferencia es que el servidor proxy queda formando parte del camino entre el UAC y el (o los) UAS, mientras que el servidor de redireccin una vez que indica al UAC cmo encaminar el mensaje ya no interviene ms. Un mismo servidor puede actuar como Redirector o como Proxy dependiendo de la situacin.
Servidor de Localizacin Un servidor de localizacin, simplemente da informacin acerca de donde puede estar el cliente al que se quiere llamar para as poder localizarlo.
Casos tpicos de servidores Un conjunto de usuarios que pertenecen a una compaa o proveedor de servicios de comunicaciones, conforman un dominio. Este dominio, que se indica en una direccin SIP despus del carcter "@" es normalmente atendido por un servidor (o ms de uno). Este servidor recibe las peticiones hacia sus usuarios. Este servidor ser el encargado de determinar la direccin fsica del usuario llamado. Es habitual tambin, que exista un servidor que reciba las peticiones originadas por los usuarios de un dominio hacia otros dominios.
Formato de los mensajes Los mensajes que se intercambian en el protocolo SIP pueden ser peticiones o respuestas. Las peticiones tienen una lnea de peticin, una serie de encabezados y un cuerpo. Las respuestas tienen una lnea de respuesta, una serie de encabezados y un cuerpo. En la lnea de peticin se indica el propsito de la peticin y el destinatario de la peticin. En la lnea de respuesta se indica el cdigo de estado de la respuesta, que es un nmero que indica el resultado del procesamiento de la peticin. Los encabezados de peticiones y respuestas se utilizan para diversas funciones del protocolo relacionadas con el encaminamiento de los mensajes, autenticacin de los usuarios, entre otras. El cuerpo de los mensajes es opcional y se utiliza entre otras cosas para transportar las descripciones de las sesiones que se quieren establecer.
Flujo de establecimiento de una sesin Un usuario ingresa la direccin lgica de la persona con la que quiere comunicarse, puede indicar al terminal tambin la caracterstica de la sesin que quiere establecer (voz, voz y video, etc.), o estas pueden estar implcitas por el tipo de terminal del que se trate. El agente de usuario SIP que reside en el terminal, actuando como UAC enva la peticin (en este caso con el mtodo INVITE) al servidor que tiene configurado. Este servidor se vale del sistema DNS para determinar la direccin del servidor SIP del dominio del destinatario. El dominio lo conoce pues es parte de la direccin lgica del destinatario. Una vez obtenida la direccin del servidor del dominio destino, encamina hacia all la peticin. El servidor del dominio destino establece que la peticin es para un usuario de su dominio y entonces se vale de la informacin de registro de dicho usuario para establecer su ubicacin fsica. Si la encuentra, entonces encamina la peticin hacia dicha direccin. El agente de usuario destino si se encuentra desocupado comenzar a alertar al usuario destino y enva una respuesta hacia el usuario origen con un cdigo de estado que indica esta situacin (180 en este caso). La respuesta sigue el camino inverso hacia el usuario origen. Cuando el usuario destino finalmente acepta la invitacin, se genera una respuesta con un cdigo de estado (el 200) que indica que la peticin fue aceptada. La recepcin de la respuesta final es confirmada por el UAC origen mediante una peticin con el mtodo ACK (de Acknowledgement), esta peticin no genera respuestas y completa la transaccin de establecimiento de la sesin. Si las descripciones fueran incompatibles, nota 3 la sesin debe terminarse (mediante una peticin con el mtodo BYE). Al terminar la sesin, que lo puede hacer cualquiera de las partes, el agente de usuario de la parte que termin la sesin, actuando como UAC, enva hacia la otra una peticin con el mtodo BYE.
Todas las entidades SIP son identificadas por medio de URI (Uniform Resource Identifier), los URI contienen la suficiente informacin para iniciar y para mantener una sesin de comunicacin con el recurso, utilizan una forma similar a la direccin de correo, permitiendo as ver las especificaciones del encabezado, haciendo posible especificar el destinario, el tipo de medio o la urgencia de la sesin usando URI.
Aspectos importantes referentes al protocolo sip se enumeran como sigue: El control de llamadas es stateless o sin estado, y proporciona escalabilidad entre los dispositivos telefnicos y los servidores. SIP necesita menos ciclos de CPU para generar mensajes de sealizacin de forma que un servidor podr manejar ms transacciones. Una llamada SIP es independiente de la existencia de una conexin en la capa de transporte. SIP soporta autentificacin de llamante y llamado mediante mecanismos HTTP. Autenticacin, criptogrfica y encriptacin son soportados salto a salto por SSL/TSL pero SIP puede usar cualquier capa de transporte o cualquier mecanismo de seguridad de HTTP, como SSH o S-HTTP. Un proxy SIP puede controlar la sealizacin de la llamada y puede bifurcar a cualquier nmero de dispositivos simultneamente.
Metodos de SIP Esta especificacin define seis mtodos bsicos:
REGISTER: el propsito es dejar un registro de acerca de la ubicacin del usuario actual, informacin tal como lo es direccin IP y el puerto por el cual ha realizado el registro de mensajes.
INVITE: Indica que un cliente est siendo invitado a participar en una llamada.
ACK: confirma la recepcin del mtodo INVITE el cual es el que indica que se encuentra listo para establecer una comunicacin.
BYE: este tipo de mensajes son utilizados para finalizar las sesiones multimedia, el UA que desee finalizar la conversacin enva un BYE.
CANCEL: se utiliza para cancelar una sesin que no se ha establecido en su totalidad, es decir cuando el destinatario no ha confirmado una respuesta definitiva.
OPTIONS: Consulta la informacin acerca de las capacidades de envo y recepcin de telfonos SIP.
Respuestas SIP Despus de haber recibido e interpretado un requerimiento SIP, el destinatario de este requerimiento devuelve una respuesta SIP. Existen seis clases de respuestas: 1. Clase 1xx : Informacin, el requerimiento ha sido recibido y est en curso de tratamiento 2. Clase 2xx: xito, el requerimiento ha sido recibido, entendido y aceptado. 3. Clase 3xx: Reenrutamiento, la llamada requiere otros procesamientos antes de poder determinar si puede ser realizada. 4. Clase 4xx: Error requerimiento cliente, el requerimiento no puede ser interpretado por el servidor. El requerimiento tiene que ser modificado antes de ser reenviado. 5. Clase 5xx: Error servidor, el servidor fracasa en el procesamiento de un requerimiento aparentemente valido. 6. Clase 6xx: Fracaso global, el requerimiento no puede ser procesado por ningn servidor.