Protocole SIP expliqué : définition et usage

Rene, Kabir Goel 
Protocole SIP expliqué : définition et usage

SIP, le Session Initiation Protocol, est la façon dont les appels téléphoniques s’établissent sur internet. Quand un appareil veut en appeler un autre, SIP transporte la négociation : qui appelle, où joindre l’autre côté, quels codecs audio les deux prennent en charge, et quand quelqu’un raccroche. La voix elle-même ne passe jamais par SIP. Une fois les deux côtés d’accord, l’audio circule dans un flux séparé, presque toujours en RTP.

Cette séparation est la chose à retenir de ce guide : SIP est la conversation autour de l’appel, pas l’appel. Tout le reste, les méthodes, les codes de réponse, les ports, en découle. Ce guide couvre le déroulement d’un appel SIP message par message, le sens du vocabulaire, et les endroits où SIP apparaît quand ce qui répond à vos appels est un agent vocal IA.

Ce que SIP est, et ce qu’il n’est pas

SIP est un protocole de signalisation de la couche application défini par l’IETF. Il est apparu d’abord comme RFC 2543 en 1999, puis a été révisé comme RFC 3261 en 2002, qui reste le standard qu’implémentent tous les téléphones SIP, PBX et opérateurs. Ses concepteurs ont emprunté à HTTP le modèle requête-réponse et la syntaxe texte, donc un message SIP se lit dans une capture de paquets sans outillage particulier.

Trois choses que SIP n’est pas :

  • Pas l’audio. SIP négocie la session, puis s’efface. La voix et la vidéo circulent en paquets RTP, décrits plus bas.
  • Pas un service. Personne ne vous vend « du SIP ». Ce que les opérateurs vendent, c’est le trunk SIP : un service qui utilise le protocole SIP pour relier votre système téléphonique au réseau téléphonique public.
  • Pas la seule façon de signaler un appel. H.323 l’a précédé, WebRTC gère les appels dans les navigateurs, et des protocoles propriétaires tournent dans des applications fermées. SIP a gagné le monde de la téléphonie d’entreprise parce qu’il est ouvert, textuel et assez simple pour que chaque éditeur puisse l’implémenter.

Comment fonctionne un appel SIP

Un appel SIP est un bref échange de requêtes texte et de réponses numérotées. Voici un appel entrant typique, de la sonnerie au raccrochage :

  1. INVITE. Le côté appelant envoie un INVITE à l’adresse de l’appelé. Son corps porte un bloc SDP (Session Description Protocol) qui liste l’IP de l’appelant, le port où il veut recevoir l’audio et les codecs qu’il prend en charge.
  2. 100 Trying. Les proxys sur le chemin accusent réception, pour que l’appelant cesse de retransmettre.
  3. 180 Ringing. L’appareil appelé avertit son utilisateur. C’est à ce moment que l’appelant entend la tonalité de retour d’appel.
  4. 200 OK. L’appelé décroche. La réponse porte son propre bloc SDP, ce qui complète la négociation des codecs.
  5. ACK. L’appelant confirme la réponse finale. La session est établie, et l’audio RTP commence à circuler dans les deux sens.
  6. BYE. Celui qui raccroche envoie un BYE. L’autre côté répond 200 OK, et la session se termine.

En cours d’appel, chaque côté peut envoyer un nouvel INVITE, appelé re-INVITE, pour modifier la session : la mettre en attente, ajouter la vidéo ou changer de codec. Une requête REFER demande à l’autre côté d’appeler ailleurs, et c’est ainsi que fonctionnent les transferts.

Voici à quoi ressemble un INVITE sur le réseau, légèrement raccourci :

INVITE sip:+14155550132@sip.example.com SIP/2.0
Via: SIP/2.0/TLS client.example.com:5061;branch=z9hG4bK74bf9
Max-Forwards: 70
From: "Alice" <sip:alice@example.com>;tag=9fxced76sl
To: <sip:+14155550132@sip.example.com>
Call-ID: 3848276298220188511@client.example.com
CSeq: 1 INVITE
Contact: <sip:alice@client.example.com;transport=tls>
Content-Type: application/sdp
Content-Length: 213

v=0
o=alice 2890844526 2890844526 IN IP4 client.example.com
s=-
c=IN IP4 client.example.com
t=0 0
m=audio 40000 RTP/AVP 0 8 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000

Les trois dernières lignes de l’offre SDP sont les codecs sur la table : le payload 0 est du G.711 loi μ, le payload 8 du G.711 loi A, et le payload 101 est telephone-event, la voie hors bande pour envoyer les appuis de touches DTMF dans le flux audio. Un appel sur le réseau public se fixe en général sur l’une des deux variantes du G.711, et c’est pourquoi l’audio téléphonique sonne comme il sonne.

Les méthodes SIP à connaître

Les requêtes SIP portent un nom de méthode. Voici celles que vous croiserez dans une capture :

