Introducción al protocolo SIP
Juan Salvador Escobar
CS Core
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:[email protected]
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:[email protected] SIP/2.0
Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8
Max-Forwards: 70 To: Bob <sip:[email protected]>
From: Alice <sip:[email protected]>;tag=1928301774
Call-ID: a84b4c76e66710 CSeq: 314159
INVITE Contact: sip:[email protected]
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:[email protected]
From: Bob <sip:[email protected]>;tag=456248
Call-ID: 843817637684230@998sdasdh09
CSeq: 1826 REGISTER
Contact: sip:[email protected]
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:[email protected]
From: Alice <sip:[email protected]>;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:[email protected]>;tag=a6c85cf
From: Alice <sip:[email protected]>;tag=1928301774
Call-ID: a84b4c76e66710
Contact: sip:[email protected]
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:[email protected]>;tag=3Va08dZg15fd1e7U To:<sip:[email protected]>Call-ID: 681EE514642E6F6729E00549CSeq:1 INVITEContact:<sip:[email protected]: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:[email protected]:5060;lr> Privacy: noneP-Asserted-Identity:tel:+491774190000,sip:[email protected] 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:[email protected]>;tag=3Va08dZg15fd1e7U To:<sip:[email protected]>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. [email protected]>;tag=3Va08dZg15fd1e7UTo: <sip:User. [email protected] .com>;tag=14383101f9Require: 100rel, precondition RSeq: 1Record-Route:<sip:[email protected]: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:[email protected]>;tag=3Va08dZg15fd1e7U To:<sip:[email protected]>;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. [email protected]>;tag=3Va08dZg15fd1e7UTo: <sip:User. [email protected] .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:[email protected]>;tag=3Va08dZg15fd1e7U To:<sip:[email protected]>;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:[email protected]: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. [email protected] .com>;tag=3Va08dZg15fd1e7UTo: <sip:User. [email protected] .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. [email protected] .com>;tag=3Va08dZg15fd1e7UTo: <sip:User. [email protected] .com>;tag=14383101f9 Record-Route:<sip:[email protected]: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:[email protected]>;tag=3Va08dZg15fd1e7U To:<sip:[email protected]>;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. [email protected]>;tag=3Va08dZg15fd1e7UTo: <sip:User. [email protected] .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:[email protected]>;tag=3Va08dZg15fd1e7U To:<sip:[email protected]>;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:[email protected]: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. [email protected] .com>;tag=3Va08dZg15fd1e7UTo: <sip:User. [email protected] .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. [email protected] .com>;tag=3Va08dZg15fd1e7UTo: <sip:User. [email protected] .com>;tag=14383101f9 Record-Route:<sip:[email protected]: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:[email protected]>;tag=3Va08dZg15fd1e7U To:<sip:[email protected]>;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. [email protected]>;tag=3Va08dZg15fd1e7UTo: <sip:User. [email protected] .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. [email protected]>;tag=3Va08dZg15fd1e7UTo: <sip:User. [email protected] .com>;tag=14383101f9Call-ID: 681EE514642E6F6729E00549 CSeq: 1 INVITEContact: <sip:10.211.12 .96:5072>Record-Route:< sip:[email protected]: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:[email protected]>;tag=3Va08dZg15fd1e7U To:<sip:[email protected]>;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
Top Related