Protocoles de VoIP et Codecs Audio

La VoIP, comme chaque domaine en réseau, comporte son lot de protocoles. Certains servent à la signalisation, certains au transport de la voix, certains à la configuration des postes, etc…

A cela vient s’ajouter les codecs qui permettent de transformer la voix en données informatiques pour permettre le transport ou le stockage.

Dans cet article je vous propose un tour d’horizon des principaux protocoles et codecs existant.

 

1) Les protocoles en VoIP

 

Passons donc en revu les principaux protocoles que nous pouvons rencontrer en VoIP.

 

SIP – Session Initiation Protocol

 

Le protocole SIP – Session Initiation Protocol est un protocole de gestion de session de communication en multimédia.

Il est ouvert, standard et c’est le protocole principal utilisé pour la signalisation en VoIP.

Il est aussi utilisé en visiophonie, en messagerie instantanée, etc…

 

En VoIP c’est donc ce protocole qui permet la gestion des appels.

Par exemple, c’est grâce à SIP que le poste peut s’enregistrer auprès de l’IPBX.

C’est aussi grâce à SIP que le poste peut indiquer à l’IPBX quand l’utilisateur appui sur les touches du clavier.

Il permet aussi à l’IPBX de faire sonner un poste, de mettre en relation deux téléphones, et ainsi de suite.

C’est donc lui qui est au cœur de nos infrastructures de VoIP. Si vous devez retenir un protocole, c’est celui-ci.

 

Mais attention, ce n’est pas SIP qui permet le transport de la voix. Il ne sert qu’à la signalisation.

 

SIP se situe à la couche 7 du modèle OSI et utilise le port 5060 en UDP.

Il est indépendant des autres protocoles des couches inférieures.

 

SIP fonctionne de manière similaire à http.

Il réutilise de nombreux headers ainsi que des règles d’encodage et des codes de statut de http.

 

Voici une liste des principaux codes de statut :

  • 1xx : Information (180 : Sonnerie, 100 : Essaie, 181 : Transfert)
  • 2xx : Success (200 : OK, 202 : Accepté)
  • 3xx : Redirection
  • 4xx : Erreur Client (404 : non-trouvé, 401 : Non-autorisé, 408 : Timeout)
  • 5xx : Erreur serveur (500 : Erreur interne au serveur, 503 : service indisponible)
  • 6xx : Panne générale (600 : occupé)

 

Et voici une liste des requêtes de base :

  • INVITE : Permet au client de demander une nouvelle session
  • ACK : Permet l’acknowledgement
  • CANCEL : Permet l’annulation d’un INVITE en cours
  • BYE : Permet de terminer une session
  • REGISTER : Permet de s’enregistrer auprès de l’IPBX

 

Sur le réseau, chaque ressource SIP est identifiée par une URI de ce type : « sip:Username@Host:Port»

Par défaut le port est le 5060.

Exemple d’URI : sip:1516@sip-server.lan

 

H.323

 

H.323 est un regroupement de protocoles pour la communication de l’audio, de la vidéo et des données.

Il est dérivé du protocole H.320 utilisé sur les réseaux numériques.

Aujourd’hui H.323 est remplacé par SIP.

On peut découper H.323 en 3 catégories de protocoles :

  • Signalisation
  • Négociation de Codec
  • Transport d’information

 

Signalisation

Le but de la signalisation est le même qu’en SIP (voir précédemment).

Le protocole RAS – Registration Admission Status est utilisé pour l’enregistrement et l’authentification (par exemple, l’enregistrement des postes sur l’IPBX).

Le protocole Q.932 est utilisé pour l’initialisation et le contrôle des appels (appui de touche, lancement d’un appel, faire sonner un poste, etc…).

 

Négociation

Le but de la négociation de Codec est de choisir le Codec adéquat pour l’encodage de la voix ou de la vidéo. Nous verrons plus tard qu’il existe une série de codecs ayant chacun leurs propriétés.

Le protocole utilisé pour la négociation est H.245.

 

Transport

Enfin, le transport de l’information permet notamment de transporter la voix numérisée grâce aux codecs, sur le réseau.

C’est ici le protocole RTP qui est utilisé.

Le protocole RTCP peut aussi être utilisé pour contrôler la qualité et demander de renégocier les codecs si la bande passante disponible change.

 

H.323 a évolué au cours du temps à travers de nombreuses versions.

Aussi, en H.323 les messages sont encodés en format binaire, là ou SIP utilise un codage en ASCII.

 

Grâce à la grande flexibilité de SIP, ce dernier tend à remplacer H.323.

 

RTP – Real-time Transport Protocol

 

RTP est un protocole se plaçant au-dessus d’UDP, permettant le transport de données ayant des contraintes de temps réelles.

Il est principalement utilisé pour les flux audio et vidéo.

En VoIP nous l’utilisons donc avec SIP ou H.323 pour le transport de la voix.

 

RTP ajoute une entête spécifique à UDP pour plusieurs raisons.

Premièrement, il numérote les paquets, pour gérer les pertes et le dé-séquencement (c’est-à-dire les paquets qui arrivent dans le mauvais ordre).

Ensuite, il ajoute une information d’horloge pour gérer la gigue (c’est-à-dire la variation de latence entre plusieurs paquets).

Il permet aussi de spécifier le type de données transportées (audio, vidéo, image, texte, etc…).

Il y a encore d’autres informations complémentaires dans l’en-tête.

 

RTCP – Real-time Transport Control Protocol

 

