6/07/2014

El protocolo SIP

Shop all computers at the Microsoft Store! Click Here

El protocolo de Inicialización de Sección (SIP)  es un protocolo desarrollado por el grupo de trabajo MMUSIC del IETF con la intención de ser el estándar para la iniciación, modificación y finalización de sesiones interactivas de usuario donde intervienen elementos multimedia como el vídeo, voz, mensajería instantánea, juegos en línea y realidad virtual.

El protocolo SIP trata cada extremo de una conexión como un par (un peer) y se encarga de negociar las capacidades entre ambos extremo. Lo que hace a SIP atractivo es que es un protocolo relativamente simple, con una sintaxis similar a la de otros protocolos conocidos, como HTTP y SMTP. SIP es soportado en Asterisk a través del módulo chan_sip.so.


Historia


El 22 de febrero de 1996, Mark Handley y Eve Schooler presentaron al IETF un borrador del Protocolo de Invitación de Sección conocido ahora como SIPv1. El mismo estaba basado en trabajos anteriores de Thierry Turletti (INRIA Video conferencing System o IVS) y de Eve Schooler (Multimedia Conference Control o MMCC). Su principal fortaleza, heredada por la versión actual de SIP, era el concepto de registro, por el cual un usuario informaba a la red dónde (en qué host de Internet) podía recibir invitaciones a conferencias. Esta característica permitía la movilidad del usuario.

Ese mismo día 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. Como identificadores de los usuarios utilizaba direcciones de correo electrónico para permitir el uso de una misma dirección para recibir correos electrónicos e invitaciones a conferencias multimedia. No utilizaba al SDP para la descripción de los contenidos sino que creaba un mecanismo propio.

El IETF decidió combinar ambos en un único protocolo denominado Session Initiation Protocol, (es decir cambiando el significado de la inicial I en el acrónimo "SIP") y su número de versión fue la 2, dando origen al SIPv2. En diciembre de 1996 los tres autores (Schulzrinne, Handley y Schooler), presentaron el borrador del SIPv2. El mismo luego de ser discutido en el grupo de trabajo MMUSIC (Multiparty Multimedia Session Control) del IETF alcanzó el grado de "estándar propuesto" en la RFC 2543 publicada en febrero de 1999.

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.

SIP es un protocolo de señalización de capa de aplicación que usa el puerto bien conocido 5060 para comunicación. SIP puede ser transportado con los protocolos de capa de transporte ya sea UDP o TCP.
SIP no transporta datos entre dispositivos finales.  Al contrario es un protocolo de transporte en tiempo real (RTP) y es usado para este propósito. RTP utiliza una numeración de puertos altos, o puertos no privilegiados en Asterisk (10.000 – 20.000, por defecto).

SIP no fue el primer protocolo, y no es el único usado hoy día (existen otros como: H.323, MGCP, IAX, entre otros). La ventaja del protocolo SIP es que es ampliamente aceptado  y su flexibilidad arquitectónica.   

SIP y NAT


Probablemente el mayor obstáculo técnico de SIP es que tiene que conquistar el reto de llevar a cabo transacciones eficientemente a través de NAT. Porque SIP encapsulas la información de direccionamiento en frames de datos (o tramas), y NAT se lleva a cabo en la capa de red, la información de direccionamiento no es modificada automáticamente, y por lo tanto los flujos de datos de comunicación no tendrán la información de direccionamiento correcta necesaria para completar la conexión cuando existe un dispositivo NAT de por medio. Adicional a esto, los firewalls normalmente integrado con NAT no consideran los media stream entrantes como parte de una transacción SIP, y bloquean la conexión. Los nuevos firewalls y los controladores de sección fronteriza (SBCs) son conscientes de SIP pero todavía esto es considerado como una limitantes en este protocolo.

Seguridad en SIP


SIP usa un  sistema de demanda/repuesta para autenticar los usuarios. Un INVITE inicial es enviado al proxy con el cual el dispositivo desea comunicarse. El proxy entonces responde  con un mensaje de solicitud de autorización (407), el cual contiene un conjunto aleatorios de caracteres que es referido como un nonce. Este nonce se utiliza junto con la contraseña para generar un hash MD5, que es enviada de vuelta en el INVITE posterior. Asumiendo que el hash MD5 coincida con el que el proxy ha generado, el cliente es entonces autenticado.

Los Ataque de denegación de servicios (DoS) son probablemente los tipos de ataques más comunes en las comunicaciones VoIP.  Un ataque DoS puede ocurrir  cuando un gran volumen de solicitud de INVITE invalido son enviados para un servidor proxy en un intento de saturar el sistema. Esto ataques son relativamente simple para implementar, y sus efectos sobres los usuarios del sistema son inmediatos. SIP cuentas con varios métodos de minimizar los efectos de los ataques DoS, pero últimamente son imposibles de prevenir. SIP implementa un sistema para garantizar la seguridad,  un mecanismo de transporte encriptado (llamado Transport Layer Security o TLS) es usado para establecer la comunicación entre la persona que llama y el dominio del destinatario. Más allá de eso, la solicitud es enviada de forma segura para el dispositivo final, basado sobre la política de seguridad local de la red.  Leer más