II.4.1.1 ARCHITECTURE DE SIP8
Contrairement à H.323, largement fondé sur une
architecture physique, le protocole SIP s'appuie sur une architecture purement
logicielle.
L'architecture de SIP s'articule principalement autour des cinq
entités suivantes :
V' terminal utilisateur ; V' serveur d'enregistrement ; V'
serveur de localisation ; V' serveur de redirection ; V' serveur proxy.
8Laurent OUAKIL, GUY PUJOLLE,
Téléphonie sur IP, Eyrolles, Paris, 2008
45
La figure II.5 illustre de façon
générique les communications entre ces éléments. Un
seul terminal étant présent sur cette figure, aucune
communication n'est possible. Nous nous intéressons en fait ici aux
seuls échanges entre le terminal et les services que ce dernier est
susceptible d'utiliser lors de ses communications.

Figure II.5 : Architecture du protocole SIP
On peut schématiquement observer qu'il existe deux
catégories de services:
L'un fourni au niveau de l'utilisateur (par le terminal),
l'autre fourni au niveau des serveurs du réseau. Ces derniers sont
répartis en deux classes : les serveurs de redirection et proxy, qui
facilitent le routage des messages de signalisation et jouent le rôle
d'intermédiaires, et les serveurs de localisation et d'enregistrement,
qui ont pour fonction d'enregistrer ou de déterminer la localisation des
abonnés du réseau.
a) Terminal
Le terminal est l'élément dont dispose
l'utilisateur pour appeler et être appelé. Il doit donc permettre
de composer des numéros de téléphone. Il peut se
présenter sous la forme d'un composant matériel (un
téléphone) ou d'un composant logiciel (un programme lancé
à partir d'un ordinateur).
46
Le terminal est appelé UA (User Agent), est
constitué de deux sous-entités, comme illustré à la
figure II.6 :

