A propos | Laboratoire | Voisinage | Meilleurs articles | Nous aider | Forums

Panoramisk / Le druide de la VoIP 

Annonce

On peut être passionné par la téléphonie et prendre soin de soi : "Faites du sport, faites du vélo" est la devise du site d'e-commerce lancé par l'un des auteurs de Panoramisk : bikeo. Si vous faites du vélo, que ce soit en ville, sur la route ou sur les chemins plus accidentés, n'hésitez pas à aller faire un petit tour sur www.bikeo.fr pour vos prochains achats verts.
En plus leur plate-forme de téléphonie utilise Asterisk, comme quoi on peut la convergence est une réalité.

Enregistrement de client SIP: REGISTER

La phase d’enregistrement dans le modèle SIP est optionnelle, on peut initier des sessions avec un tiers sans pour autant s’enregistrer dans un annuaire, néanmoins dans certains cas cette phase est indispensable. Cet article est consacré au registrar et au fonctionnement de l’enregistrement avec comme support Asterisk.

Introduction

SIP est un protocole d’initiation et de gestion de session multimédia. Nous l’utilisons principalement aujourd’hui pour passer des appels téléphoniques, mais ses possibilités sont bien plus larges. Mais avant de pouvoir initier une session il est nécessaire de savoir comment joindre son correspondant. Cette fonction est assurée par le proxy qui va, après consultation d’un annuaire, être capable de mettre en correspondance les membres de la session.

Le proxy fait donc appel à une mémoire qui contient une correspondance entre les utilisateurs du réseau SIP, dans la terminologie des UA (User Agent), et leur localisation géographique, des informations IP. Chaque UA est hébergé sur une machine IP (par exemple un téléphone) et communique en SIP et en RTP sur des ports UDP ou TCP spécifiques, ces informations doivent donc être disponibles au proxy afin qu’il mette en relation les UA.

C’est le rôle du registrar que de collecter les informations de localisation des UA afin de les mettre à disposition des autres composants du modèle SIP, en particulier le proxy. Les informations initiales n’étant connues que du client (l’UAC), il est nécessaire de mettre en place une communication avec le registrar permettant de les échanger. Cette phase est effectuée très tôt, idéalement au démarrage de l’équipement client (UA) et régulièrement afin de supprimer les entrées dans la base du registrar qui ne seraient plus valides, en général toutes les heures.

La phase d’enregistrement d’un UA utilise la méthode REGISTER du protocole SIP.

Paramètres

Les informations permettant a chaque UA de joindre le serveur registrar doivent être disponibles au niveau de l’UA. Soit ces informations sont enregistrées dans la configuration de l’UA, par exemple via l’interface d’administration du téléphone ou un fichier de configuration téléchargé lors du démarrage. Soit ces informations sont obtenues via le service DNS. Pour plus d’information sur cette phase, veuillez vous référer à l’article “Enregistrement SIP et DNS SRV”.

Fonctionnement

Voici un exemple de message d’enregistrement entre un téléphone (192.168.16.181) et un Asterisk (qui joue ici le rôle de registrar, 192.168.16.40), la trace est prise avec un Wireshark et affichée ici en mode texte:

Session Initiation Protocol
    Request-Line: REGISTER sip:192.168.16.40 SIP/2.0
        Method: REGISTER
        [Resent Packet: False]
    Message Header
        Via: SIP/2.0/UDP 192.168.16.181:32262;branch=z9hG4bK-d87543-624dc77d9c1b9618-1--d87543-;rport
        Max-Forwards: 70
        Contact: <sip:11@192.168.16.181:32262;rinstance=9dd2c78e6ac0a5a5>
        To: "soft 2"<sip:11@192.168.16.40>
        From: "soft 2"<sip:11@192.168.16.40>;tag=394aa21c
        Call-ID: YjYzYTAyNzM0NGVkYmEzZWMyMzJmNzMzNDZjMzIyMjg.
        CSeq: 1 REGISTER
        Expires: 3600
        Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO
        User-Agent: X-Lite release 1011s stamp 41150
        Content-Length: 0

Les informations principales de l’échange d’enregistrement sont:

  • la méthode utilisée: REGISTER
  • les informations de l’UA contenues dans le champ Contact, principalement l’URI 11@192.168.16.181:32262 dans lequel on trouve l’identifiant du téléphone (11), son adresse IP (192.168.16.181) et le numéro de port sur lequel l’UAS écoute (32262). Vous remarquerez ici que le numéro de port utilisé n’est pas celui de SIP par défaut (5060), il n’y a en effet aucune obligation à utiliser ce numéro, c’est d’ailleurs un des intérêt de l’enregistrement dynamique.

La réponse du registrar doit être de type 200 OK pour valider l’enregistrement, voici le contenu du paquet en retour de notre Asterisk:

Session Initiation Protocol
    Status-Line: SIP/2.0 200 OK
        Status-Code: 200
        [Resent Packet: False]
    Message Header
        Via: SIP/2.0/UDP 192.168.16.181:32262;branch=z9hG4bK-d87543-624dc77d9c1b9618-1--d87543-;received=192.168.16.181;rport=32262
        From: "soft 2"<sip:11@192.168.16.40>;tag=394aa21c
        To: "soft 2"<sip:11@192.168.16.40>;tag=as22b3d595
        Call-ID: YjYzYTAyNzM0NGVkYmEzZWMyMzJmNzMzNDZjMzIyMjg.
        CSeq: 1 REGISTER
        User-Agent: Asterisk PBX
        Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
        Supported: replaces
        Expires: 3600
        Contact: <sip:11@192.168.16.181:32262;rinstance=9dd2c78e6ac0a5a5>;expires=3600
        Date: Sun, 07 Oct 2007 13:00:11 GMT
        Content-Length: 0