En complément de RTP, nous pouvons utiliser RTCP pour contrôler la qualité de la transmission.

Il fonctionne aussi en UDP.

RTCP ne transporte pas l’information finale. Il est simplement utilisé en contrôle.

A l’aide de statistiques sur la transmission (paquet perdu, gigue, délai, etc…), il est possible d’estimer la qualité de service.

C’est grâce à RTCP que l’on peut renégocier le codec pour s’adapter à la bande passante nécessaire.

Les paquets de contrôle sont envoyés à tous les participants de la session.

 

IAX – Inter-Asterisk eXchange

 

IAX est un protocole qui s’intègre dans le projet Asterisk.

Asterisk est un IPBX open source basé sous Linux. Il permet la mise en place d’un system de téléphonie simple mais gratuit. Il n’offre pas autant de possibilité qu’une solution Cisco, mais il a l’avantage du prix.

Une section du site est destinée à Asterisk. Vous y trouverez toutes les informations nécessaires pour la mise en place d’un Asterisk.

http://www.networklab.fr/category/asterisk/

 

Revenons à IAX.

IAX est un protocole qui permet la communication entre un client et un serveur, ou entre deux serveurs Asterisk.

Il est principalement utilisé pour lier deux serveurs Asterisk (par exemple sur deux sites distants).

Nous appelons cela un Trunk. Dans ce Trunk pourront circuler plusieurs communications en simultané, et cela à travers une seule session IAX.

L’article suivant est dédié à l’interconnexion de deux Asterisk : http://www.networklab.fr/interconnexion-de-serveurs-asterisk/

 

IAX propose le transport de la signalisation et des données. Il fonctionne en UDP sur le port 4569.

Nous utilisons actuellement la version 2 d’IAX.

 

SCCP – Skinny Call Control Protocol

 

SCCP est un protocole de signalisation créé par Cisco.

Il a été créé au départ pour palier à la trop grande rigidité de H.323. En effet, H.323 posait problème pour la mise en place de certaines fonctionnalités.

SCCP étant propriétaire Cisco, nous le retrouvons sur beaucoup d’équipement Cisco.

Certains postes Cisco fonctionnent en SIP, certains en SCCP et certains proposent les deux.

Les postes récents tendent à délaisser SCCP au profit de SIP.

En général, si nous avons le choix entre SIP et SCCP, nous prenons SCCP pour des questions de compatibilité et de fonctionnalité.

SCCP a aussi l’avantage de n’utiliser que peu de bande passante.

SCCP fonctionne en TCP sur le port 2000.

Pour le transport des données, c’est RTP qui est utilisé.

 

CDP – Cisco Discovery Protocol et LLDP – Link Layer Discovery Protocol

 

Pour une explication de ces deux protocoles, je vous renvoie à l’article sur la configuration des switchs.

LIEN VERS L’ARTICLE

Simplement, CDP permet aux équipements Cisco de découvrir les équipements voisins prenant en charge CDP.

En VoIP, il permet au switch d’indiquer aux postes IP le Voice Vlan à utiliser.

CDP est propriétaire Cisco.

 

LLDP est un protocole standard visant à remplacer les protocoles tels que CDP.

Il permet aussi au switch d’indiquer le Voice Vlan.

 

UA – Universal Alcatel

 

Le protocole UA est utilisé par les IPBX Alcatel pour la signalisation.

 

UNISTIM – Unified Networks IP Stimulus

 

Le protocole UNISTIM est utilisé par les IPBX Nortel pour la signalisation.

 

Les Codecs

 

Tout d’abord, qu’est-ce qu’un Codec ?

Un codec est un algorithme capable de compresser un signal numérique. Le but est que ce signal soit moins lourd pour le transport ou le stockage.

En télécommunication, nous cherchons à compresser la voix et la vidéo.

Sur un réseau interne, nous avons en général beaucoup de bande passante à disposition. A moins de passer beaucoup d’appels simultanés, nous n’aurons pas de problème.

En revanche, sur notre ligne internet nous avons une bande passante plus faible. Même avec quelques appels simultanés nous pouvons avoir des problèmes.

 

Il existe de très nombreux codecs, qui ont chacun leurs caractéristiques telles que :

  • Taux de compression
  • Vitesse de compression
  • Vitesse de décompression
  • Consommation CPU / mémoire
  • Qualité du signal de sortie
  • Etc…

Nous devrons donc faire notre choix parmi les codecs existants, tout en tenant compte des attributs de chaque codec.

En règle générale, nous utilisons des codecs à compression légère en interne et des codecs à forte compressions pour les appels transitant sur le WAN.

 

Voici une liste non exhaustive des codecs disponibles pour la voix en VoIP.

CCNAV - S1.5 - Image-1

Pour G.711, il existe les Lois A et µ (A-law et µ-law). La loi A est principalement utilisée en Europe et en Afrique, alors que la loi µ est principalement utilisée aux USA et au Japon.

Les deux sont très proches.

 

Le champ MOS – Mean Opinion Score est une note sur la qualité du signal après passage dans le codec. La note va de 1 à 5. Au dela de 4 il est presque impossible de faire la distinction avec un signal non-compressé.

 

Dans la pratique nous utilisons principalement G.711 et G.729. G.711 en interne et sinon G.729.

 

 

Tagués avec : , , , , , , ,
Publié dans La Téléphonie

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Le temps imparti est dépassé. Merci de saisir de nouveau le CAPTCHA.