MéthodeCe qu’elle fait
INVITEDémarre une session, ou en modifie une en cours d’appel (re-INVITE)
ACKConfirme la réponse finale à un INVITE
BYETermine la session
CANCELAbandonne un INVITE encore sans réponse
REGISTERDit à un registrar « je suis joignable à cette adresse »
OPTIONSDemande à un appareil ce qu’il sait faire, sans l’appeler
REFERDemande à l’autre côté d’appeler un tiers : la base des transferts
INFOTransporte des informations en cours d’appel, l’une des façons dont les chiffres DTMF peuvent voyager

Chaque requête reçoit des réponses à codes à trois chiffres, groupés par premier chiffre :

ClasseSignificationExemples
1xxProvisoire100 Trying, 180 Ringing, 183 Session Progress
2xxSuccès200 OK, 202 Accepted
3xxRedirection301 Moved Permanently, 302 Moved Temporarily
4xxErreur client401 Unauthorized, 403 Forbidden, 404 Not Found, 486 Busy Here
5xxErreur serveur500 Server Internal Error, 503 Service Unavailable
6xxÉchec global603 Decline, 604 Does Not Exist Anywhere

Deux de ces codes gagnent leur place pendant l’établissement. Un 401 ou un 407 n’est pas un échec ; c’est une demande d’authentification, et l’expéditeur est censé réessayer avec des identifiants digest. Un 488 Not Acceptable Here signifie que les deux côtés ne partagent aucun codec : la façon polie qu’a un appel de dire que vous ne vous êtes jamais mis d’accord sur l’encodage de l’audio.

Adresses, enregistrement et les boîtiers entre les deux

Les adresses SIP ressemblent à des adresses e-mail : sip:alice@example.com, avec parfois un port ou un transport, comme dans sip:alice@example.com:5061;transport=tls. Un numéro de téléphone devient un URI SIP en lui attachant le domaine de l’opérateur, et c’est pourquoi sip:+14155550132@sip.example.com est une adresse complète qu’on peut composer.

Comme les appareils se déplacent et se trouvent derrière du NAT, un téléphone SIP annonce au réseau où il se trouve : il envoie un REGISTER à son registrar, qui enregistre « alice@example.com est actuellement à cette IP ». Quand un INVITE pour Alice arrive, un serveur proxy consulte cet enregistrement et transmet la requête là où Alice se trouve vraiment. Devant la plupart des déploiements réels se tient un session border controller (SBC), un videur pour le trafic SIP qui termine la signalisation, masque le réseau interne, applique la politique de sécurité et normalise les bizarreries des stacks SIP des différents éditeurs.

SIP, RTP et SDP

Trois protocoles se partagent le travail de chaque appel SIP :

ProtocoleRôle
SIPSignalisation : trouve l’appelé, négocie la session, la termine
SDPDescription : la charge utile dans les messages SIP qui liste codecs, IP et ports
RTPMédias : transporte l’audio ou la vidéo réels, marqués de numéros de séquence et d’horodatages

C’est pourquoi un appel peut sonner parfaitement et ne délivrer que du silence. La moitié SIP a fonctionné, donc les deux téléphones conviennent qu’un appel existe, mais la moitié RTP est cassée, en général par un pare-feu ou un NAT qui laisse passer la signalisation et jette les médias. Quand vous déboguez un appel sans audio, examinez le chemin des médias, pas la signalisation. C’est cette même séparation qui fait de la gigue (jitter) un problème RTP : les champs de numéro de séquence et d’horodatage présents sur chaque paquet RTP, définis par la RFC 3550, sont exactement ce qu’un récepteur mesure pour la calculer.

SIP, VoIP et trunk SIP

Ces trois termes sont souvent employés l’un pour l’autre, et ce n’est pas la même chose :

TermeCe que c’est
VoIPL’idée générale : la voix transportée sur des réseaux IP
SIPUn protocole de signalisation utilisé pour établir les appels VoIP
Trunk SIPUn service d’opérateur qui utilise SIP pour relier votre système téléphonique au réseau téléphonique public

Si la VoIP est l’idée de téléphoner par internet, SIP est la grammaire que parlent les deux extrémités, et un trunk SIP est l’abonnement qui fait passer votre appel sur le réseau téléphonique public. Le guide du trunk SIP couvre le côté service : opérateurs, canaux et configuration.

Transports, ports et chiffrement

La signalisation SIP passe par UDP ou TCP sur le port 5060, ou par TLS sur le port 5061. UDP est le défaut traditionnel et évite le blocage en tête de file, mais les gros messages se fragmentent, donc TCP est courant pour tout ce qui a du volume. TLS chiffre la signalisation et authentifie l’extrémité distante, et c’est ce que les opérateurs attendent de tout usage en production.

SIP en clair ne chiffre rien : quiconque se trouve sur le chemin peut lire la signalisation, et les médias voyagent en RTP non chiffré. Le remède standard, c’est TLS pour la signalisation plus SRTP, défini par la RFC 3711, pour les médias. Les deux extrémités doivent être d’accord, car activer le chiffrement d’un seul côté est une façon fiable d’obtenir des appels qui se connectent sans transporter aucun audio.

