Aller au contenu

SIP & RTP

La téléphonie sur IP (VoIP) sépare deux responsabilités entre deux protocoles distincts : établir l’appel, et transporter le flux audio/vidéo.

SIP gère la signalisation : établissement, modification et fin d’une session de communication (appel, visioconférence). Il ne transporte aucune donnée audio ou vidéo lui-même.

Fonctionnement inspiré de HTTP (requêtes/réponses textuelles) :

  • INVITE : initier un appel
  • ACK : confirmer l’établissement
  • BYE : raccrocher
  • REGISTER : un terminal (téléphone IP, softphone) s’enregistre auprès d’un serveur (registrar) pour être joignable

Codes de réponse également calqués sur HTTP : 180 Ringing, 200 OK, 486 Busy Here, 404 Not Found

SIP utilise traditionnellement le port 5060/UDP (ou TCP), et 5061/TLS pour une signalisation chiffrée (SIPS).

Une fois l’appel établi par SIP, le flux audio/vidéo circule via RTP, au-dessus d’UDP — la faible latence prime sur la fiabilité (voir TCP vs UDP : un paquet audio perdu produit un micro-artefact, le retransmettre serait déjà trop tard).

RTP transporte les données encodées (codecs voix : G.711, G.729, Opus…) et s’accompagne de RTCP (RTP Control Protocol), qui rapporte des statistiques de qualité (gigue, perte de paquets) permettant d’adapter le flux.

SIP embarque dans ses messages les adresses IP et ports à utiliser pour le flux RTP — problématique quand un des terminaux est derrière un NAT (quasiment toujours en pratique), puisque l’adresse privée annoncée n’est pas joignable depuis l’extérieur. Solutions courantes :

  • ALG SIP sur le routeur (souvent source de bugs, à désactiver en cas de problème étrange).
  • STUN/TURN/ICE pour découvrir l’adressage public et, si besoin, relayer le flux.
  • Un SBC (Session Border Controller) en frontal, qui renégocie proprement la signalisation et le média entre l’intérieur et l’extérieur du réseau.