On trouve dans cette réponse:

  • la réponse: OK
  • le contact bien pris en compte, identique à ce qui est proposé
  • le Call-Id est similaire à celui de l’envoi, cela permet de s’y retrouver dans la session

Vérification

Une fois que l’enregistrement est effectué, la fonction registrar doit être capable de fournir la liste des UA enregistrés avec leurs coordonnées. Dans Asterisk la commande sip show peers permet d’obtenir ces informations et de valider ainsi que l’UA est bien enregistré:

asterisk41*CLI> sip show peers
Name/username              Host            Dyn Nat ACL Port     Status
11/11                      192.168.16.181   D          32262    OK (3 ms)

Sur cet affichage on obtient bien l’identifiant de l’UA, son adresse IP ainsi que le port UDP (ici Asterisk ne spécifie pas que c’est de l’UDP étant donné qu’il ne sait pas travailler en TCP, c’est une autre histoire), ainsi que le statut, en l’occurrence le délai entre l’UA et Asterisk.

Diagnostique

Il peut arriver qu’un UA ne parvienne pas à s’enregistrer, par exemple ses informations de connexion ne sont pas bonnes, ou il n’est pas autorisé par le registrar, dans Asterisk il doit y avoir une entrée dans sip.conf par exemple1. S’il on souhaite diagnostiquer pourquoi un UA (un téléphone par exemple) ne parvient pas à s’enregistrer, il est possible d’utiliser le mode debug d’Asterisk, on spécifie alors l’adresse IP de l’UA en question afin de limiter l’affichage, déjà assez verbeux. On pourra également utiliser un analyseur de protocole si on a accès à la couche réseau intermédiaire.

Voici une trace prise sur Asterisk d’une phase erronée d’enregistrement d’un UA:

asterisk41*CLI> sip set debug ip 192.168.16.181
<--- SIP read from 192.168.16.181:38192 --->
REGISTER sip:192.168.16.40 SIP/2.0
Via: SIP/2.0/UDP 192.168.16.181:38192;branch=z9hG4bK-d87543-2365443e5f277647-1–d87543-;rport
Max-Forwards: 70
Contact: <sip:pas_correct@192.168.16.181:38192;rinstance=b4480613d7542907>
To: “soft 2″<sip:pas_correct@192.168.16.40>
From: “soft 2″<sip:pas_correct@192.168.16.40>;tag=e474c93c
Call-ID: OTkwODU3ZjUwNjAyYmU4ZTk2OWM2MTdmYjE3ZTk3MGU.
CSeq: 1 REGISTER
Expires: 3600
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO
User-Agent: X-Lite release 1011s stamp 41150
Content-Length: 0

<— Transmitting (NAT) to 192.168.16.181:38192 —>
SIP/2.0 404 Not found
Via: SIP/2.0/UDP 192.168.16.181:38192;branch=z9hG4bK-d87543-2365443e5f277647-1–d87543-;received=192.168.16.181;rport=38192
From: “soft 2″<sip:pas_correct@192.168.16.40>;tag=e474c93c
To: “soft 2″<sip:pas_correct@192.168.16.40>;tag=as4f1da0ea
Call-ID: OTkwODU3ZjUwNjAyYmU4ZTk2OWM2MTdmYjE3ZTk3MGU.
CSeq: 1 REGISTER
User-Agent: Asterisk PBX
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
Supported: replaces
Content-Length: 0

Asterisk reçoit un message REGISTER, mais le contact proposé (pas_correct) n’est pas renseigné dans sip.conf, donc Asterisk retourne un message 404 not found2.

Conclusion

La méthode REGISTER du protocole SIP est utilisée pour l’enregistrement des équipements (UA) mobiles, principalement ceux obtenant leur adresse IP via un protocole dynamique comme DHCP. En règle générale on l’utilise pour les téléphones, mais également pour s’interconnecter avec un Centrex IP, ceci permettant à ce dernier de ne pas alourdir sa gestion du routage d’appel et d’autoriser ses clients à choisir leur opérateur Internet sans contrainte.

On n’utilisera pas le REGISTER lorsque l’on route les sessions SIP vers des destinations connues (adresse IP et port UDP ou TCP), c’est souvent le cas pour les faisceaux entre PBX d’une même organisation et pour les passerelles et autres SBC3.

Asterisk implémente la fonction registrar au sens SIP du terme, mais en tant qu’UA sait également s’enregistrer auprès d’un registrar externe. Dans le premier cas il faudra définir l’UA client dans le fichier sip.conf, dans le second cas on utilisera la syntaxe register => dans le fichier sip.conf.


  1. dans le cas où les UA sont tous identifiés []
  2. on remarque ici que le code retourné est similaire à celui retourné à un navigateur Internet accédant une page inconnue du serveur web []
  3. Session Border Controller []
Posté par: Alexandre Chauvin-Hameau, le 10/10/2007
Trackback | Popularité: 62%
marqué , , , , , , , , et
AddThis Social Bookmark Button
UselessNothing newInformativeLearned a lotAmazingly helpful
Loading ... Loading ...

Voir aussi

Et pourquoi pas

Laisser un commentaire En discuter dans le forum

© 2008 Panoramisk | Creative Commons License wordpress logo