Dimitri LEMBOKOLO 1 I. Partie I : Présentation de la Voix sur IP Définition de la VoIP Les protocoles utilisés par la VoIP Partie II : Présentation d’Asterisk Qu’est-ce que asterisk Installation d’asterisk Configuration d’asterisk Mise en place de la boite vocale ; Accéder à la boite vocale ; Musique d’attende ; La conférence téléphonique. Partie III : Etude avec deux serveurs Asterisk Trunk SIP Réalisation Configuration de trunk SIP Description horaire Trunk IAX Partie IV : Trunk entre CME et Asterisk Introduction Prérequis Composants d’occasion Le protocole SIP CME SIP Trunk Relais DMTF pour les Trunk SIP Codecs et transcodages Mise en oeuvre Conclusion
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Dimitri LEMBOKOLO
1
I. Partie I : Présentation de la Voix sur IP
Définition de la VoIP
Les protocoles utilisés par la VoIP
Partie II : Présentation d’Asterisk
Qu’est-ce que asterisk
Installation d’asterisk
Configuration d’asterisk
Mise en place de la boite vocale ;
Accéder à la boite vocale ;
Musique d’attende ;
La conférence téléphonique.
Partie III : Etude avec deux serveurs Asterisk
Trunk SIP
Réalisation
Configuration de trunk SIP
Description horaire
Trunk IAX
Partie IV : Trunk entre CME et Asterisk
Introduction
Prérequis
Composants d’occasion
Le protocole SIP
CME SIP Trunk
Relais DMTF pour les Trunk SIP
Codecs et transcodages
Mise en oeuvre
Conclusion
Dimitri LEMBOKOLO
2
I. Présentation de la Voix sur IP
1. Définition de la VoIP
La Voix sur IP ou VoIP (Voice Over Internet Protocol) est le transport de la voix sous forme de
paquets IP. On parle également de Téléphonie sur IP (ToIP).
Principe de fonctionnement :
La voix qui est un signal analogique est d’abord échantillonnée. C’est ce qu’on appelle la
numérisation de la voix. Puis, le signal numérique est compressé en utilisant des codecs. En
téléphonie classique, la bande passante est de 64 kbps (codec G711). Le codec G729, par exemple, a
une bande passante de 8 kbps. Certains mécanismes permettent de réduire la bande passante
nécessaire en détectant les silences lors d’une conversation.
Contrairement à la téléphonie traditionnelle qui utilise la commutation de circuits, le transport de la
voix sur IP est à commutation de paquets. La voix est transformée en paquets qui vont transiter sur le
réseau en utilisant le protocole UDP. UDP est un protocole de transport qui procure de meilleurs
délais d’envoi des paquets que TCP car il n’utilise pas de contrôle de réception (pas d’acquittement).
Le protocole RTP (Real Time Protocol) est utilisé pour les flux temps réel encapsulés dans des
paquets UDP. RTP permet que la perte de quelques paquets voix soit compensée par des algorithmes
de correction d’erreur.
La VoIP implique des contraintes sur les performances du réseau telles que :
Le délai de latence (RTD = Round Trip Delay) : c’est le temps que met un paquet IP pour
traverser le réseau. (Valeur acceptable : inférieur ou égal à 200 ms)
La gigue (ou Jitter): c’est la variation du délai de latence. (Valeur acceptable : inférieur ou égal
à 75 ms)
Le taux de perte de paquets : parfois, certains datagrammes UDP sont détruits (surtout à cause
de l’engorgement du réseau). Pour qu’une conversation soit compréhensible, la dégradation du
signal voix ne doit pas dépasser un certain seuil. (valeur acceptable : inférieur ou égal à 3%)
Dans un réseau, la qualité de service (QoS) va permettre d’accorder une priorité aux flux voix par
rapport aux flux datas.
Le phénomène d’écho va également dégrader la qualité de la conversation téléphonique. Il est dû à
des raisons techniques.
Un problème de l’utilisation de la ToIP se pose lors de l’appel vers les numéros d’urgence. En effet,
l’adresse IP est indépendante de la localisation géographique de l’utilisateur. Dans le cas de la
téléphonie traditionnelle, l’appel sera envoyé vers le service d’urgence le plus proche car l’usager
aura été localisé.
Dimitri LEMBOKOLO
3
2. Les protocoles utilisés pour la VoIP
Un protocole de signalisation est un protocole de la couche 5 (Session) du modèle OSI. Il gère une
communication téléphonique IP ainsi :
1) L’appelant indique les coordonnées de la personne qu’il veut joindre (composition du numéro)
2) Indication au correspondant d’un appel (le téléphone du correspondant sonne)
3) Acceptation de l’appel par le correspondant (le correspondant décroche)
4) Information aux tiers cherchant à joindre les deux interlocuteurs de leur indisponibilité (occupé)
5) Fin de la communication et disponibilité des lignes (raccroché)
Les principaux protocoles utilisés pour l'établissement de connexions en voix sur IP sont :
H.323 ;
SIP ;
MGCP ;
IAX (Asterisk);
H.323
H.323 a été élaboré par l’UIT (Union Internationale des Télécommunications) en 1996. Il est donc
issu du monde des télécoms.
Cette norme est pénalisée par sa complexité et son manque d’évolutivité pour l’ouverture vers les
systèmes d’information.
SIP
SIP (Session Initiation Protocol) est un protocole qui a été normalisé par l’IETF (Internet Engineering
Task Force) en 1999. Il est issu du monde de l’internet. Il se charge de l’authentification et de la
localisation des participants. Mais il ne transporte pas de données.
SIP remplace progressivement H.323 car il est plus souple et plus évolutif.
Fonctionnement de SIP :
SIP est un protocole de type requête/réponse comme http. Une adresse SIP se présente sous cette
100 est le numéro d’extension SIP et 192.168.1.130 l’adresse IP du serveur SIP.
Les utilisateurs (clients SIP) vont s’enregistrer auprès de serveurs proxy.
Schéma
1- Le Softphone A s'inscrit dans le proxy SIP il effectue une demande d'appel auprès de ce proxy
SIP Le proxy SIP transfère la demande au téléphone SIP B.
2- Le téléphone SIP B sonne et demande à l'utilisateur s'il souhaite répondre. La réponse positive
(200 OK) part alors vers le proxy et arrive sur le softphone A pour lui indiquer que l'appel est
accepté.
3- Le softphone A renvoie directement au téléphone B un accusé de réception (ACK), et la
communication est engagée.
MGCP (Media Gateway Control Protocol)
MGCP est implémenté dans les solutions de passerelle entre le monde de l’IP et le monde des télécoms. Il est complémentaire à H.323 et SIP. Il est surtout utilisé par les FAI (Fournisseur d’accès à Internet)
IAX (Inter-Asterisk eXchange)
L’IAX est un protocole de voix sur IP spécifique à Asterisk.
Il permet la communication entre un client et serveur Asterisk ainsi qu’entre deux serveurs Asterisk.
Il a été conçu pour la transmission de flux multimédia avec un débit plus faible (notamment pour la
voix). Par exemple, avec le codec de compression G.729 et en utilisant l’IAX, on peut « faire passer »
103 appels à travers 1 Mbits de bande passante.
Au lieu d’utiliser RTP (Real Time Protocol), IAX utilise UDP (User Datagram Protocol) et un seul
port (le port 5036 pour IAX1 et le port 4569 pour IAX2).
Contrairement à SIP, le protocole IAX2 peut s’implémenter simplement derrière un NAT et traverse
facilement les firewalls.
Il envoie constamment des requêtes pour savoir si la ligne est active.
IAX2 est à apparu longtemps après SIP qui s’est vite avéré être le protocole de référence par les
constructeurs et les fournisseurs de services VoIP. Avant le protocole SIP, il s’agissait du protocole
H323 qui était le plus utilisé.
Ce succès grandissant de IAX2 n’est cependant pas vraiment une menace pour SIP de la manière que
SIP l’a été pour H323. SIP est bien installé, mais nul doute qu‟IAX2 va s’imposer comme une
véritable alternative.
II. Présentation d’Asterisk
1. Qu’est-ce qu’Asterisk ?
Dimitri LEMBOKOLO
5
Asterisk est un logiciel qui, installé sur un PC, fait office de PABX.
C’est un logiciel libre (Open Source), publié sous licence GPL et crée par Mark Spencer de la société
Digium. Il tourne sur Linux, BSD et Mac OS X.
Les caractéristiques Asterisk offre tous les services de téléphonie « classiques » d’un PBX ainsi que des fonctions avancées :
Boîte vocale (avis par courriel de réception d’un message vocal, voyant indicateur de message en attente…) ;
Conférence téléphonique ;
Serveur vocal interactif ;
Applications CTI (ex : possibilité de composer un numéro de téléphone à partir du carnet d’adresses d’Outlook) ;
Visiophonie ;
Rapport détaillé sur les appels
Protocoles et codecs
Asterisk effectue une interconnexion transparente entre les divers protocoles voix sur IP et
l'équipement de téléphonie traditionnel. De plus, Asterisk effectue le transfert des appels d'un système
à un autre au moyen du protocole IAX.
Protocole IAX (Inter-Asterisk eXchange)
H.323
Protocole SIP (Session Initiation Protocol)
Protocole MGCP (Media Gateway Control Protocol)
Fonctionne avec les systèmes de téléphonie traditionnels
Signalisation RBS (Robbed-bit Signaling)
FXS et FXO
Prise par bouclage
Déclenchement par la terre
Kew start
Émission-réception (E&M)
Signalisation d'émission-réception (E&M Wink)
Groupe de caractéristiques D
Protocoles PRI
4ESS
Lucent 5E
DMS100
National ISDN2
EuroISDN
BRI (ISDN4Linux)
Codecs :
Système GSM
Dimitri LEMBOKOLO
6
G.729 (sur l'achat de licences)
G.723.1 (fonction émulation)
Linéaire
Mu-Law
A-Law
ADPCM
G.726
ILBC
LPC-10
MP3 (décodage seulement)
2. Installer Asterisk
Nous allons marcher à travers l'installation d'Asterisk à partir du code source. Beaucoup de gens
répugnent à cette méthode, affirmant qu'il est trop difficile et de longue haleine. Notre objectif ici
est de démontrer que l'installation d'Asterisk à partir des sources n'est pas réellement si difficile à
faire. Plus important encore, nous voulons vous offrir la meilleure plate-forme Asterisk sur lequel
mkdir -p ~/src/asterisk-complete/asterisk cd ~/src/asterisk-complete/asterisk
idem pour Libpri et Dahdi et asterisk add-ons
Outre l’installation à partir des paquets tar.gz, on peut aussi installer asterisk par commande.
commandes:
#yum install Asterisk
Manuellement:
# cd ../libpri-1.4.x
# make; make install
#cd …/asterisk-1.4.x
#tar -xvzf <nom_du_paquet>
#./configure
#make menuselect
#make
#make install &&make samples
Présentation de l’installation d’asterisk add-ons
# cd …/asterisk-addons-1.4.x
#. /configure
#make
#make install
3. Configuration d’Asterisk
Nous avons installé la version 1.4 d’Asterisk sur une Fedora 11 et Linux Mint 12 (pour le serveur
secondaire d’Asterisk).
Nous allons maintenant faire la configuration d’Asterisk. L'ensemble des fichiers de configuration se
trouve dans le dossier /etc/asterisk/
# cd /etc/asterisk/
La configuration nécessite la compréhension du principe de routage. Chaque extension est manipulée
depuis sa source (une ligne analogique ou numérique, un téléphone IP ou un softphone, l’appel en
provenance d‟un autre PABX) vers une destination via des règles de routage qui s’enchaînent. On
regroupe les règles dans des contextes permettant de séparer les utilisateurs, les usages ou les sources.
La configuration de base comporte au minimum les fichiers asterisk.conf et extensions.conf. Les
Dimitri LEMBOKOLO
8
sources sont dans différents fichiers en fonction de leur type: mgcp.conf, iax.conf, sip.conf
(protocoles) ou encore zapata.conf (matériel).
asterisk.conf
Par défaut on positionne certains chemins de base au fonctionnement du moteur asterisk, la présence
de ce fichier n’est pas obligatoire, mais voici un exemple de contenu:
sip.conf
Le fichier sip.conf, va définir l'ensemble de nos utilisateurs. Pour connaitre l'ensemble des fonctions utilisables, rendez-vous sur le site http://www.asteriskguru.com/tutorials/ et également sur le site http://www.voip-info.org/
Nous éditons le fichier sip.conf (avec vim, par exemple). A la fin du fichier nous allons créer deux utilisateurs ainsi :
[general]
Port=5060
Dimitri LEMBOKOLO
9
Port=5060 => port sur lequel Asterisk écoute pour recevoir les connexions SIP
username=dimi => si Asterisk agit entre un client SIP et un serveur SIP distant, ce champ est utilisé
pour authentifier le message INVITE envoyé par Asterisk au serveur
Type=friend => il existe 3 types d’utilisateurs :
user = peut appeler mais ne peut pas recevoir d’appel
peer = peut recevoir des appels
friend = peut appeler et recevoir des appels
secret= passer => définit le mot de passe de l’utilisateur
host=dynamic => permet de se connecter avec cet utilisateur depuis n'importe quelle adresse IP.
context=brazza => l'option "context" sera ensuite utilisée dans le fichier extensions.conf, lorsque
l'utilisateur émet un appel, il rentrera dans la zone "brazza", qu'on définira plus tard.
language=fr => permet d'utiliser les fichiers audio français.
callerid=”dimi” <1000> => permet d’afficher le nom de l’appelant sur le poste appelé
mailbox=10 => numéro de la boîte vocale associée
extensions.conf
Le fichier extensions.conf permet de définir les règles de routage c’est-à-dire les actions à faire lors
d'un appel sur un numéro de téléphone.
Dans le contexte brazza, nous définissons comment joindre les différents postes. Chaque extension de
Dimitri LEMBOKOLO
10
notre plan de numérotation interne va être interprété et acheminé vers des liens physiques (IAX ou
SIP dans notre cas).
Ajout d'extension
[brazza]
exten => 1000,1,Dial(SIP/dimi)
exten => 1001,1,Dial(SIP/crea)
Transfert d'appel
On utilise la fonction tTr. Par exemple:
exten => 1000,1,Dial(SIP/dimi,tTr)
exten => 1001,1,Dial(SIP/crea,tTr)
Le t permet à l’appelé de transférer l’appel et le T permet à l’appelant de transférer l’appel.
Les commandes utilisées pour la définition des extensions ont la forme suivante :