Skip to main content

Welcome to a Grasp lesson

Create a free account to keep studying and create your own study path.

Lesson 2

Décoder les En-têtes SIP Fondamentaux

Recommended resources

Bonjour. Dans la leçon précédente, nous avons établi la structure fondamentale d'un message SIP, en identifiant ses quatre composants : la ligne de début, les en-têtes, la ligne vide et le corps. Nous allons maintenant approfondir l'élément le plus dynamique et le plus crucial pour votre travail sur les SBC : la section des en-têtes (headers).

L'objectif de cette leçon est d'apprendre à interpréter les en-têtes SIP essentiels. Comprendre le rôle de chacun — From, To, Via, Contact, Call-ID, CSeq, Route et Record-Route — est fondamental. Ce sont précisément ces champs que vous analyserez et modifierez avec les règles de manipulation d'AudioCodes pour contrôler le routage, la sécurité et l'interopérabilité des appels.

Commençons par une vue d'ensemble vidéo qui présente plusieurs de ces en-têtes dans le contexte d'un message INVITE.

SIP Headers Explained

Cette vidéo, "SIP Headers Explained" de la chaîne VoIP Wala, introduit l'importance des en-têtes SIP pour l'analyse des messages et présente un exemple de requête INVITE que nous allons décortiquer.

Regardez le début de la vidéo, de l'introduction jusqu'à la présentation de l'exemple de message. Cela posera le contexte pour notre analyse détaillée.

Nous allons maintenant classer ces en-têtes en deux catégories fonctionnelles : ceux qui identifient la session et gèrent son état, et ceux qui déterminent le chemin de la signalisation.

Headers d'Identification et d'État : Le "Qui" et le "Quoi"

Ces en-têtes définissent les participants de l'appel et permettent de corréler les messages entre eux au sein d'une même session de communication.

From, To, Call-ID et CSeq

  • From et To: Ces en-têtes identifient respectivement l'initiateur (l'appelant) et la destination (l'appelé) de la requête. Ils contiennent une URI SIP et souvent un nom d'affichage. Il est important de noter que le To header n'est pas utilisé pour le routage de la requête initiale ; c'est la Request-URI de la première ligne qui remplit ce rôle.
  • Call-ID: C'est un identifiant unique universel (UUID) qui est généré par l'appelant et reste identique pour tous les messages (requêtes et réponses) appartenant à une même session d'appel. C'est le principal "fil rouge" qui lie un INVITE à son BYE correspondant.
  • CSeq (Command Sequence): Cet en-tête contient un numéro de séquence et la méthode de la requête (INVITE, BYE, etc.). Il permet de distinguer les différentes requêtes au sein d'un même Call-ID (une même session). Le numéro de séquence s'incrémente pour chaque nouvelle requête (par exemple, un INVITE aura CSeq: 1 INVITE et le BYE suivant aura CSeq: 2 BYE). Il sert à ordonner les transactions et à différencier les retransmissions des nouvelles requêtes.

La combinaison de ces en-têtes est ce qui définit un dialogue SIP. Un dialogue est une relation de signalisation de pair à pair qui persiste pour une certaine durée. Il est identifié de manière unique par la combinaison de trois éléments :

  1. Call-ID
  2. Le tag de l'en-tête From (une chaîne de caractères aléatoire ajoutée par l'UAC)
  3. Le tag de l'en-tête To (une chaîne de caractères aléatoire ajoutée par l'UAS dans sa première réponse)

La vidéo suivante explique le rôle de chacun de ces en-têtes.

SIP Headers Explained

Continuons avec la même vidéo pour détailler ces quatre en-têtes d'identification.

Veuillez regarder les segments suivants : Explication du 'To' header Explication du 'From' header Explication du 'Call-ID' Explication du 'CSeq' Notez bien la distinction entre Call-ID (qui identifie tout l'appel) et CSeq (qui identifie une transaction dans l'appel).

L'image ci-dessous illustre parfaitement ce concept. Observez comment le Call-ID reste constant tout au long de l'échange, tandis que le CSeq change pour la transaction BYE.

Ce diagramme de flux montre un appel SIP entre Alice et Bob. Le `Call-ID` est le même pour toutes les transactions (`INVITE`, `ACK`, `BYE`). Le `CSeq` commence à `314159 INVITE` et passe à `231 BYE` pour la transaction de fin d'appel.

Headers de Routage : Le "Où" et le "Comment"

Ces en-têtes sont le GPS du protocole SIP. Ils dictent le chemin que les messages doivent emprunter à travers le réseau, que ce soit pour les réponses ou pour les requêtes futures.

Contact et Via

  • Contact: Cet en-tête est l'un des plus importants mais aussi l'un des plus mal compris. Il contient l'adresse directe à laquelle un User Agent souhaite recevoir les futures requêtes au sein d'un même dialogue. Par exemple, dans un INVITE, l'appelant met son adresse dans le Contact pour que l'appelé sache où envoyer un BYE ou un re-INVITE. Ce n'est pas l'adresse de l'appelant (qui est dans From), mais son adresse de "réponse directe". C'est un point crucial pour la manipulation sur un SBC, qui agit souvent en tant que B2BUA (Back-to-Back User Agent) et réécrit cet en-tête.

  • Via: Cet en-tête trace le chemin de la signalisation. Chaque proxy ou SBC qui relaie une requête SIP ajoute son propre Via header en haut de la liste. Les Via headers sont ensuite utilisés pour router les réponses en sens inverse, en suivant le chemin exact que la requête a emprunté. Chaque Via header contient également un paramètre branch qui, combiné avec la méthode du CSeq et l'URI de la requête, identifie de manière unique une transaction.

