Formation SIP-IMS 1ère partie : SIP DE SOUZA Rémi – UIS / SOSC Septembre 2009, présentation à la Base arrière UIS Toulouse interne Groupe FT
Plan de formation partie 1 Introduction partie 2 Caractéristiques partie 3 Communication partie 4 Fonctionnement partie 5 Etablissement d’une session partie 6 Avantages inconvénients de SIP
I. Introduction Les origines Qu’est-ce-que SIP ? Les capacités de SIP Fonctionnalités SIP vs H323
I.1 Les origines SIP a été spécifié par le groupe de travail MMUSIC (Multiparty Multimédia Session Control) Protocole récent, créé en 1999 Normalisé par l’IETF (Internet Engineering Task force) Concurrent du protocole H323 (1996), créé par l’ITU (International Communication Union) Définit par la RFC 2543 en 1999 et la RFC 3261 en 2002
I.2 Qu’est-ce-que SIP ? Protocole de signalisation de la couche application du modèle OSI Permet de réalisé de l’audio ou vidéoconférence, de la voix (téléphonie), de l’enseignement à distance, et de la diffusion multimédia Rôle : Ouvrir, Modifier et Libérer les sessions multimédias entre un ou plusieurs utilisateurs SIP n’est pas un protocole de réservation de ressource, il ne peut donc pas assurer la QoS C’est un protocole d’appel et non de contrôle de média
I.3 Les capacités de SIP SIP a la capacité de : SIP ne fournit pas : Localiser une ressource SIP Supporter la résolution d’adresse, le mapping et la redirection d’appel Etablir des sessions multimédias Modifier les caractéristiques de la session media ou du codec Gérer la disponibilité de l’utilisateur Vérifier les capacités du terminal Mettre en œuvre des mécanismes de sécurité SIP ne fournit pas : Des services applicatifs Une gestion de la QoS Un contrôle de flux média
I.4 Fonctionnalités Localisation d’un terminal appelé Détermination du type de média échangé (voix, vidéo, données, …) Vérification de la disponibilité de l’appelé et demande d’établissement d’appel Etablissement et suivi de l’appel Mobilité fonctionnelle : l’utilisateur n’est plus lié à un téléphone avec un ou plusieurs numéros L’utilisateur est joignable au travers d’en ensemble de contact : softphone, poste fixe, GSM
I.5 SIP vs H323 Protocole SIP H323 Complexité réduite élevée Rationalisation bonne à poursuivre Evolutivité simplifiée difficile Modularité forte faible Architecture répartie centralisée Gestion Multicast simple complexe
Plan de formation partie 1 Introduction partie 2 Caractéristiques partie 3 Communication partie 4 Fonctionnement partie 5 Etablissement d’une session partie 6 Avantages inconvénients de SIP
II. Caractéristiques Couches OSI Les agents SIP Identités SIP Méthodes et Réponses
II.1 Couches OSI SIP se charge de l’authentification et de la localisation des multiples participants, de la négociation sur les types de média utilisables par les différents participants en encapsulant des messages SDP (Session Description Protocol). SIP ne transporte pas les données échangées durant la session comme la voix ou la vidéo. SIP étant indépendant de la transmission des données, tout type de données et de protocoles peut être utilisé pour cet échange. Le protocole RTP (Real-time Transport Protocol) assure le plus souvent les sessions audio et vidéo. Application SIP Transport Réseau
II.2 Les agents SIP Les composants du réseau SIP sont divisés en deux catégories : Agents utilisateurs UA : User Agent Client (UAC) Initiation des sessions à la demande de l’utilisateur User Agent Server (UAS) Réception de toutes les sessions à destination de l’utilisateur Un UA joue à la fois le rôle d’un UAC et d’un UAS si une session est déjà établie. Un UA peut-être un UAC ou UAS selon s’il a initialisé la session ou non. 1. point terminal émettant des requêtes, il peut être IP-Phone, PDA, softphone, GW SIP, … 2. point terminal traitant les requêtes entrantes
II.2 Les agents SIP Agents serveurs : Registrar Server (RG) Enregistrer l’association de l’identifiant d’un utilisateur et son adresse IP Redirect Server (RS) Répondre à des requêtes en donnant l’adresse IP d’un utilisateur ou d’un serveur de localisation Proxy (PS) Avoir une fonctionnalité de relais Back To Back user agent (B2BUA) Concaténer un UAC et un UAS 1. enregistre les adresses des terminaux (location service) 2. retourne à l’appelant les adresses (contacts) de l’appelé extraites du location service (Registrar) 3. entité intermédiaire client/server, il traite d’une façon autonome les requêtes provenant d’autres clients. Il route les requêtes vers une autre entité plus proche de l’appelé en utilisant, si elles sont disponibles, les informations du location service. Il peut intervenir dans le contrôle des appels, interprète et éventuellement modifie les requêtes avant de les transmettre. Un proxy ne peut cependant pas interrompre une communication ni faire de prépayé 4. est la concaténation d’un UAC et d’un UAS. Pour traiter une requête reçue en tant qu’UAS, il génère et envoi une nouvelle requête en tant qu’UAC. Le B2B est souvent le SBC. Il peut couper une communication et faire du prépayé
II.2 Les agents SIP Deux modes de communications: Mode direct : Les entités utilisatrices communiquent directement Mode indirect : Les entités serveurs relaient les messages échangés
II.3 Identités SIP : SIP URI Pour identifier les utilisateurs au sein du réseau, SIP utilise des URI (Uniform Ressource Identifier). La syntaxe d’une URI est proche d’une adresse mail utilisateur@domaine : Utilisateur : nom, prénom, n° téléphone Domaine : nom du domaine ou adresse IP Exemples : sip:remi@home.com sip:remi@192.168.2.10 sip:0512345678@home.com
II.3 Identités SIP : Name addr Un name addr est une URI encadrée par <> et éventuellement d’un champ display name. Les séparateurs <> sont nécessaires si : un display name est spécifié L’URI contient : « , », « ; », ou « ? » Si ces séparateurs sont absents, tous les paramètres après l’URI sont des paramètres de l’en-tête. Exemple : Contact:<sip:user@domaine.com> = name addr From: user<sip:user@domaine.com> = display name
II.4 Méthodes et Réponses Les messages SIP partage de nombreuses similitudes avec le protocole HTTP. Il existe deux types de messages : Méthodes (requêtes) : Les messages initialisés par les UAC (User Agent Client) à destination d’un ou de plusieurs UAS (User Agent Server). Réponses : Les messages envoyés par les UAS pour répondre à une requête.
II.4 Méthodes et Réponses Structure d’un message SIP : Chaque message contient une adresse URI, un ensemble d’en-têtes et un corps. Certains champs d’en-têtes sont toujours présents dans les requêtes et les réponses pour former l’en-tête général Via Max-Forwards To From Call-ID CSeq
II.4 Méthodes et Réponses La RFC 3261 définit 6 principales méthodes SIP : REGISTER utilisé par un UA pour s’enregistrer (@IP ou nom de machine) auprès d’un Registrar afin d’être localisé et joignable INVITE initialise une session entre UA, contient les infos appelant/appelé et le type de flux qui seront échangés (voix, vidéo,…) ACK acquitte et confirme les paramètres de session CANCEL annule une requête en cours d’établissement initié par un INVITE BYE libérer une session multimédia OPTIONS utilisé pour interroger un UA (terminal ou serveur) sur ses capacités (langages, extensions… supportés) et son état (disponible ou non)
II.4 Méthodes et Réponses Exemple d’une méthode : User A User B INVITE sip:user_B@domaine_B.com SIP/2.0 Via: SIP/2.0/TCP pcXX.domaine_A.com:5060;branch=z9hG4bK74bf9 Max-Forwards: 70 From: user_A<sip: user_A@domaine_A>;tag=9fxced76sl To: user_B<sip:user_B@domaine_B.com> Call-ID: 3848276298220188511@domaine_A.com CSeq: 1 INVITE Contact: <sip:pcXX.domaine_A.com;transport=tcp> Content-Type: application/sdp Content-Length: 151 v=0 o=user_A 2890844526 2890844526 IN IP4 pcXX.domaine_A.com s=- c=IN IP4 192.0.2.101 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000
II.4 Méthodes et réponses Réponses : Après avoir reçu et interprété une requête SIP, le destinataire de cette requête retourne une réponse SIP. 6 classes de réponses : 1xx Information exemple : 180 Ringing 2xx Succès exemple : 200 OK 3xx Redirection exemple : 305 Use Proxy 4xx Erreur côté client exemple : 486 busy 5xx Erreur côté serveur exemple : 500 Server Internal Error 6xx Erreur globale exemple : 600 Busy Everywhere
II.4 Méthodes et Réponses Exemple d’une réponse : User A User B SIP/2.0 200 OK Via: SIP/2.0/TCP pcXX.domaine_A.com:5060;branch=z9hG4bK74bf9; 192.0.2.101 (@IP émetteur) From: user_A<sip:user_A@domaine_A.com>;tag=9fxced76sl To: user_B<sip:user_B@domaine_B.com> Call-ID: 3848276298220188511@domaine_A.com CSeq: 1 INVITE Contact: <sip: pcYY.domaine_B.com;transport=tcp> Content-Type: application/sdp Content-Length: 147 v=0 o=user_A 2890844526 2890844526 IN IP4 pcXX.domaine_A.com s=- c=IN IP4 192.0.2.101 …
II.4 Méthodes et Réponses Méthodes étendues de SIP : SUBSCRIBE Demander une notification d’évènement d’appel NOTIFY Valider un évènement qui a été demandé PUBLISH Publier l’état d’un UA MESSAGE Transférer des messages instantanées UPDATE Mise à jour des paramètres de la session de l’UA PRACK Acquitter les réponses de classe 1xx INFO Obtenir des informations sur la session en cours
Plan de formation partie 1 Introduction partie 2 Caractéristiques partie 3 Communication partie 4 Fonctionnement partie 5 Etablissement d’une session partie 6 Avantages inconvénients de SIP
III. Communication Transaction Dialogue
Une transaction est une relation entre deux équipements III.1 Transaction Une transaction est une relation entre deux équipements Client Serveur Requête Création de la transaction Création de la transaction 180 RINGING Transaction complète 200 OK Réponse finale Transaction complète ACK Une transaction possède un identifiant unique Les transactions sont indépendantes entre elles, les retransmissions n’ont pas d’influence Une transaction est considérée terminée lors de la réception de la première réponse finale Une transaction contient les réponses provisionnelles (« 180 Ringing ») Le CANCEL et sa réponse constitue une transaction Transaction : précisions sur le 200 OK et le ACK Le 200 OK de l’INVITE transporte une information vitale : la réponse de l’offre SDP pour le terminal appelant A la réception d’un 200 OK, l’appelant doit acquitter lui-même le 200 OK auprès de l’appelé en émettant un ACK. - Le 200 OK est une réponse de bout en bout, il ne peut être créé par un élément intermédiaire, un proxy ne retransmettra jamais un 200 OK seul le téléphone le fera. - Le 200 OK sera retransmis tant que le ACK associé ne sera pas reçu - Le ACK d’un 200 OK ne fait pas partie de la transaction. Même si une partie de la route entre UA est basée sur UDP, les 200 OK seront toujours retransmis y compris sur TCP. Suite à un INVITE, un élément intermédiaire peut générer une réponse négative. Dans ce cas et ce cas seulement, le ACK à cette réponse négative appartiendra à la transaction. N.B. Le ACK n’a pas de réponse pour des raisons historiques.
Un dialogue est une relation de bout en bout entre deux UAs III.2 Dialogue Un dialogue est une relation de bout en bout entre deux UAs UA UA Création Modification Destruction Requête 200 OK Un dialogue est créé sur la réception d’un 200 OK de l’invite L’état du dialogue ne peut changer que suite à une nouvelle transaction Un dialogue ne peut être changé sur erreur Un dialogue est clôturé sur réception du BYE (indépendamment de la réponse au BYE)
Plan de formation partie 1 Introduction partie 2 Caractéristiques partie 3 Communication partie 4 Fonctionnement partie 5 Etablissement d’une session partie 6 Avantages inconvénients de SIP
IV. Fonctionnement Registrar Proxy Redirect Server Back to Back User Agent
IV.1 Registrar – Rôle, fonctions Serveur qui gère les requêtes REGISTER envoyées par le UA pour s’enregistrer sur le réseau Mapping entre l’adresse IP et l’adresse SIP (URI) Requêtes stockées dans une base de données Généralement, des mécanismes d'authentification permettent d'éviter que quiconque puisse s'enregistrer avec n'importe quelle URI
IV.1 Registrar – Durée d’enregistrement L’UA demande une durée de vie au travers du paramètre « expires » de l’en-tête « contact » ou en spécifiant un en-tête « Expires » La durée relative d’enregistrement est par défaut de 3600 secondes La durée d'expiration finale est fournie par la valeur du « expires » dans le 200 OK Requête REGISTER renouvelée régulièrement (entre 60s et 3600s) pour vérifier la joignabilité de l’utilisateur Après expiration, le Registrar détruit l'entrée correspondante dans sa base de données. Sur réception d'un REGISTER, le Registrar : - retrouve toutes les entrées pour user@domaine.com (spécifié dans le header "To") à partir de la base de données, - les compare avec les adresses du Contact (selon les règles de comparaison spécifiques à chaque schéma) et : * rajoute les contacts qui n'ont pas d'entrée * les entrées déjà existantes sont mises à jour (date d'expiration) - retourne un 200 OK qui inclut toutes les entrées Si le REGISTER ne contient pas de contact, le 200OK retourne néanmoins la liste des contacts existants Si le REGISTER contient un "expires: 0" : destruction des entrées Le serveur de localisation est complémentaire au Registrar, il contient la base de données de l’ensemble des utilisateurs qu’il gère. Dès qu’un abonné s’enregistre, le Registrar en informe immédiatement le serveur de localisation. Le serveur de localisation et le Registrar sont presque toujours implémentés au sein d’une même entité car leurs fonctionnalités sont à la fois proches et dépendantes. De la même façon qu’un serveur DNS gère les domaines qu’il connait, un serveur de localisation prend en charge un ou plusieurs domaines. REGISTER sip:domaine.com SIP/2.0 From:user<sip:user@domaine.com>;tag=vjfjkvfjkf To: user<sip:user@domaine.com> Contact: sip:Nom_du_PC.domaine.com Exprires:3600 SIP/2.0 200 OK From:user <sip:user@domaine.com>;tag=vjfjkvfjkfjv To:user<sip:user@domaine.com>;tag=34FFZefcce Contact:<sip:pcXX.domaine.com>;expires=3600
IV.2 Proxy – Rôle, Fonctions Rôle : Intermédiaire entre deux UA qui ne connaissent pas leur emplacement respectif Intervient dans la signalisation et ne gère pas de média Le proxy SIP n’émet aucune requête, excepté la requête CANCEL pour libérer une session 1 2 3 4 Si un utilisateur souhaite appeler un autre utilisateur, il va composer son numéro (court "extension" ou long pour un appel sortant). Le proxy SIP, selon qu'il s'agit d'un appel interne ou externe, va relayer la requête INVITE vers le bon poste ou router l'appel vers le réseau public. Pourquoi un proxy SIP ? @IP n’est pas fixe comme un numéro de téléphone @IP souvent attribuée dynamiquement à une machine via DHCP L’UA ne connaît pas toujours l’@IP de l’appelé pour envoyer le message INVITE Le proxy SIP est une entité intermédiaire pour orienter les requêtes SIP vers le destinataire dans ce cas-là? 1 L’UA envoi une requête au proxy 3 La BD retourne l’adresse IP du destinataire 2 Le proxy interroge la base de données 4 Le proxy relaie le message au destinataire
IV.2 Proxy – Mode de fonctionnement Mode STATELESS Mode STATELESS INVITE INVITE INVITE INVITE 180 Ringing 180 Ringing 180 Ringing 180 Ringing 200 OK 200 OK 200 OK 200 OK ACK Mode Stateless : Dans le cas présent, Utilisateur A ne connaît pas l'adresse exacte de l’utilisateur B , il ne connaît qu'une adresse SIP (appelée URL SIP) qui ressemble à une adresse e-mail : « sip :utilisateurB@domaine.com ». Le proxy va recevoir l'appel (message INVITE), se charge de faire la correspondance avec l'adresse IP de la machine sur laquelle est connectée Utilisateur B et lui transmet le message ou le fait suivre vers un autre proxy plus apte à trouver Utilisateur B. L’utilisateur A n'a donc pas à connaître l'adresse IP exacte de l’utilisateur B, seul l'adresse du proxy suffit. Ce système est très utile car il permet à un utilisateur de changer de machine ou de lieu sans avoir aucun problème de changement d'adresse. Mode Statefull : Le serveur proxy en mode Statefull route les paquets et n'a aucune implication dans l'échange de flux média qui suit. Dans cet exemple on peut constater qu'une fois les premiers messages échangés, les UA s'envoient directement leurs messages sans passer par le proxy. C'est une fonctionnalité fournie par SIP qui permet aux UA de se donner leurs adresse sip finales (dans un champ nommé « Contact : »). Lors de la requête suivante les UA peuvent alors se joindre directement. Cependant le proxy peut forcer toutes les requêtes suivantes d'une session à passer par lui (en ajoutant son adresse dans le champ nommé « Record-Route : »). ACK ACK Média Média BYE BYE BYE 200 OK 200 OK 200 OK
IV.3 Redirect Server Le Redirect Server reçoit et émet des requêtes SIP pour localiser le destinataire enregistré dans la base de données mise à jour par le Registrar. La réponse contient la ou les adresses à contacter pour joindre le destinataire. Proxy Server sip.blue.com Redirect Server sip.orange.com 1 : INVITE bob@orange.com 2 : bob@orange.com ? 4 : Contact: sip:bob@blue.com 3 : bob@blue.com 5 : ACK 6 : INVITE bob@blue.com 7 : 100 Trying 8 : INVITE 9 : 180 Ringing 10 : 180 Ringing 11 : 200 OK 12 : 200 OK 13 : ACK Flux multimédia
IV.4 Back to Back User Agent Un B2BUA dispose, comme le proxy, d’une fonction de relayage des requêtes d’établissement de session. Un B2BUA peut établir, modifier ou clore des sessions. A la différence d’un proxy, un B2BUA est un relais intelligent qui maintient l’état des transitions (appels). UA Server UA Client Réception et traitement des requêtes Renvoie et génère les requêtes B2BUA
Plan de formation partie 1 Introduction partie 2 Caractéristiques partie 3 Communication partie 4 Fonctionnement partie 5 Etablissement d’une session partie 6 Avantages inconvénients de SIP
V. Etablissement d’une session Mode direct Mode indirect
V.1 Mode direct alice@mybook.com office.mybook.com bob@school.com 200.201.202.203 bob@school.com lab.school.com 100.101.102.103 INVITE 180 Ringing 200 OK ACK Flux Média BYE 200 OK
V.1 Mode direct - INVITE INVITE sip:alice@mybook.com SIP/2.0 Version du protocole et protocole de transport utilisé Nom DNS ou @IP de la machine et numéro de port INVITE sip:alice@mybook.com SIP/2.0 Via: SIP/2.0/UDP lab.school.com:5060;branch=z9hG4bKfw19b Max-Forwards: 70 To: Alice <sip:alice@mybook.com> From: Bob <sip:bob@school.com>;tag=76341 Call-ID: 123456789@lab.school.com CSeq: 1 INVITE Subject: About That Power Outage… Contact: <sip:bob@lab.school.com> Content-Type: application/sdp Content-Length: 158 v=0 o=Bob 2890844526 2809844526 IN IP4 lab.school.com s=Phone Call c=IN IP4 100.101.102.103 t=0 0 m=audio 49170 RTP/AVP 0 a=rtpmap:0 PCMU/8000 Détection des boucles Diminué à chaque passage d’un serveur SIP Adresse destinataire de la requête Adresse expéditeur de la requête ID de l’appel Chaîne de caractère générée par l’appelant suivi du nom de la machine Dialogue Adresse SIP pour contacter l’appelé après session établie Protocole utilisé dans le corps du message Taille du corps SDP : V : version du protocole SDP O : origine du message S : sujet du message C : connexion T : temps M : media A : attributs Informations fournies par l’appelant : @IP de la connexion 100.101.102.103 Type de média : audio N° du port : 49710 Protocole de transport du média : RTP - Débit d’échantillonnage : 8000 Hz
V.1 Mode direct – 180 Ringing Répondre au message INVITE Indiquer que le message INVITE est bien reçu et la sonnerie est en cours @IP de l’entité qui envoie la requête INVITE SIP/2.0 180 Ringing Via: SIP/2.0/UDP lab.school.com:5060;branch=z9hG4bKfw19b;received=100.101.102.103 To: Alice <sip:alice@mybook.com>;tag=a53e42 From: Bob <sip:bob@school.com>;tag=76341 Call-ID: 123456789@lab.school.com CSeq: 1 INVITE Contact: <sip:alice@mybook.com> Content-Length: 0 Tag de l’appelé ajouté Adresse SIP pour contacter l’appelé après session établie
V.1 Mode direct – 200 OK SIP/2.0 200 OK Via: SIP/2.0/UDP lab.school.com:5060;branch=z9hG4bKfw19b;received=100.101.102.103 To: Alice <sip:alice@mybook.com>;tag=a53e42 From: Bob <sip:bob@school.com>;tag=76341 Call-ID: 123456789@lab.school.com CSeq: 1 INVITE Contact: <sip:alice@office.mybook.com> Content-Type: application/sdp Content-Length: 155 v=0 o=Alice 2890844528 2890844528 IN IP4 office.mybook.com s=Phone Call c=IN IP4 200.201.202.203 t=0 0 m=audio 6000 RTP/AVP 0 a=rtpmap:0 PCMU/8000
V.1 Mode direct – ACK Dernier message de l’établissement d’une session Confirmation que l’appelant a bien reçu la réponse de l’appelé ACK sip:alice@office.mybook.com SIP/2.0 Via: SIP/2.0/UDP lab.school.com:5060;branch=z9hG4bK321g Max-Forwards: 70 To: Alice <sip:alice@mybook.com>;tag=a53e42 From: Bob <sip:bob@school.com>;tag=76341 Call-ID: 123456789@lab.school.com CSeq 1 ACK Content-Length: 0
V.1 Mode direct – BYE Terminer une session : Un participant raccroche, un message BYE est envoyé comme une requête BYE sip:bob@lab.school.com SIP/2.0 Via: SIP/2.0/UDP office.mybook.com:5060;branch=z9hG4bK392kf Max-Forwards: 70 To: Bob <sip:bob@school.com>;tag=76341 From: Alice <sip:alice@mybook.com>;tag=a53e42 Call-ID: 123456789@lab.school.com CSeq 1 BYE Content-Length: 0
V.1 Mode direct – 200 OK Message 200 OK envoyé comme conformation de la fermeture de la session SIP/2.0 200 OK Via: SIP/2.0/UDP office.mybook.com:5060;branch=z9hG4bK392kf;received=200.201.202.203 To: Alice <sip:alice@mybook.com>;tag=a53e42 From: Bob <sip:bob@school.com>;tag=76341 Call-ID: 123456789@lab.school.com CSeq: 1 BYE Content-Length: 0
V.2 Mode indirect INVITE INVITE 180 Ringing 180 Ringing 200 OK 200 OK ACK Média BYE 200 OK
Plan de formation partie 1 Introduction partie 2 Caractéristiques partie 3 Communication partie 4 Fonctionnement partie 5 Etablissement d’une session partie 6 Avantages / Inconvénients de SIP
VI. Avantages / Inconvénients de SIP Protocole standardisé : Normalisation par l’IETF et en constante évolution Problème d’utilisation du NAT Grand nombre de RFC Simplifié : Simple et très similaire au protocole HTTP Flexible : - Utilisé pour tout type de sessions multimédia (voix, vidéo, musique, visioconférence, …) - Indépendant de la couche Transport, peut-être utilisé avec UDP mais aussi TCP Points communs avec H323 : Utilisation du protocole RTP et quelques codecs son et vidéos Evolutif : - Ouvert à de nouvelles fonctions Retenu pour l’activation des services pour les terminaux mobiles 4G et 5G (IMS)
Merci Questions ?