Un avertissement qui a survécu à toutes les décennies de SIP : n’exposez pas de point de terminaison SIP ouvert. Des scanners balayent internet à la recherche du port 5060 dans les minutes qui suivent son apparition, en quête de trunks qui passeront des appels gratuitement. Authentifiez les expéditeurs avec des identifiants digest, autorisez explicitement les IP de signalisation de votre opérateur, ou les deux.

Où SIP rencontre un agent vocal

Si vous mettez un agent vocal IA sur le réseau téléphonique, SIP est le protocole qui travaille aux deux bouts de l’appel : l’opérateur livre les appels entrants à la plateforme d’agents sous forme d’INVITE SIP, et la plateforme renvoie les appels sortants et les transferts par le même chemin. Quelques détails du protocole cessent d’être des anecdotes dès que cette stack vous appartient :

  • Les transferts sont des REFER. Quand l’agent passe un appelant à une personne, la plateforme envoie un SIP REFER demandant à l’opérateur de faire sonner une nouvelle destination. Un REFER simple est un transfert à froid ; le rendre à chaud, où la personne entend d’abord le contexte, est le travail de l’agent avant le départ du REFER.
  • Les touches ont trois transports. Les chiffres DTMF peuvent voyager dans la bande en audio, hors bande en événements telephone-event de la RFC 4733 (le payload 101 de l’INVITE ci-dessus), ou dans des messages SIP INFO. Un désaccord entre ce que le téléphone envoie et ce que l’agent écoute est la raison pour laquelle les menus « tapez 1 » avalent des chiffres en silence.
  • Les médias sont en 8 kHz. Les appels téléphoniques négocient du G.711, donc la reconnaissance vocale de l’agent voit de l’audio à bande étroite, que ça lui plaise ou non. Testez sur de l’audio téléphonique réel avant de régler quoi que ce soit d’autre ; le guide du G.711 couvre ce que le codec coupe.
  • Les appels navigateur sont un autre monde. WebRTC a son propre modèle agnostique à la signalisation, un chiffrement obligatoire et des tampons de gigue adaptatifs. Le guide WebRTC ou WebSocket cartographie les différences pour les agents vocaux qui vivent dans un navigateur plutôt que sur le réseau téléphonique.

Sur Cartesia, les Managed Agents acceptent les appels de votre propre trunk SIP en TCP ou TLS, avec le chiffrement des médias SRTP réglé sur disabled, allowed ou required, et authentifient les appels entrants avec des identifiants digest ou une liste d’IP autorisées. Les transferts partent en SIP REFER vers des numéros de téléphone ou des URI SIP. L’intégration trunk SIP (Anglais) explique comment faire pointer un opérateur vers le point de terminaison SIP de Cartesia, et le guide du trunk SIP couvre la configuration en entier, champs d’API et tableau des échecs inclus.

Guides liés

FAQ

Qu'est-ce que le protocole SIP ?

SIP, le Session Initiation Protocol, est le protocole de signalisation standard pour démarrer, modifier et terminer des sessions en temps réel sur les réseaux IP, le plus souvent des appels vocaux et vidéo. SIP ne transporte que la conversation autour de l'appel : qui appelle qui, quels codecs utiliser et quand raccrocher. L'audio, lui, circule séparément, en général sur RTP.

Que signifie SIP ?

SIP signifie Session Initiation Protocol. C'est un standard de l'IETF, publié d'abord comme RFC 2543 en 1999 puis révisé comme RFC 3261 en 2002, qui reste la référence qu'implémentent tous les téléphones SIP, PBX et opérateurs.

SIP et VoIP, est-ce la même chose ?

Non. La VoIP est le terme générique pour la voix transportée sur des réseaux IP, et SIP est l'un des protocoles de signalisation qu'elle regroupe. Presque tous les systèmes téléphoniques d'entreprise modernes utilisent SIP pour la signalisation, mais la VoIP peut aussi reposer sur des protocoles plus anciens comme H.323 ou, dans le navigateur, WebRTC.

Comment se déroule un appel SIP ?

L'appelant envoie une requête INVITE, le téléphone appelé sonne et répond par un 200 OK, l'appelant confirme par un ACK, et l'audio commence à circuler en paquets RTP. Chaque côté peut terminer l'appel par un BYE, que l'autre confirme par un 200 OK final.

Quel port SIP utilise-t-il ?

SIP écoute sur le port 5060 pour la signalisation UDP ou TCP non chiffrée, et sur le port 5061 pour SIP sur TLS. L'audio de l'appel emprunte des ports UDP distincts, négociés pour le RTP lors de l'établissement de l'appel et différents à chaque appel.

SIP est-il sécurisé ?

Il peut l'être, mais rien n'est chiffré dans SIP en clair. Les systèmes en production font passer SIP par TLS sur le port 5061, chiffrent l'audio avec SRTP et authentifient les expéditeurs avec des identifiants digest ou des listes d'IP autorisées. Un point de terminaison SIP ouvert sur l'internet public est repéré par des scanners en quelques minutes.