SIP Headers Explained

La même vidéo explique très clairement le rôle des en-têtes Via et Contact.

Regardez maintenant ces deux segments : L'explication du 'Via' header, qui illustre comment plusieurs Via peuvent s'empiler. L'explication du 'Contact' header, qui souligne son rôle pour les requêtes et réponses futures.

Record-Route et Route

Ces deux en-têtes fonctionnent en tandem et sont essentiels lorsque l'appel passe par un ou plusieurs proxys SIP qui doivent rester dans le chemin de la signalisation pour toute la durée du dialogue. C'est le cas typique d'un SBC.

  • Record-Route: Lorsqu'un proxy "stateful" (comme un SBC) reçoit une requête INVITE, il peut vouloir s'assurer que toutes les requêtes futures de ce dialogue (par exemple, BYE) passeront aussi par lui. Pour ce faire, il insère un en-tête Record-Route contenant sa propre adresse dans la requête INVITE avant de la transmettre. S'il y a plusieurs proxys, chacun ajoute son propre Record-Route.

  • Route: Lorsque le destinataire (UAS) répond avec un 200 OK, il copie tous les en-têtes Record-Route de l' INVITE dans sa réponse. L'initiateur (UAC) reçoit ainsi le chemin complet des proxys. Cet ensemble de Record-Route est appelé le "Route Set". Pour toutes les requêtes ultérieures au sein du dialogue, l'UAC copiera ce "Route Set" dans une série d'en-têtes Route. Ces en-têtes Route forcent la requête à suivre le chemin des proxys établi lors de l' INVITE initial. C'est ce qu'on appelle le "loose routing".

Cette image illustre comment chaque proxy (A, B, C) ajoute son propre en-tête `Record-Route` à la requête SIP. La requête finale qui arrive au `Called Device` (UAS) contient une pile de ces en-têtes, décrivant le chemin retour.

L'article suivant explique en détail cette interaction complexe mais vitale.

Contact and Record-Route headers explained - Smartvox Labs

Cet article de Smartvox Labs est une excellente ressource qui démystifie le fonctionnement des en-têtes Contact, Record-Route et Route avec des schémas clairs.

Veuillez lire les sections suivantes : Commencez par "What is the function of the Contact header?" pour consolider votre compréhension de cet en-tête. Lisez ensuite la section "Introducing the Record-Route header" qui explique pourquoi cet en-tête est nécessaire en présence de proxys. Poursuivez avec "How Record-Route headers are used". Cette partie est cruciale, elle montre comment le "Route Set" est établi. Enfin, lisez "Introducing Route headers" et la brève explication du mécanisme de "loose routing". Cela vous montrera comment le "Route Set" est utilisé dans les requêtes suivantes.

Pour visualiser ce processus, la vidéo ci-dessous montre une animation du flux. Même si l'audio est en hindi, les diagrammes et les mots-clés SIP sont universels et très parlants.

SIP Record Route Header

Cette vidéo, "SIP Record Route Header", anime le processus de création des en-têtes Record-Route et leur transformation en en-têtes Route. Concentrez-vous uniquement sur les schémas.

Observez attentivement les animations dans ces sections : Le problème initial : un ACK ou un BYE contournerait les proxys sans Record-Route. La solution : les proxys P1 et P2 ajoutent leurs adresses dans des en-têtes Record-Route dans l'INVITE, et ces informations sont renvoyées dans le 200 OK. L'utilisation : le téléphone A utilise ces informations pour construire des en-têtes Route pour la requête BYE, forçant le message à passer par P2 puis P1.


Résumé de Référence

Le tableau suivant, tiré de la documentation de VoIPmonitor, est un excellent aide-mémoire que vous pouvez consulter.

Understanding the SIP Protocol - VoIPmonitor.org

Ce document fournit un tableau concis qui résume le rôle de chaque en-tête essentiel.

Consultez le tableau sous la section "SIP Headers". Il résume les en-têtes que nous avons vus (Via, From, To, Call-ID, CSeq, Contact, Record-Route) et confirme comment un dialogue est identifié.


Conclusion

Dans cette leçon, nous avons décortiqué les en-têtes SIP qui sont au cœur de la signalisation. Vous devriez maintenant être capable de les interpréter et de comprendre leur rôle spécifique :

  • Identification & État : From, To, Call-ID, et CSeq travaillent ensemble pour identifier de manière unique un dialogue et les transactions qui le composent.
  • Routage : Contact, Via, Record-Route, et Route constituent le système de navigation de SIP, assurant que les requêtes et les réponses atteignent leur destination, même à travers des réseaux complexes avec des proxys et des SBC.

La distinction entre le routage des réponses (via les en-têtes Via) et le routage des requêtes subséquentes (via les en-têtes Route dérivés de Record-Route) est un concept clé en ingénierie SIP. Sa maîtrise est indispensable pour configurer et dépanner un SBC AudioCodes.

Dans la prochaine leçon, nous assemblerons toutes ces pièces du puzzle. Nous tracerons un flux d'appel SIP complet, de l'INVITE initial au BYE final, en observant comment ces en-têtes sont utilisés et modifiés à chaque étape.