Universidad Nacional Autónoma de México
Dirección General de Servicios de Cómputo Académico
Departamento de Telecomunicaciones
Proyectos Especiales e Innovación Tecnológica
Grupo de Trabajo de Voz sobre IP
Curso:
Introducción al Protocolo SIP y OpenSER
giovanni@[Link]
¿Protocolos de procesamiento de llamadas?
1. ¿Porqué y para qué?
2. ¿Qué utilidad tienen?
3. ¿Cuáles son los más utilizados?
SIP
SIP (Session Initiation Protocol version 2):
Desarrollado por la IETF (RFC3261[1]); Reemplaza
a la versión anterior (RFC2543). Esta orientado a
la integración con aplicaciones y servicios de
Internet.
[1] [Link]
SIP
SIP
Las funciones principales del protocolo SIP son:
•Establecer, modificar y finalizar las sesiones entre dos o
mas participantes.
•Registro y localización de participantes (Movilidad).
•Gestión del conjunto de participantes y de los
componentes del sistema.
•Describir las características de las sesiones y negociar las
capacidades de los participantes.
SIP
Algunas de sus características son:
•Basado en Texto
•Similar a HTTP.
•Uso de URIs (con esquemas sip, sips y tel).
•Métodos básicos: INVITE, ACK, BYE, CANCEL, REGISTER,
OPTIONS.
•Los mensajes se agrupan en transacciones y llamadas.
•Generalmente, el cuerpo de los mensajes contiene
descripciones de sesiones multimedia (SDP).
•Códigos de respuesta similares a los de HTTP. (Ejemplo:
200 – OK)
•Localización basada en DNS.
SIP
SIP se ayuda de otros protocolos (SDP y
RTP/RTCP).
RTP/RTCP transporta los datos multimedia en
tiempo real mientras que SDP describe y codifica
las características y capacidades de los
participantes en la sesión.
SIP
Protocolo orientado a conexiones End-to-End
Toda la lógica se encuentra almacenada en los
dispositivos finales (salvo el ruteo de mensajes
SIP).
Ventaja: escalabilidad que se obtiene pues los
servers no son saturados con mensajes SIP.
Desventaja: los encabezados son mucho
mayores.
SIP
El URI (Uniform Resource Locator) de SIP es
de la forma sip:usuario@dominio, por
ejemplo:
sip:pumas@[Link]
SIP
Elementos de Red del protocolo SIP
UA – Agente de Usuario conformado por UAS (User Agent
Server) y UAC (User Agent Client). Entidades finales que
usan SIP para contactarse uno con otro y definir las
características de la sesión.
UAC: Genera peticiones y recibe respuestas a esas
peticiones.
UAS: Recibe peticiones y genera respuestas.
SIP
Elementos de Red del protocolo SIP (User Agent)
SIP
Elementos de Red del protocolo SIP
SIP Proxy Server – Realiza una petición a nombre de
un UA hacia otro Proxy u otro UA. Encamina las
peticiones SIP hasta el UA llamado.
•Stateful Proxy – Crea un estado de petición y lo
mantiene hasta que la transacción finalice
(Retransmisiones & fork).
•Stateless Proxy – Sólo reenvía los mensajes SIP.
SIP
Elementos de Red del protocolo SIP (Proxies)
SIP
Elementos de Red del protocolo SIP
Registrar Server – Autentica y valida la cuenta
contra una base de datos interna o externa y
“registra” la localización actual del usuario. La
mayoría de las veces se localiza junto con el Proxy
SIP Server.
SIP
Elementos de Red del protocolo SIP (Registrar)
SIP
Elementos de Red del protocolo SIP
Redirect Server – Entidad que escucha peticiones y
regresa (no reenvía mensajes) respuestas que contienen
la localización actual de un usuario en particular. Mensajes
SIP de clase 3XX.
El usuario o Proxy que realizó la petición original extrae la
información de la respuesta y envía otra petición
redirigida al resultado de la búsqueda.
SIP
Elementos de Red del protocolo SIP (Redirect)
SIP
Mensajes SIP
Línea inicial – Versión del protocolo, método y direcciones
involucradas en la sesión (peticiones), estado de la sesión (respuestas).
Encabezado – Información relacionada con la llamada (texto plano);
por ejemplo: origen y destino de la petición, identificador de la
llamada, etc.
Cuerpo del mensaje – Carga útil (payload) lleva información (SDP ó
ISUP en caso de una troncal hacia la PSTN.
SIP
Dos tipos básicos de mensajes SIP, peticiones y
respuestas.
Peticiones – Inician alguna acción o piden
información.
Respuestas – Confirman que una petición fue
recibida y procesada, y contienen el estado del
procesamiento.
SIP
Ejemplo de petición SIP
SIP
SIP
SIP
SIP
SIP
SIP
SIP
SIP
SIP
Otros mensajes de peticiones SIP:
•ACK – Se usa para pedir la confirmación de que el
extremo llamado recibió el INVITE. (3 Way
Handshake)
•BYE – Para finalizar una sesión.
•CANCEL – Para cancelar una sesión que no se ha
completado del todo.
•REGISTER – Para que el Proxy conozca la
localización actual del emisor del mensaje.
No contienen cuerpo de mensaje.
SIP
Ejemplo de Respuesta SIP
SIP
Similares a los de peticiones, excepto por la
primera línea, la cual contiene la versión del
protocolo y el código de la respuesta (200 =
Ok) y una frase que explica, en términos
mas humanos, la razón de la respuesta.
Códigos entre 100 y 699. El primer dígito
indica la clase de respuesta.
SIP
SIP
•1XX – Respuestas provisionales ( 180 = ringing ó 100 = trying).
•2XX – Son respuesta finales positivas. Petición recibida y procesada
exitosamente, (200 = Ok).
•3XX – Redirección de llamadas. Información sobre la nueva
localización de un usuario ó un sobre un Proxy alterno que pueda
resolver satisfactoriamente la petición.
•4XX – Respuestas finales negativas. Falla del lado del emisor, mala
sintaxis del mensaje, etc.
•5XX – Falla del lado del servidor. Aparentemente la petición es válida
pero el Proxy es incapaz de procesarla. El emisor debe reintentar
después.
•6XX – Fallo general. Ningún Proxy puede atender la petición.
SIP
Transacciones SIP
Una transacción SIP es una secuencia de mensajes
entre dos elementos de Red. Corresponde a una
petición y todas sus respuestas. Una transacción
incluirá cero o mas respuestas provisionales y una
o mas respuestas finales (INVITE puede ser
dividido por un Proxy, por lo tanto tendrá múltiples
respuesta finales.
SIP
SIP
Diálogos SIP
Es una conversación peer-to-peer entre dos UA
(Agentes de Usuario). Los diálogos son
identificados usando los campos Call-ID (Id. de
llamada), From (De) y To (Para). Los mensajes
con estos campos iguales pertenecerán al mismo
diálogo. Un diálogo es una secuencia de
transacciones.
SIP
SIP
Routing
SIP
Escenario de registro SIP
Para que un usuario pueda ser llamado por otro,
este debe registrarse primero ante el Proxy. El
registro consiste en el envío de un mensaje
REGISTER seguido de su correspondiente
respuesta 200 Ok. Si el usuario no da credenciales
válidas recibirá por respuesta un mensaje 407, con
lo cual tendrá que reenviar el mensaje de Registro
hasta que tenga éxito.
SIP
Registro
SIP
Escenario de Invitación a sesión SIP
Inicia con el mensaje INVITE dirigido comúnmente al
Proxy. Éste responde con un TRYING (100) para
detener las retransmisiones y reenvía las peticiones
hacia el usuario llamado. Todas las respuestas
provisionales generadas por el usuario llamado son
regresadas al usuario origen, por ejemplo RINGING
(180). Una respuesta 200 (Ok) es generada en cuanto
el usuario llamado descuelga el auricular.
SIP
Invitación a Sesión
SIP
Escenario Terminación de Sesión SIP
Una sesión finaliza cuando uno de los usuarios
envía el mensaje BYE al otro extremo. El otro
usuario confirma el final de la conversación
enviando por respuesta un mensaje 200 (Ok). La
transacción para terminar la sesión se realizará de
un extremo a otro sin pasar por el Proxy (sólo si
no existe un proceso de Registro de ruta.
SIP
Registro de Ruta
Hay situaciones en las que el Proxy requiere estar
presente en la ruta de todos los mensajes con
fines de control del tráfico, o por ejemplo, cuando
existe un NAT. Esto se logra por medio de la
inserción del campo RECORD ROUTE en los
encabezados de los mensajes SIP.
SIP
Record Routing
SIP/SDP
SDP – Session Description Protocol
Diseñado para transportar información de la sesión/medios
hacia los destinatarios.
Permite asociar más de un flujo de medios a una misma
sesión (Audio y Video).
Descripción y negociación de los parámetros de sesión.
Mensajes SDP codificados como texto plano (ISO 10646
UTF-8).Nombres de campo y atributos usan US-ASCII
pero lo demás es ISO 10646. Se eligió formato texto plano
para aumentar la “portabilidad” hacia sistemas basados en
Web.
SIP/SDP
SIP/SDP
1. Versión del Protocolo (v=0),
2. Propietario/Creador de la sesión e Identificador de la misma
<usuario> <Id. Sesión> <Versión> <Tipo de Red> <Tipo Dirección> <Dir. IP>.
3. Nombre de la Sesión
4. Información de la Sesión (i = info), URI (u = [Link]),
email (e = email@[Link]), teléfono (p = número telefónico).
5. Información de la conexión (c = <Tipo de Red> <Tipo Dirección> <Dir. IP>).
6. Ancho de Banda propuesto (b = BW en kbps).
7. Tiempo de sesión Activa (t = <inicio> <paro>).
8. Llave de cifrado (k = <método> k = <método>:<llave de encriptado>)
9. Definición de Medios y atributos
10. Atributos sugeridos
SIP/SDP
v=0
o= ‐ 8 2 IN IP4 [Link]
s=CounterPath X‐Lite 3.0
c=IN IP4 [Link]
t=0 0
m=audio 9076 RTP/AVP 107 119 100 106 0 105 9
a=alt:1 3 : umQbFZnU vQmtoQmN [Link]
9076
a=alt:2 2 : rWQPKjhjkbZZNvx0 [Link] 9076
a=alt:3 1 : TGSOKOpCM9pDMrs8 [Link] 9076
a=fmtp:101 0‐15
a=rtpmap:107 BV32/16000
a=rtpmap:119 BV32‐FEC/16000
a=rtpmap:10 0 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
SIP/RTP/RTCP
RFC 1889. Transporte y monitoreo de Flujos en Tiempo
Real (Real Time Media Streaming).
Sus funciones son:
• Identificación del tipo de carga útil transportada (Codecs
de Audio/Video)
• Verificar la entrega de los paquetes en orden (Marca de
tiempo) y si resulta necesario reordenar los bloques
fuera de orden.
• Transportación de información de sincronía para la
codificación y decodificación.
• Monitoreo de la entrega de información.
SIP
Curiosidades SIP
Como establecer una llamada desde un navegador
de Internet.
<html>
<head><title>Prueba SIP</title></head>
<body>
<a href="sip:20101@[Link]">20101</a>
</body>
</html>