Post on 26-Mar-2015
Introducción al protocolo SIP
Juan Salvador Escobar
CS Core
juan.salvador@mobilesrevices-group.com
Protocolo SIP
• SIP es un protocolo basado en requerimientos y respuestas tipo texto similar al protocolo HTTP en su diseño.
• SIP se encarga principalmente de la iniciación y terminación de sesiones incluyendo multiparty, multimedia o transferencia de archivos, adicionalmente también se usa para diferentes propósitos como mensajería instantánea y servicios de valor agregado.
• Los usuarios son identificados usando una estructura tipo email llamada SIP URL, como por ejemplo sip:591605865@sipnetwork.com
Protocolo SIP (cont.)
• Un mensaje SIP es bien una petición desde un cliente hacia un servidor o una respuesta desde un servidor hacia un cliente. Ambos mensajes están compuestos de una línea de inicio (Start Line), uno o mas encabezados (Headers) y un contenido opcional (Message Body).
SIP Message structure
Request/Response Line
Header Field
Empty Line
Message Body (opcional)
SIP Request
• Las peticiones en SIP tienen una línea de inicio Request que contiene un método, un Request-URI y una versión de protocolo.
SIP Request (cont)
Mensaje Función
INVITE Inicia un nuevo dialogo o sesión
ACK Respuesta a un mensaje INVITE
BYE Fin de sesión
CANCEL Cancela una petición no terminada
REGISTER Registrarse
OPTIONS Preguntar sobre los atributos del servidor
INFO Opciones interactivos para una llamada
MESSAGE Short Message
SUBSCRIBE Suscribirse a un evento
NOTIFY Envío de un evento
SIP Request (cont.)
• INVITEINVITE sip:bob@biloxi.com SIP/2.0
Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8
Max-Forwards: 70 To: Bob <sip:bob@biloxi.com>
From: Alice <sip:alice@atlanta.com>;tag=1928301774
Call-ID: a84b4c76e66710 CSeq: 314159
INVITE Contact: sip:alice@pc33.atlanta.com
Content-Type: application/sdp
Content-Length: 142
• REGISTERREGISTER sip:registrar.biloxi.com SIP/2.0
Via: SIP/2.0/UDP bobspc.biloxi.com:5060;branch=z9hG4bKnashds7
Max-Forwards: 70
To: Bob sip:bob@biloxi.com
From: Bob <sip:bob@biloxi.com>;tag=456248
Call-ID: 843817637684230@998sdasdh09
CSeq: 1826 REGISTER
Contact: sip:bob@192.0.2.4
Expires: 7200 Content-Length: 0
SIP Response
• Las respuestas SIP se diferencian de las peticiones por que tienen un Status-Line como línea de inicio. El Status-Line consiste de una versión de protocolo seguida por un Status-Code numérico y su respectiva frase de explicación Reason.
SIP Response (cont.)
• El primer digito de los mensajes define el tipo de respuesta, los dos dígitos siguientes no tienen labor de categorización especifica, únicamente complementan el tipo de respuesta.
Status Codes
1xx Respuesta provisional
2xx Respuesta Exitosa
3xx Redirección
4xx Error del cliente
5xx Error del Servidor
6xx Falla Global
SIP Response (cont.)
1xx Respuesta Temporal
100 Trying
180 Ringing
2xx Respuesta Exitosa
200 OK
202 Accepted
3xx Redireccion
301 Moved Permanently
302 Moved Temporarily
4xx Error del Cliente
480 Temporarily Unavailable
486 Busy Here
5xx Error del Servidor
500 Server Internal Error
503 Server Unavailable
6xx Falla Global
600 Busy Everywhere
606 Not Acceptable
SIP Response (cont)
• 100 TryingSIP/2.0 100 Trying
Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8
To: Bob sip:bob@biloxi.com
From: Alice <sip:alice@atlanta.com>;tag=1928301774
Call-ID: a84b4c76e66710
CSeq: 314159 INVITE Content-Length: 0
• 180 RingingSIP/2.0 180 Ringing
Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8
To: Bob <sip:bob@biloxi.com>;tag=a6c85cf
From: Alice <sip:alice@atlanta.com>;tag=1928301774
Call-ID: a84b4c76e66710
Contact: sip:bob@192.0.2.4
CSeq: 314159 INVITE Content-Length: 0
Flujo de llamada
• En este ejemplo se muestra un flujo de llamada resumido incluyendo únicamente los mensajes básicos.
Transacciones
• En general, una transacción incluye todos los mensajes asociados con una petición (SIP Request) y su fin con un mensaje 2xx. Cuando el mensaje ACK se refiere a una respuesta 2xx se considera como una transacción independiente.
Dialogo SIP
• Múltiples transacciones relacionan un dialogo. Un Dialogo implica una relación punto a punto entre dos usuarios. De acuerdo con los estándares, un dialogo únicamente puede ser establecido usando una petición INVITE.
SIP-T y SIP-I
• Debido a ciertas limitantes de interoperabilidad que presenta SIP al interactuar con la PSTN se desarrollan los protocolos SIP-T y SIP-I para proveer parámetros específicos de ISUP.
SIP-T SIP-I
• Definido por la RFC3372 de la IETF.• Es una extensión de SIP, por lo que contiene la misma flexibilidad.• Proporciona compatibilidad con telefonía tradicional lo que le hace adecuado para redes IP.• Permite a los mensajes SIP llevar información de señalización ISUP.• Solo se concentra en la interoperabilidad de llamadas básicas y no incluye servicios suplementarios.
• Definido por TRQ.2815 y Q.1912.5 de la ITU.• Contiene requerimientos técnicos de interoperabilidad entre 3GPPSIP y BICC/ISUP, SIP y BICC/ISUP y SIP-I y BICC/ISUP en detalle.• SIP-I hace uso de numerosos estándares y drafts del IETF que contienen no solo llamadas básicas sino también la interoperabilidad de los servicios suplementarios de BICC/SIP.
Relación entre SIP y ISUP
Mensaje ISUP Mensaje SIP
Initial address message (IAM)Subsecuent address message (SAM)Address complete message (ACM)Answer message (ANM)Connect message (CON)Call progress message(CPG) Release message (REL)Release complete message (RLC)Reset circuit (RSC) Circuit group reset message(GRS)Circuit group blocking message(CGB)Suspend message (SUS)Resume message (RES)
INVITEINVITE180 RINGING / 183 PROGRESS200 OK200 OK183 CALL PROGRESSBYE/CANCELN/A BYE/CANCEL (only for a call)BYE/CANCEL (only for a call)BYE/CANCEL (only for a call)Re-Invite or INFORe-Invite or INFO
• De acuerdo a los estándares mencionados anteriormente existe un mapeo de mensajes y parámetros entre SIP y ISUP.
Relación entre SIP y ISUP (cont)
Causa ISUP Causa SIP
1 unallocated number 2 no route to network 3 no route to destination 16 normal call clearing 17 user busy 18 no user responding 19 no answer from the user 20 subscriber absent 21 call rejected 22 number changed (w/o diagnostic)22 number changed (w/ diagnostic) 23 redirection to new destination 26 non-selected user clearing 27 destination out of order 28 address incomplete 29 facility rejected 31 normal unspecified
404 Not Found404 Not found404 Not foundBYE486 Busy here408 Request Timeout480 Temporarily unavailable480 Temporarily unavailable403 Forbidden410 Gone301 Moved Permanently410 Gone404 Not Found502 Bad Gateway484 Address incomplete501 Not implemented480 Temporarily unavailable
Relación entre SIP y ISUP (cont)
Mensaje recibido SIP Causa en el mensaje REL
400 Bad Request 401 Unauthorized 402 Payment required 403 Forbidden 404 Not found 405 Method not allowed 406 Not acceptable 407 Proxy authentication required408 Request timeout 410 Gone 413 Request Entity too long 414 Request-URI too long 415 Unsupported media type 416 Unsupported URI Scheme 420 Bad extension 421 Extension Required 423 Interval Too Brief
41 Temporary Failure 21 Call rejected 21 Call rejected 21 Call rejected 1 Unallocated number 63 Service or option unavailable 79 Service/option not implemented 21 Call rejected102 Recovery on timer expiry 22 Number changed (w/o diagnostic) 127 Interworking127 Interworking 79 Service/option not implemented127 Interworking127 Interworking127 Interworking127 Interworking
Call Flow MSS
Call Flow MSS
• INVITE sip :10.211.12.96:5072 SIP/2 .0Content-Length:760Via:SIP/2.0/UDP public.apollon.tas.com:5060;branch=z9hG4bK13Cg4CBA.eVZ3Xhb From:<sip:User.0@apollon.tas.com>;tag=3Va08dZg15fd1e7U To:<sip:User.1@apollon.tas.com>Call-ID: 681EE514642E6F6729E00549CSeq:1 INVITEContact:<sip:+491774190000@10.211.7.112:5060;user=phone> Require:preconditionSupported: 100rel,precondition, timerAllow:ACK,BYE, CANCEL, INVITE,MESSAGE,OPTIONS,PRACK,REGISTER,UPDATE Max-Forwards : 68Min-SE: 90Session-Expires:2000,refresher=uac Record-Route:<sip:AAZUB8gBCqUIAH+ArAGNzjAAG@10.211.7.112:5060;lr> Privacy: noneP-Asserted-Identity:tel:+491774190000,sip:User.0@apollon.tas.com Content-Type: application/sdpv=0o=- 0 1 IN IP4 10.211.7.158s=MSS callc=IN IP4 17.10.9.10 t=0 0m=audio 2500 RTP/AVP 8 96 97 98 99 100 101 102b=AS:64a=rtpmap:8 PCMA/8000 a=rtpmap:96 AMR/8000 a=fmtp:96 mode-set=0,2,3,6; mode-change-period=1a=rtpmap:97 AMR/8000a=fmtp:97 mode-set=0,3,6; mode-change-period=1a=rtpmap:98 AMR/8000a=fmtp:98 mode-set=3,6; mode-change-period=1a=rtpmap:99 AMR/8000a=fmtp:99 mode-set=3; mode-change-period=1a=rtpmap:100 AMR/8000a=fmtp:100 mode-set=0,2,3,6; mode-change-period=2a=rtpmap:101 AMR/8000a=fmtp:101 mode-set=0,3,6; mode-change-period=2a=rtpmap:102 AMR/8000a=fmtp:102 mode-set=3,6; mode-change-period=2a=curr:qos local none a=curr:qos remote none a=des:qos mandatory local sendrecva=des:qos none remote sendrecv
Call Flow MSS
• SIP/2.0 100 TryingContent-Length:0Via:SIP/2.0/UDP public.apollon.tas.com:5060;branch=z9hG4bK13Cg4CBA.eVZ3Xhb From:<sip:User.0@apollon.tas.com>;tag=3Va08dZg15fd1e7U To:<sip:User.1@apollon.tas.com>Call-ID: 681EE514642E6F6729E00549 CSeq:1 INVITE
• SIP/2.0 183 Session ProgressVia:SIP/2 . 0/UDP public.apollon.tas .com:5060;branch=z9hG4bK13Cg4CBA.eVZ3XhbFrom: <sip:User. 0@apollon.tas.com>;tag=3Va08dZg15fd1e7UTo: <sip:User. 1@apollon.tas .com>;tag=14383101f9Require: 100rel, precondition RSeq: 1Record-Route:<sip:AAZUB8gBCqUIAH+ArAGNzjAAG@10.211.7.112:5060;lr>Call-ID: 681EE514642E6F6729E00549 CSeq:1 INVITEContact: sip:10.211.12. 96:5072 Content-Type: application/sdp Content-Length: 280v=0o=- 111111 112222 IN IP4 172.24.175.10s=c=IN IP4 172.24.175.10 t=0 0m=audio 3456 RTP/AVP 8 a=rtpmap: 8 PCMA/8000 a=curr:qos local sendrecv a=curr:qos remote nonea=des:qos mandatory local sendrecva=des:qos mandatory remote sendrecva=conf:qos remote sendrecv
• PRACK sip:10.211.12 .96:5072 SIP/2.0Content-Length:0Via:SIP/2 . 0/UDP public.apollon.tas .com:5060;branch=z9hG4bKhCbaVe46UBc385aZ From:<sip:User.0@apollon.tas.com>;tag=3Va08dZg15fd1e7U To:<sip:User.1@apollon.tas.com>;tag=14383101f9Call-ID: 681EE514642E6F6729E00549CSeq:2 PRACKRAck:1 1 INVITEMax-Forwards :70
Call Flow MSS
• SIP/2.0 200 OKVia:SIP/2 . 0/UDP public.apollon.tas .com:5060;branch=z9hG4bKhCbaVe46UBc385aZ From: <sip:User. 0@apollon.tas.com>;tag=3Va08dZg15fd1e7UTo: <sip:User. 1@apollon.tas .com>;tag=14383101f9Call-ID: 681EE514642E6F6729E00549CSeq:2 PRACKContent-Length: 0
• UPDATE sip :10.211.12. 96:5072 SIP/2 .0 Content-Length :257Via:SIP/2.0/UDP public.apollon.tas.com:5060;branch=z9hG4bK2hUUhBUUiUUd3fD1 From:<sip:User.0@apollon.tas.com>;tag=3Va08dZg15fd1e7U To:<sip:User.1@apollon.tas.com>;tag=14383101f9Call-ID: 681EE514642E6F6729E00549CSeq:3 UPDATEContact:<sip:10.211.7. 112 :5060>Allow:ACK,BYE, CANCEL, INVITE,MESSAGE,OPTIONS,PRACK,REGISTER,UPDATE Max-Forwards :70Record-Route:<sip:AAZUB8gBCqUIAH+ArAGNzjAAG@10.211.7.112:5060;lr> Reason: X.int ;cause=0x000007FFContent-Type: application/sdpv=0o=- 0 2 IN IP4 10.211.7.158s=MSS callc=IN IP4 17.10.9.10t=0 0m=audio 2500 RTP/AVP 8b=AS:64a=rtpmap:8 PCMA/8000a=curr:qos local sendrecva=curr:qos remote sendrecva=des:qos mandatory local sendrecv a=des:qos mandatory remote sendrecv
Call Flow MSS
• SIP/2.0 200 OKVia:SIP/2.0/UDP public.apollon.tas.com:5060;branch=z9hG4bK2hUUhBUUiUUd3fD1 From: <sip:User. 0@apollon.tas .com>;tag=3Va08dZg15fd1e7UTo: <sip:User. 1@apollon.tas .com>;tag=14383101f9Call-ID: 681EE514642E6F6729E00549CSeq:3 UPDATEContent-Type: application/sdpContent-Length: 256v=0o=- 222222 112224 IN IP4 172.24.175.10s=c=IN IP4 172.24.175.10 t=0 0m=audio 3456 RTP/AVP 8 a=rtpmap: 8 PCMA/8000 a=curr:qos local sendrecv a=curr:qos remote sendrecva=des:qos mandatory local sendrecva=des:qos mandatory remote sendrecv
• SIP/2.0 180 RingingVia: SIP/2.0/UDP public.apollon.tas.com:5060;branch=z9hG4bK13Cg4CBA.eVZ3Xhb From: <sip:User. 0@apollon.tas .com>;tag=3Va08dZg15fd1e7UTo: <sip:User. 1@apollon.tas .com>;tag=14383101f9 Record-Route:<sip:AAZUB8gBCqUIAH+ArAGNzjAAG@10.211.7.112:5060;lr> Call-ID: 681EE514642E6F6729E00549CSeq: 1 INVITEContact: <sip:10.211.12 .96:5072> Require: 100rel, precondition RSeq: 2Content-Length: 0
• PRACK sip:10.211.12 .96:5072 SIP/2.0Content-Length:0Via:SIP/2.0/UDP public.apollon.tas.com:5060;branch=z9hG4bKdWdecbgYh19.cCc. From:<sip:User.0@apollon.tas.com>;tag=3Va08dZg15fd1e7U To:<sip:User.1@apollon.tas.com>;tag=14383101f9Call-ID: 681EE514642E6F6729E00549CSeq:4 PRACKRAck:2 1 INVITEMax-Forwards :70
Call Flow MSS
• SIP/2.0 200 OKVia:SIP/2 . 0/UDP public.apollon.tas .com:5060;branch=z9hG4bKhCbaVe46UBc385aZ From: <sip:User. 0@apollon.tas.com>;tag=3Va08dZg15fd1e7UTo: <sip:User. 1@apollon.tas .com>;tag=14383101f9Call-ID: 681EE514642E6F6729E00549CSeq:2 PRACKContent-Length: 0
F6UPDATE sip :10.211.12. 96:5072 SIP/2 .0 Content-Length :257Via:SIP/2.0/UDP public.apollon.tas.com:5060;branch=z9hG4bK2hUUhBUUiUUd3fD1 From:<sip:User.0@apollon.tas.com>;tag=3Va08dZg15fd1e7U To:<sip:User.1@apollon.tas.com>;tag=14383101f9Call-ID: 681EE514642E6F6729E00549CSeq:3 UPDATEContact:<sip:10.211.7. 112 :5060>Allow:ACK,BYE, CANCEL, INVITE,MESSAGE,OPTIONS,PRACK,REGISTER,UPDATE Max-Forwards :70Record-Route:<sip:AAZUB8gBCqUIAH+ArAGNzjAAG@10.211.7.112:5060;lr> Reason: X.int ;cause=0x000007FFContent-Type: application/sdpv=0o=- 0 2 IN IP4 10.211.7.158s=MSS callc=IN IP4 17.10.9.10t=0 0m=audio 2500 RTP/AVP 8b=AS:64a=rtpmap:8 PCMA/8000a=curr:qos local sendrecva=curr:qos remote sendrecva=des:qos mandatory local sendrecv a=des:qos mandatory remote sendrecv
Call Flow MSS
• SIP/2.0 200 OKVia:SIP/2.0/UDP public.apollon.tas.com:5060;branch=z9hG4bK2hUUhBUUiUUd3fD1 From: <sip:User. 0@apollon.tas .com>;tag=3Va08dZg15fd1e7UTo: <sip:User. 1@apollon.tas .com>;tag=14383101f9Call-ID: 681EE514642E6F6729E00549CSeq:3 UPDATEContent-Type: application/sdpContent-Length: 256v=0o=- 222222 112224 IN IP4 172.24.175.10s=c=IN IP4 172.24.175.10 t=0 0m=audio 3456 RTP/AVP 8 a=rtpmap: 8 PCMA/8000 a=curr:qos local sendrecv a=curr:qos remote sendrecva=des:qos mandatory local sendrecva=des:qos mandatory remote sendrecv
• SIP/2.0 180 RingingVia: SIP/2.0/UDP public.apollon.tas.com:5060;branch=z9hG4bK13Cg4CBA.eVZ3Xhb From: <sip:User. 0@apollon.tas .com>;tag=3Va08dZg15fd1e7UTo: <sip:User. 1@apollon.tas .com>;tag=14383101f9 Record-Route:<sip:AAZUB8gBCqUIAH+ArAGNzjAAG@10.211.7.112:5060;lr> Call-ID: 681EE514642E6F6729E00549CSeq: 1 INVITEContact: <sip:10.211.12 .96:5072> Require: 100rel, precondition RSeq: 2Content-L
• PRACK sip:10.211.12 .96:5072 SIP/2.0Content-Length:0Via:SIP/2.0/UDP public.apollon.tas.com:5060;branch=z9hG4bKdWdecbgYh19.cCc. From:<sip:User.0@apollon.tas.com>;tag=3Va08dZg15fd1e7U To:<sip:User.1@apollon.tas.com>;tag=14383101f9Call-ID: 681EE514642E6F6729E00549CSeq:4 PRACKRAck:2 1 INVITEMax-Forwards :70 ength: 0
Call Flow MSS
• SIP/2.0 200 OKVia:SIP/2.0/UDP public.apollon.tas.com:5060;branch=z9hG4bKdWdecbgYh19.cCc. From: <sip:User. 0@apollon.tas.com>;tag=3Va08dZg15fd1e7UTo: <sip:User. 1@apollon.tas .com>;tag=14383101f9Call-ID: 681EE514642E6F6729E00549CSeq:4 PRACKContent-Length: 0
• SIP/2.0 200 OKVia: SIP/2.0/UDP public.apollon.tas.com:5060;branch=z9hG4bK13Cg4CBA.eVZ3XhbFrom: <sip:User. 0@apollon.tas.com>;tag=3Va08dZg15fd1e7UTo: <sip:User. 1@apollon.tas .com>;tag=14383101f9Call-ID: 681EE514642E6F6729E00549 CSeq: 1 INVITEContact: <sip:10.211.12 .96:5072>Record-Route:< sip:AAZUB8gBCqUIAH+ArAGNzjAAG@10.211.7.112:5060;lr>Content-Length: 0
• ACK sip:10.211.12.96:5072 SIP/2.0Content-Length:0Via:SIP/2 . 0/UDP public.apollon.tas .com:5060;branch=z9hG4bKfB0Z27dZ9a1CVWUj From:<sip:User.0@apollon.tas.com>;tag=3Va08dZg15fd1e7U To:<sip:User.1@apollon.tas.com>;tag=14383101f9Call-ID: 681EE514642E6F6729E00549CSeq:1 ACKMax-Forwards :70
Ejemplo de un mensaje SIP-I
Ejemplo de un mensaje SIP-I
Ejemplo de un mensaje SIP-I