Asterisk, le futur de la téléphonie? Actuellement, tout le monde entend un peu parler de la VoIP (Voice over IP) ou de la ToIP (Telephony over IP), au moins à travers les nombreuses publicités des fournisseurs d accès à Internet comme Wanadoo, Free, Le Neuf, Cegetel (d ailleurs, nous recommandons la lecture du dossier de Romain Deletre et Aurélien Méchin sur ce thème). Depuis plusieurs années, ce secteur est en pleine croissance sur grâce à deux composantes essentielles : les utilisateurs (grand public comme entreprises) sont en majorité séduits et les constructeurs/éditeurs investissent énormément pour proposer des offres les plus complètes possibles. En 2002, le projet Asterisk sort au grand jour et fait son entrée dans un marché encore naissant. C est un PBX (Private Branch exchange) logiciel qui propose des fonctionnalités avancées pour une somme dérisoire car la (bonne) surprise est que sa licence GPL (donc projet libre et open-source). D abord utilisé plus ou moins expérimentalement, il commence à convaincre peu à peu les entreprises de toute taille. I Généralités 1) Les différents types de téléphonie Malgré les avancés technologiques, la téléphonie classique (RTC) reste fortement présente notamment dans les foyers, la paire de cuivre entre l abonné et la centrale a encore de beaux jours devant elle. La gestion de la signalisation s effectue entre les centraux et les opérateurs auprès desquels il faut encore s abonner (même dans le cas du dégroupage total). La téléphonie par ADSL, qu il ne fait pas confondre avec la téléphonie par Internet car la technologie ADSL (par extension les technologies xdsl) peut transporter plusieurs types de données numériques qui sont prioritisés grâce à des systèmes de gestion de priorité : la téléphonie (voice), la télévision (video) et les paquets IP «standards» (data). Les protocoles de voix sur IP sont séparés en trois niveaux distincts : - établissement de sessions et signalisation : H.323, SIP, IAX - transport de données : RTP, IAX - codage de la voix : G.711, G.729, mp3
Pour qu il y ait communication entre deux correspondants, il faut que leurs systèmes respectifs de téléphonie emploient les mêmes protocoles. Enfin, une petite mise au point semble nécessaire sur les bons termes à utiliser : - la voix sur IP (VoIP) correspond aux technologies de transport de la voix en mode paquet via le protocole IP - la téléphonie sur IP (ToIP) sont les applications et les offres de services qui s appuient sur la VoIP. Par exemple, les solutions IPBX et IP Centrex (centralisations chez un prestataire de services de toute l infrastructure «lourde» comme les IPBX, passerelles et différents serveurs relatifs à la téléphonie) sont des solutions ToIP. 2) Un tour d horizon des acteurs Les acteurs sont très nombreux sur ce marché et se séparent en plusieurs grandes familles : - les constructeurs : o fournisseurs de PABX existants : Alcatel, EADS, Nortel, Siemens, Ericsson o nouveaux venus : Cisco o acteurs de niche : Quescom, Boscom, Wellx o open sources : Asterisk - les constructeurs de réseaux : o anciens : Alcatel, Ericsson, Nortel, Siemens, Lucent, NEC o nouveaux venus : NetCentrex, Cirpack - les intégrateurs : o du monde de la téléphonie : Nextiraone, Amec Spie, Inéo o du monde des réseaux de données : Arche o du monde de l informatique : IBM, Cap Gemini - les opérateux Centrex 3) Les problèmes et défauts d une solution tout VoIP Evidemment, si la VoIP était exempte de défauts, elle aurait déjà été adoptée par tout le monde comme la solution idéale. En cas de saturation de la ligne due à l absence de contrôle de trafic, la qualité sonore est très mauvaise. En cas de défaillance du réseau informatique ou électrique, les téléphones ne sont plus opérationnels. Il existe aussi l impossibilité de déterminer la provenance des appels
aux services d urgence (d ailleurs le décret 2005-862 contraint les opérateurs à pouvoir géolocaliser ces appels). Des problèmes surviennent également lors de l interfaçage avec des lignes ou équipements analogiques : l annulation d échos, la détection des tonalités (sensibilité à régler), le manque de signalisation (en cours d établissement, occupé, raccroché) 4) Enjeux de la ToIP Il faut ici séparer les utilisateurs finaux (entreprises) et les fournisseurs (opérateurs, constructeurs ). Pour les entreprises, la migration vers la ToIP permettra la convergence des réseaux de données et de téléphonie en un réseau unique (triple play avec la vidéo). De cette unification, des réductions de coûts (standardisations des équipements, maintenance facilitée ) et des gains de productivité sont attendus. Pour les fournisseurs, il s agit d achever la mutation le plus rapidement possible et de proposer des services à haute valeur ajoutée car la téléphonie sur IP engendre moins de revenus par exemple que les communications classiques pour un opérateur. II Introduction à Asterisk 1) Présentation rapide Asterisk est un PBX logiciel libre (sources disponibles) apparu en 2002 qui fournit toutes les fonctionnalités et services voire plus qu un PBX classique. Il supporte pratiquement tous les protocoles de VoIP (voir plus loin), fonctionne sous plusieurs plate-formes (Linux, BSD et MacOSX) et il est compatible avec la majorité des équipements de téléphonie numériques ou analogiques. Il a été conçu dans ce sens, pour pouvoir interfacer n importe quel hardware ou software de téléphonie. Créé à l origine par Mark Spencer de la société américaine Digium Inc. (devenu le «sponsor» d Asterisk), ce projet a fortement évolué grâce à la contribution de nombreuses personnes à travers le monde (esprit open source) : amélioration du code, création de documentation (tout utilisateur expérimenté est invité à créer des tutoriaux de prise en main rapide), support technique sur les forums, support financier
Mais pourquoi le nom Asterisk? Ce nom vient du symbole éponyme * qui sous les environnement Unix joue le rôle de joker lors de la recherche ou de sélection de répertoires ou de fichiers. 2) Les fonctionnalités d appel A ce jour, Asterisk est certainement la seule solution qui offre une telle richesse et flexibilité de fonctionnalités. En plus des fonctionnalités classiques, il propose des services plus avancés pour interconnecter les systèmes de téléphonie traditionnelle et de VoIP (donc rôle de passerelle). Dans les solutions matérielles, chaque option se paye au prix fort alors qu ici, elles sont toutes fournies en série (par analogie aux voitures). ADSI On-Screen Menu System Alarm Receiver Append Message Authentication Automated Attendant Blacklists Blind Transfer Call Detail Records Call Forward on Busy Call Forward on No Answer Call Forward Variable Call Monitoring : Enregistre la communication d'un canal. Call Parking Call Queuing Call Recording Call Retrieval Call Routing (DID & ANI) Call Snooping Call Transfer Call Waiting Caller ID Caller ID Blocking Caller ID on Call Waiting Calling Cards
Conference Bridging : Pont de conférence. Database Store / Retrieve Database Integration Dial by Name Direct Inward System Access Distinctive Ring Distributed Universal Number Discovery (DUNDi ) Do Not Disturb E911 ENUM : Le service ENUM permet d associer un service de voix sur IP à un numéro de téléphone classique. Si un autocommutateur utilise ce service, un appel vers un numéro enregistré passera automatiquement en voix sur IP jusqu au destinataire au lieu d emprunter le réseau téléphonique classique. Fax Transmit and Receive (3rd Party OSS Package) Flexible Extension Logic Interactive Directory Listing Interactive Voice Response (IVR) Local and Remote Call Agents Macros Music On Hold : Joue de la musique d'attente. Music On Transfer (Flexible Mp3-based System, Random or Linear Play, Volume Control) Predictive Dialer Privacy Open Settlement Protocol (OSP) Overhead Paging Protocol Conversion Remote Call Pickup Remote Office Support Roaming Extensions Route by Caller ID SMS Messaging : envoie d'un SMS sur un mobile lorsqu un message est laissé sur un répondeur. Spell / Say Streaming Media Access Supervised Transfer Talk Detection
Text-to-Speech (via Festival) Three-way Calling Time and Date Transcoding Trunking VoIP Gateways Voicemail (Visual Indicator for Message Waiting, Stutter Dialtone for Message Waiting, Voicemail to email, Voicemail Groups, Web Voicemail Interface) : Gestion du système de messagerie vocale. Zapateller 3) Les technologies supportées En téléphonie, les produits sont généralement élaborés pour répondre à un besoin technique spécifique au sein d un réseau donné. Cependant, les applications partagent des technologies communes, Asterisk est donc basé sur ces partages pour créer un environnement unique et simple pouvant d adapter à n importe quelle application. Les protocoles gèrent la communication et le transport entre les correspondants : - H.323 : dérivé de l architecture des télécoms, il est le plus implémenté mais souvent critiqué pour sa complexité - SIP (Session Initiation Protocol) : dérivé de l architecture HTTP, il est très utilisé dans les applications et softphones (émulation de téléphone sur PC), il est apprécié pour sa simplicité (ses spécifications sont libres) - IAX (Inter Asterisk exchange) : protocole développé par Digium pour permettre le dialogue entre serveurs Asterisk en toute simplicité et rapidité (port UDP unique, utilisation de Real Time Protocol, en-tête léger (4 octects au lieu de 12 minimum pour SIP), messages de contrôle plus petit, implémentation de l internationalisation (un PBX ou un téléphone peut recevoir du contenu dans sa langue native) ) - MGCP (Media Gateway Control Protocol) - SCCP (Skinny Client Control Protocol) : protocole propriétaire de Cisco Les codecs permettent la compression de la voix et donc l optimisation de la bande passante nécessaire (et donc le nombre d appels simultanés possibles) : - ADPCM - G.711 (A-Law et µ-law) - G.723.1
- G.726 - G.729 (licence vendue par Digium) - GSM - ilbc - LPC-10 - Speex - MP3 Asterisk n est pas seulement compatible avec des technologies VoIP, il garde une grande interopérabilité avec la téléphonie analogique : - E&M et E&M Wink - FXS - FXO - GR-303 - Loopstart - Groundstart - MF et DTMF - MFC-R2 - et numérique (Primary Rate Interface) : - 4ESS - BRI (ISDN4Linux) - DMS100 - EuroISDN - 4) Matériel nécessaire Un ordinateur classique de type PC suffit amplement pour créer un serveur Asterisk : un processeur cadencé à 500 Mhz et 256 Mo de mémoire sont néanmoins un minimum. Ensuite, tout dépend de la charge que le serveur aura à écouler : plus il y aura d appels concurrents, plus de puissance sera demandée (problème de latence et donc de QoS). En utilisation intensive, un processeur à 2.4Ghz et 1Go de mémoire vive sont recommandés (avec 3 lignes E1 entrantes, un tel serveur peut gérer 40 appels simultanés vers l extérieur et 5000 appels quotidiens), un serveur dédié (type Dell PowerEdge ou IBM OpenPower) n est nécessaire que dans les grandes infrastructures.
Si le serveur est interconnecté avec des connexions RTC ou RNIS (PSTN ou ISDN), des cartes matérielles sont requises (commercialisées surtout par Digium et Intel) : en analogique, on trouve la TDM400P et la X100P (cette dernière n est plus produite) et en numérique, on trouve les TE2xxP et TE4xxP. Au format PCI, elles fournissent des ports FXO (Foreign exchange Office, pour relier aux lignes analogiques ou PBX classiques) et des ports FXS (Foreign exchange Station, pour connecter les téléphones analogiques). III Architecture 1) Architecture interne
Asterisk est un système flexible grâce à sa structure interne constitué de quatre APIs (Application Programming Interface) spécifiques autour du «central core system». Celui-ci manie les connexions internes du PBX en faisant abstraction des protocoles, des codecs, des interfaces téléphoniques et des applications (d où la possibilité d utiliser n importe quel hardware et n importe quelle technologie). Asterisk joue le rôle de middleware (intergiciel) entre les technologies de téléphonie (TDM, SIP ) et les applications (conférence, messagerie vocale, IVR ) : il favorise le déploiement d environnements mixtes. Le cœur contient 5 moteurs ayant chacun un rôle essentiel et critique dans les opérations : - PBX Switching Core : fonction primaire, commute de manière transparente les appels - Application Launcher : lance les applications qui exécutent des services pour les utilisateurs - Codec Translator : code et décode la voix, plusieurs codecs sont utilisés pour trouver l équilibre entre la qualité audio et l usage de la bande passante - Scheduler and I/O Manager : planifie en bas niveau et gère les entrées/sorties pour des performances optimales - Dynamic Module Loader : charge les pilotes (lors de la 1 ère exécution d Asterisk, il initialise les pilotes et fait le lien avec les APIs appropriés) Après que les pilotes soient chargés (DML), les appels commencent à être acceptés (PBXSC) et redirigés en faisant sonner les téléphones (AL). L abstraction matérielle et protocolaire passe par l utilisation de 4 APIs : - Channel API : gère le type de connexion, des modules dynamiques sont chargés pour travailler sur les couches basses de ces connexions - Application API : accomplit de manière flexible toute fonction à la demande - Codec Translator API : charge les modules pour supporter tous les formats (support dynamique, c'est-à-dire qu un codec peut être utilisé pour une communication et un autre codec pour une autre communication suivant le débit de la ligne par exemple) - File Format API : manie la lecture et l écriture de formats de fichiers variés pour stocker dans le système de fichiers Enfin, Asterisk propose une AGI (Asterisk Gateway Interface) qui autorise la prise de contrôle du dialplan (plan de numérotation, l intelligence du système) par des programmes extérieurs. Les scripts AGI peuvent être écrits dans n importe quel langage de haut niveau comme PHP, Perl, Python, Java, C
2) Implémentations possibles Grâce à sa souplesse et ses nombreuses fonctionnalités, il est envisageable d utiliser des serveurs Asterisk comme passerelles VoIP/RTC, serveurs vocaux (IVR), plateformes de conférence et bien sûr comme IPBX Selon la taille du site, le nombre d équipements, le nombre d appels simultanés possibles, les fonctionnalités nécessaires, l infrastructure peut varier sensiblement. Cependant, le schéma ci-dessous est l architecture type d une implémentation d Asterisk : Pour une entreprise qui a récemment investi dans un PABX classique, la migration peut se faire en douceur en intercalant leur PABX entre le serveur Asterisk et les équipements analogiques. Dans ce cas, le serveur ferait office de passerelle VoIP/RTC. Le basculement en tout VoIP se ferait alors progressivement. Pour des entreprises de plus grande taille (PME) avec plusieurs sites de petite taille, la solution consiste à centraliser le serveur Asterisk au siège (on peut parler de solution IP Centrex si on compare le siège au prestataire et le client aux petites agences).
Par contre, pour certaines raisons (sécurité, redondance ou s il s agit d une grande multinationale), les serveurs peuvent être dupliqués :
Dans cet exemple, chaque site possède donc son propre serveur Asterisk mais grâce au protocole IAX, les serveurs dialoguent entre eux et peuvent se partager l accès à la ligne RTC via le serveur du site principal. De nombreux autres scénarios sont possibles, Asterisk n a en fin de compte que des limitations liées souvent au réseau auquel il est connecté. IV Installation, configuration et utilisation 1) Installation Tout d abord, une distribution Linux récente (un noyau récent résout de nombreux problèmes de compatibilité et facilite les mises à jour) doit être installée sur le serveur avec aucun autre service actif comme un serveur mail (pour des raisons de sécurité et de performance). Il n y a pas de distribution préconisée, autant garder celle qui est connue ou utilisée dans l entreprise (Debian, Fedora et SuSe généralement). Il existe également des Live CD (Asterisk@Home 2.6, Asterisk Live CD!, AstBill Live CD! 0.9.0.14, AstLinux 0.3.0, Knopsterisk ) qui permettent de faire fonctionner ou d installer un système quasiment prêt à l usage, cependant ces versions sont davantage destinés à l initiation ou aux usages domestiques. Il faut ensuite récupérer les sources d Asterisk (actuellement version 1.2.4), de Zaptel (pilotes des matériels compatibles Zapata, version 1.2.4) et de libpri (gestion des PRI, version 1.2.2) sur le serveur FTP de Digium (ftp.digium.com et nombreux miroirs) ou sur le serveur SVN (SubVersion) qui remplace depuis Février 2006 le serveur CVS (Concurrent Versions System). Voilà les commandes à exécuter pour récupérer et installer es différentes sources depuis les 2 systèmes de gestion de versions (l arbre CVS est encore mis à jour): Pour SVN : # svn checkout http://svn.digium.com/svn/asterisk/trunk asterisk # svn checkout http://svn.digium.com/svn/zaptel/trunk zaptel # svn checkout http://svn.digium.com/svn/libpri/trunk libpri # svn checkout http://svn.digium.com/svn/asterisk/branches/1.2 asterisk-1.2
# svn checkout http://svn.digium.com/svn/zaptel/branches/1.2 zaptel-1.2 Pour CVS : # svn checkout http://svn.digium.com/svn/libpri/branches/1.2 libpri-1.2 # export CVSROOT=:pserver:anoncvs@cvs.digium.com:/usr/cvsroot # cvs login (le mot de passé est anoncvs) # cvs checkout asterisk zaptel libpri Il faut ensuite installer dans cet ordre : # cd zaptel # make clean; make install # cd../libpri # make clean; make install # cd../asterisk # make clean; make install Même si le serveur ne possède pas d interface matérielle, il faut installer les pilotes Zaptel pour activer certaines applications comme la messagerie vocale. Les fichiers sont répartis dans plusieurs répertoires dont : - /etc/asterisk : fichiers de configuration - /usr/sbin : exécutables et scripts actuels - /usr/lib/asterisk/modules : modules pour les applications, les codecs, les formats de fichiers - /usr/include/asterisk : fichiers d en-tête pour la construction des applications et autres modules chargeables - /var/lib/asterisk : données variables utilisées dans les opérations normales - /var/lib/asterisk/agi-bin : scripts AGI - /var/lib/asterisk/astdb : base de données (format Berkeley DB Version 1) - /var/lib/asterisk/keys : clés publiques et privées pour l authentification RSA - /var/lib/asterisk/sounds : fichiers audio utilisés par les applications Asterisk - /var/run/asterisk.pid : PID de processus d exécution d Asterisk - /var/spool/asterisk/vm : boîtes de messagerie vocale
2) Configuration 2.1) Configuration des fichiers Asterisk tient sa flexibilité de son système de configuration par fichiers (contenus dans /etc/asterisk) et de leur syntaxe facilement interprétable par l homme. zapata.conf Contient les paramètres relatifs aux canaux TDM et les opérations réalisées par Asterisk sur ces canaux (comme l annulation d écho ). Les ports FXS et FXO y sont également fixés. sip.conf Contient les paramètres relatifs au protocole SIP pour l accès au serveur Asterisk, les clients doivent y figurer afin de pouvoir recevoir ou effectuer un appel via le serveur. La 1 ère partie sert pour les options générales de SIP comme l adresse IP et le port correspondant. Les sections suivantes définissent les paramètres clients tels que le nom d utilisateur, son mot de passe, l adresse IP par défaut pour les utilisateurs non enregistrés iax.conf Contient la configuration des clients connectés via le protocole IAX pour les transferts d appels entre serveurs distants. Le section générale établit les options globales du serveur et sa configuration pour s enregistrer comme client sur un serveur distant. Les sections suivantes définissent les clients. Ces 3 fichiers sont essentiels pour le bon fonctionnement d Asterisk. Il existe de nombreux fichiers pour configurer les autres protocoles ou fonctionnalités comme voicemail.conf (boîtes de messagerie vocale) ou musiconhold.conf (musique d attente)
2.2) Plan de numérotation Le plan de numérotation (dialplan) est le cœur du système Asterisk. Il représente la politique de routage et de traitement des différents canaux transitant sur la plateforme. Chaque étape du dialplan est une application, un appel entrant passe donc par une série d applications variées avant d arriver vers sa destination. Toutes ces applications sont réalisées à travers un concept précis et logique. Ainsi, si le correspondant ne répond pas, l appel sera redirigé vers son collègue voisin et si ce dernier ne répond pas non plus, l appel est finalement dirigé vers la messagerie vocale du correspondant initial. Ou bien aussi, un appel en dehors des horaires de travail sera directement redirigé vers la messagerie vocale. Le dialplan est stocké dans des fichiers texte (extensions.conf) ou dans des bases SQL qui sont partagés entre les serveurs distants par le protocole IAX. Il est composé d un ou plusieurs contextes d extension et chaque extension est elle-même une série d extensions. L utilisation des contextes peut servir pour implémenter des fonctionnalités spécifiques comme l authentification (demande de mot de passe pour certaines extensions) ou la gestion des appels longue distance (seules certaines extensions sont autorisées à effectuer ce genre d appels) Prenons en exemple 2 agences avec chacune 2 téléphones IP. Tous les appels provenant du 03203355xx sur le téléphone de Vlad doivent être redirigés directement sur celui de Marie : exten => 100/03203355XX,1,Dial(SIP/200). Cependant, pour ce service rendu, Marie souhaite que lorsqu elle ne peut répondre à un appel, celui-ci soit redirigé d abord chez Vlad et après seulement sur sa messagerie vocale : exten => 200,1,Dial(SIP/200, 10) -> le téléphone 200 sonne pendant 10s exten => 200,2,Dial(SIP/100, 5) -> le téléphone 100 sonne ensuite pendant 5s
exten => 200,3,Voicemail(u2000) -> l appel est dirigé vers la messagerie avec le message d indisponibilité (unreachable) Bob aime bien embêter Bill et à chaque fois que ce dernier doit l appeler, il est obligé d écouter le morceau MP3 préféré de Bob : exten => 201/101, 1,MP3Player(/usr/src/asterisk/ladansedescanards.mp3) Evidemment, les téléphones IP sont définis dans le fichier sip.conf de la manière suivante : [101] type=friend (peut recevoir et émettre des appels) secret=vista (mot de passe) callerid= «Pingouin» host=dynamic defaultip=192.168.0.95 mailbox=1011 3) Utilisation, supervision et sécurité Asterisk est lancé habituellement comme un processus démon (daemon) à l écoute. Des fois, il peut être utile de le lancer en mode console pour avoir accès aux lignes de commande et obtenir des informations sur les différents statuts. Entre autres, on pourrait citer : - -c : mode console - -C <configfile> : exécution avec une configuration différente - -p : exécution en priorité temps réel - -r : connexion à une instance déjà existante Il existe des outils qui permettent de configurer et superviser Asterisk comme ast-at-snmpd (agent SNMP), Tobi Oetiker's MRTG (script MRTG), Nagios (avec les plugins adéquats) ou encore AstBill qui offre une interface Web pour la configuration et la facturation des appels. Le système Asterisk ne souffre d aucune faille de sécurité, il utilise des mécanismes robustes d authentification. Il faut évidemment que le serveur soit derrière un firewall (IPtables est largement suffisant) et que le réseau soit lui-même convenablement sécurisé. Les appels peuvent être également cryptés par l utilisation de VPN entre les différents serveurs.
V Concurrence et avenir 1) Concurrence Il est indéniable que les PBX matériels auront du mal à contrer des PBX logiciels et de surcroît libres. Les PBX classiques sont majoritaires et le resteront encore quelques années, ils peuvent encore se targuer de performances supérieures car uniquement dédiés aux tâches d autocommutation. Mais, il est sûr que l avenir se tournera sur la ToIP et les PBX logiciels. La seule solution proche (logiciel libre) est SipX commercialisée et exploitée par PingTel. Elle reste moins universelle qu Asterisk à cause des solutions technologiques prises (support du SIP uniquement par exemple) mais plus avancée au niveau des interfaces graphiques d administration (non implémentées nativement dans Asterisk). 2) Avenir L offre ToIP est arrivée à maturité technologique mais pas encore commerciale. Certains spécialistes prévoient la fin du PABX aux horizons 2012 (en 2004, presque 2 PABX sur 3 vendus étaient des IPBX). D après une étude du cabinet IDC, les grands comptes attendent bien plus qu un simple PABX. Ils demandent un service de maintenance, une disponibilité permanente ou encore une qualité identique aux solutions classiques. De nouvelles sociétés peuvent donc s imposer face aux géants du secteur si elles proposent des solutions «clé en main» pour le client : installation, configuration, formation, maintenance et support. Avec ses nombreuses fonctionnalités et ses mises à jour régulières, Asterisk peut prétendre à une part importante dans ce marché où plusieurs entreprises lui font déjà confiance.