Haciendo una síntesis de lo visto en entradas anteriores, diremos que lo normal es que un servidor SIP adopte las siguientes entidades lógicas en un entorno VoIP:
- Servidores Proxy (Proxy Servers)
- Servidores Registradores (Registrar Servers)
- Servidores Redireccionadores (Redirect Servers)
En esta ocasión y para finalizar con esta saga de entradas sobre servidores SIP, trataremos de desmembrar como funciona y qué cometido tiene un servidor redireccionador o Redirect Server. Para ello, nos ayudaremos de un ejemplo que muestra la comunicación SIP entre dos UA a través de un servidor SIP de estas características.
Principios básicos de un servidor Redireccionador (Redirect Servers) en VoIP
- Únicamente responde a peticiones SIP, pero NO las retransmite.
- Responde con mensajes 3XX a las peticiones que recibe.
- Utilizan base de datos o servicios de localización para informar de las direcciones asociadas a las SIP URIs.
Ejemplo de comunicación SIP
Walter White desconoce dónde está registrado Jesse Pinkman, por ese motivo el servidor redireccionador deberá localizar e informar en la respuesta a la petición INVITE.
1. Walter White realiza una llamada la método INVITE para establecer una sesión entre él y Jesse Pinkman
INVITE sip:jesse.pinkman@wikiasterisk.org SIP/2.0
Via: SIP/2.0/UDP 100.101.102.103:5060;branch=z0hG5bKmp28a
Max-Forwards: 70
To: Jesse Pinkman <sip:jesse.pinkman@wikiasterisk.org>
From: Walter White <sip:walter.white@voipelia.com>;tag=53
Call-ID: 4827322-391-32934
CSeq: 1 INVITE
Subject: ¿Dónde estás exactamente?
Contact: <sip:walter.white@voipelia.com>
Content-Type: application/sdp
Content-Length: 159
<SDP OMITIDO>
2. El servidor redireccionador responde a la petición INVITE
SIP/2.0 302 Moved Temporarily
Via: SIP/2.0/UDP 100.101.102.103:5060;branch=z0hG5bKmp28a
To: Jesse Pinkman <sip:jesse.pinkman@wikiasterisk.org>;tag=163611
From: Walter White <sip:walter.white@voipelia.com>;tag=53
Call-ID: 4827322-391-32934
CSeq: 1 INVITE
Contact: sip:jesse.pinkman@200.201.202.203
Content-Length: 0
3. Walter White reconoce la respuesta con un mensaje ACK
ACK sip:walter.white@voipelia.com SIP/2.0
Via: SIP/2.0/UDP 100.101.102.103:5060;branch=z0hG5bKmp28a
Max-Forwards: 70
To: Jesse Pinkman <sip:jesse.pinkman@wikiasterisk.org>;tag=163611
From: Walter White <sip:walter.white@voipelia.com>;tag=53
Call-ID: 4827322-391-32934
CSeq: 1 ACK
Content-Length: 0
Algo interesante a recalcar, es que el mensaje ACK reúsa el branch de la petición INVITE. Por regla, un mensaje ACK a una respuesta NO 2xx es considerada como parte de la misma transacción del INVITE inicial. Ante respuestas 2xx, el ACK enviado es considerado como una nueva transacción y por tanto generará un branch único.
4. La respuesta 302 Moved Temporarily informaba al UA Walter White en su campo Contact, la localización de Jesse Pinkman, por tanto ya puede iniciar de nuevo una petición INVITE.
INVITE sip:jesse.pinkman@200.201.202.203 SIP/2.0
Via: SIP/2.0/UDP 100.101.102.103:5060;branch=zakmda68ndl1
Max-Forwards: 70
To: Jesse Pinkman <sip:jesse.pinkman@wikiasterisk.org>
From: Walter White <sip:walter.white@voipelia.com>;tag=2424
Call-ID: 48253499-391-327734
CSeq: 1 INVITE
Subject: Hola, ¿Como estas?
Contact: <sip:walter.white@voipelia.com>
Content-Type: application/sdp
Content-Length: 159
<SDP OMITIDO>
El flujo de mensajes SIP restantes hasta establecer la comunicación y comenzar con el intercambio de media, es exactamente igual al visto en el ejemplo con el servidor Proxy.