Figure II.6 : Communication entre UAC et UAS
V' la partie cliente, appelée UAC (User Agent Client),
chargée d'émettre les requêtes, initie un appel ;
V' la partie serveur, appelée UAS (User Agent Server),
est en écoute, reçoit et traite les requêtes, répond
à un appel.
L'association des requêtes et des réponses entre
deux entités de type UA constitue un dialogue.
Par analogie, on peut remarquer que la même chose se
produit avec le protocole HTTP dans une application Web : un utilisateur
exploite son navigateur comme client pour envoyer des requêtes et
contacter une machine serveur, laquelle répond aux requêtes du
client. La différence essentielle par rapport aux applications standards
utilisant HTTP est qu'en téléphonie un terminal doit être
à la fois utilisé pour joindre un interlocuteur et pour appeler.
Chaque terminal possède donc la double fonctionnalité de client
et de serveur.
Lors de l'initialisation d'un appel, l'appelant exploite la
fonctionnalité client de son terminal (UAC), tandis que celui qui
reçoit la communication exploite sa fonctionnalité de serveur
(UAS).
La communication peut être clôturée
indifféremment par l'User Agent Client ou l'User Agent Server.
De nombreuses implémentations de clients SIP sont
disponibles sur les plates-formes les plus courantes, Windows, Linux ou Mac.
Elles sont le plus souvent gratuites, sous licence GPL.
Parmi les clients SIP les plus réputés, citons
notamment les suivants :
V' X-Lite Free;
V' 3CX Phone Free;
V' Phone Gaim; V' Wengo.
47
Ces clients SIP disposent de diverses fonctionnalités
améliorées. En choisir un est souvent affaire de goût,
selon l'ergonomie du logiciel et les caractéristiques souhaitées
(support d'un codec particulier, support de la messagerie instantanée,
etc.).
b) Serveur d'enregistrement
Deux terminaux peuvent communiquer entre eux sans passer par
un serveur d'enregistrement, à condition que l'appelant connaisse
l'adresse IP de l'appelé. Cette contrainte est fastidieuse, car un
utilisateur peut être mobile et donc ne pas avoir d'adresse IP fixe, par
exemple s'il se déplace avec son terminal ou s'il se connecte avec la
même identité à son lieu de travail et à son
domicile. En outre, l'adresse IP peut être fournie de manière
dynamique par un serveur DHCP.
Le serveur d'enregistrement (Register Server) offre un moyen
de localiser un correspondant avec souplesse, tout en gérant la
mobilité de l'utilisateur. Il peut en outre supporter l'authentification
des abonnés.
Dans la pratique, lors de l'activation d'un terminal dans un
réseau, la première action initiée par celui-ci consiste
à transmettre une requête d'enregistrement auprès du
serveur d'enregistrement afin de lui indiquer sa présence et sa position
de localisation courante dans le réseau. C'est la requête
REGISTER, que nous détaillons plus loin, que l'utilisateur envoie
à destination du serveur d'enregistrement. Celui-ci sauvegarde cette
position en l'enregistrant auprès du serveur de localisation.
L'enregistrement d'un utilisateur est constitué par
l'association de son identifiant et de son adresse IP. Un utilisateur peut
s'enregistrer sur plusieurs serveurs d'enregistrement en même temps. Dans
ce cas, il est joignable simultanément sur l'ensemble des positions
qu'il a renseignées.
c) Serveur de localisation
Le serveur de localisation (Location Server) joue un
rôle complémentaire par rapport au serveur d'enregistrement en
permettant la localisation de l'abonné.
Ce serveur contient la base de données de l'ensemble
des abonnés qu'il gère. Cette base est renseignée par le
serveur d'enregistrement. Chaque fois qu'un utilisateur s'enregistre
auprès du serveur d'enregistrement, ce dernier en informe le serveur de
localisation.
Presque toujours, le serveur de localisation et le serveur
d'enregistrement sont implémentés au sein d'une même
entité. On parle alors souvent non pas de serveur de localisation, mais
de service de localisation d'un serveur d'enregistrement, tant que ces
fonctionnalités sont proches et dépendantes.
Les serveurs de localisation peuvent être collaboratifs.
Le fonctionnement d'un serveur d'enregistrement est analogue à celui
d'un serveur DNS dans le monde Internet : pour joindre un site Internet dont on
ne connaît que le nom, il faut utiliser un serveur DNS, qui effectue la
conversion (on parle de résolution) du nom en adresse IP. Ce serveur a
connaissance d'une multitude d'adresses, qu'il peut résoudre parce
qu'elles appartiennent à son domaine ou qu'il a la capacité
d'apprendre dynamiquement en fonction des
48
échanges qu'il voit passer. Dès qu'un nom lui
est inconnu, il fait appel à un autre DNS, plus important ou dont le
domaine est plus adéquat. De la même manière, les serveurs
de localisation prennent en charge un ou plusieurs domaines et se
complètent les uns les autres.
d) Serveur de redirection
Le serveur de redirection (Redirect Server) agit comme un
intermédiaire entre le terminal client et le serveur de localisation. Il
est sollicité par le terminal client pour contacter le serveur de
localisation afin de déterminer la position courante d'un
utilisateur.
L'appelant envoie une requête de localisation d'un
correspondant (il s'agit en réalité d'un message d'invitation,
qui est interprété comme une requête de localisation) au
serveur de redirection. Celui-ci joint le serveur de localisation afin
d'effectuer la requête de localisation du correspondant à joindre.
Le serveur de localisation répond au serveur de redirection, lequel
informe l'appelant en lui fournissant la localisation trouvée. Ainsi,
l'utilisateur n'a pas besoin de connaître l'adresse du serveur de
localisation.
e) Serveur proxy
Le serveur proxy (parfois appelé serveur mandataire)
permet d'initier une communication à la place de l'appelant. Il joue le
rôle d'intermédiaire entre les terminaux des interlocuteurs et
agit pour le compte de ces derniers.
Le serveur proxy remplit les différentes fonctions
suivantes :
V' localiser un correspondant ;
V' réaliser éventuellement certains traitements sur
les requêtes ;
V' initier, maintenir et terminer une session vers un
correspondant.
Lorsqu'un utilisateur demande à un serveur proxy de
localiser un correspondant, ce dernier effectue la recherche, mais au lieu de
retourner le résultat au demandeur (comme le ferait un serveur de
redirection), il utilise cette réponse pour effectuer lui-même
l'initialisation de la communication en invitant le correspondant à
ouvrir une session.
Bien que fournissant le même type de service de
localisation qu'un serveur de redirection, un serveur proxy va donc plus loin
que la simple localisation, en initiant la mise en relation des correspondants
de façon transparente pour le client. Il peut acheminer tous les
messages de signalisation des terminaux, de l'initialisation de la
communication à sa terminaison, en passant par sa modification. En
contrepartie, le serveur proxy est une entité beaucoup plus
sollicitée que le serveur de redirection, et donc plus lourde.
Chaque terminal peut et devrait en principe disposer d'un tel
serveur sur lequel se reposer pour interpréter, adapter et relayer les
requêtes. En effet, le serveur proxy peut reformuler une requête du
terminal UAC afin de la rendre compréhensible par le serveur auquel
s'adresse l'UAC. Cela accroît la souplesse d'utilisation du terminal et
simplifie son usage.
49
Les serveurs proxy jouent aussi un rôle collaboratif,
puisque les requêtes qu'ils véhiculent peuvent transiter d'un
serveur proxy à un autre, jusqu'à atteindre le destinataire.
Notons que le serveur proxy ne fait jamais transiter de données
multimédias et qu'il ne traite que les messages SIP.
Le proxy est une entité très souvent
utilisée dans la pratique. Par analogie avec l'architecture
illustrée à la figure II.7, symbolisant l'organisation des
communications, on parle souvent du trapèze SIP pour désigner
l'ensemble formé par ces quatre entités.

Figure II.7 : Trapèze SIP
On distingue deux types de serveurs proxy, à savoir :
V' Proxy statefull, qui maintient pendant toute la
durée des sessions l'état des connexions.
V' Proxy stateless, qui achemine les messages
indépendamment les uns des autres, sans sauvegarder l'état des
connexions.
Les proxys stateless sont plus rapides et plus légers
que les proxys statefull, mais ils ne disposent pas des mêmes
capacités de traitement sur les sessions.
|