Publié le 19 avril 2013 - par

Vous aimez les framboises à la crème ? Découvrez la framboise314 « ALLO » : Un PABX Asterisk dans votre Raspberry Pi (Partie 1)

asterisk_logo_minÇa vous dirait d’avoir un standard téléphonique chez vous ? Pour quoi faire, me direz-vous ! Pour mettre plusieurs postes téléphoniques derrière votre Freebox, par exemple, ou encore passer plusieurs appels en simultané…

Ça vous tente ? Alors suivez moi, je vous propose d’installer Asterisk sur votre Raspberry Pi et de le mettre en service. Un PABX à moins de 50€, il faut l’essayer !

Le contenu de cet article :

Ce que vous trouverez dans cet article

  • Un rappel sur la VOIP/TOIP
  • Un rappel sur le fonctionnement du protocole SIP
  • L’installation de Raspbx sur une carte SD
  • La configuration d’Asterisk à partir de FreePBX
  • La configuration des postes téléphoniques IP
  • La configuration d’Asterisk pour le relier à Freephonie

Vous pouvez « sauter » les rappels théoriques (la Partie 1) s’ils ne vous intéressent pas, et aller directement à la Partie 2, qui traite de la mise en œuvre de Raspbx. Cependant, une connaissance minimale des principes de fonctionnement de la VOIP/TOIP vous permettra de comprendre certains dysfonctionnements de votre installation.

[merci à Philippe pour sa relecture de cet article]

Ce que vous n’y trouverez pas

  • Un cours exhaustif sur Asterisk
  • La gestion des discriminations
  • Des « recettes » pour que « ça fonctionne »
  • La configuration d’Asterisk pour autre chose que la Freebox
  • Un cours de dépannage d’Asterisk

La téléphonie IP

Différences entre la VOIP et la TOIP

Commutation de circuits

A une époque aujourd’hui révolue, les conversations téléphoniques transitaient sur des lignes analogiques, et les centraux téléphoniques établissaient des liaisons entre les correspondants en commutant des ligne téléphoniques, physiquement. Sur ce réseau RTC (Réseau Téléphonique Commuté), chaque communication téléphonique était traitée de façon unique et un réel circuit électrique établi entre les deux postes.

Mais ce réseau analogique était peu adapté (pas du tout adapté) à la transmission des données numériques qui commencèrent à transiter sur les lignes (rappelez vous … le bruit de votre modem ou du Minitel…). Les opérateurs passèrent à des liaisons entièrement numériques, en conservant cependant la notion de commutation de circuit. Lorsque vous appelez un correspondant, un intervalle de temps vous est réservé dans les trames véhiculées par l’opérateur, d’un bout à l’autre du trajet de la conversation, et pour toute sa durée. Les paquets de données, contenant la voix, partent et arrivent dans l’ordre en parcourant le même chemin dans le réseau, tout le temps où le circuit virtuel est établi.

Commutation de circuits

Commutation de circuits

Dans le dessin ci-dessus, montrant une liaison téléphonique, le poste A appelle le poste B, la liaison est établie avant que la conversation ne débute, et chaque paquet de données suit le même chemin. tous les paquets arrivent dans l’ordre et dans les temps.

Commutation de paquets

Dans les entreprises et sur internet, la situation est différente : Adieu la commutation de circuits, bonjour la commutation de paquets !

Commutation de paquets

Commutation de paquets

Et là… tout se complique : les données envoyées par le client, bien rangées dans des paquets P1, P2 et P3 sont envoyées sur le réseau. A chaque moment, les appareils situés sur le trajet des paquets peuvent décider de les envoyer par le chemin le moins encombré, le plus court, le plus rapide… Et là tout se dérègle. Les paquets envoyés dans l’ordre P1, P2, P3 arrivent ici dans l’ordre P2, P3, P1 sur le serveur.

Pas trop grave si c’est une image que vous téléchargez. Vous savez, l’image commence à s’afficher tout doucement, l’affichage s’arrête un instant et hop ! le reste de l’image apparait d’un coup.

Remplacez le PC portable par le téléphone A et le serveur par le téléphone B. C’est de la voix que vous recevez alors, et le message risque d’être un tout petit peu plus difficile à décoder ! D’où l’utilisation de buffer, de tampon, qui vont « stocker » les paquets avant de les présenter à votre oreille, en attendant que ceux qui ont pris le chemin des écoliers arrivent. Attention car le cerveau ne considère plus que l’on est au téléphone quand le retard atteint entre 300 et 400ms ! Si on cumule les retards dans chaque appareil et le tampon à l’arrivée, on atteint vite ces valeurs. Et si un ou plusieurs paquets manquent à l’appel ? Eh bien on se débrouille. On fait de l’interpolation (on essaye de reconstituer le bout qui manque)… Ou on ne fait rien, et vous entendez un Claczzt, un Grrrtch, ou un Crouiiiic…

La VOIP

La VOIP va utiliser les circuits prévus pour le transport de données. Il va donc falloir mettre en œuvre des mécanismes destinés à éviter :

La perte de paquets

Le trafic VoiP est transmis en utilisant UDP, ce qui implique qu’aucun mécanisme de contrôle de flux ou de retransmission des paquets perdus n’est offert par la couche transport.Il faut donc accorder une forte importance aux protocoles RTP et RTCP (Real-Time Transport (Control) Protocol) qui vont permettre de calculer le taux de perte de paquets, et de réagir en conséquence au niveau de la couche applicative

La latence

La latence est le décalage entre le temps écoulé entre l’envoi d’un paquet et sa réception par le destinataire. Plus la latence est importante, plus le transfert est long et plus le paquet sera décalé dans le temps.

La gigue

La gigue est la variation de délai de transmission de bout en bout entre des paquets appartenant à un même flux de données. Elle est due à la variance du temps de transmission des paquets (en l’occurrence : les échantillons de voix) dans le réseau de télécommunication et peut entrainer, si elle est trop élevée, une détérioration de la qualité vocale

L’écho

C’est la réverbération du signal. C’est le délai entre l’émission du signal et la réception de ce même signal réverbéré par les composants électroniques des parties analogiques. Un écho inférieur à 50 ms n’est pas perceptible. Plus il est décalé dans le temps plus il est insupportable.

La QOS

La gestion de la qualité de service (QOS) de bout en bout, permet de privilégier le routage des paquets transportant la voix, par rapport à ceux transportant des données.

La TOIP

C’est tout simplement de la VOIP … (Oui, c’est pareil mais attendez un peu que je termine !). Je disais donc : C’est de la VOIP à laquelle on rajoute les fonctions de la téléphonie (la présentation du numéro appelant, la messagerie vocale, le transfert d’appel, le renvoi d’appel, la mise en attente d’un appel, la conférence à trois, les numéros abrégés…)

Les codecs

Les codecs sont des composants électroniques ou logiciels, destinés à COder et DECoder des flux de données. Ils utilisent des techniques de compression/décompression pour réduire le débit, et donc la bande passante occupée. La progression de la puissance de calcul disponible dans les appareils a permis de réduire fortement le débit des informations, tout en gardant une certaine qualité à la voix.

La qualité de la voix est mesurée de façon subjective, en  faisant écouter à un grand nombre de personnes, une voix, puis en leur faisant écouter la même voix après codage/décodage dans un codec donné. Les personnes doivent noter la qualité perçue entre 0 et 5. La note moyenne obtenue s’appelle MOS (Mean Opinion Score). On peut remarquer par exemple que le G711 (64 Kb/s) et le G723 (6.4 Kb/s) ont des MOS très proches : 4.1 contre 3.9, malgré un débit 10 fois plus faible pour le second !

Les codecs utilisés en téléphonie, en particulier sur Asterisk sont nombreux. Certains ne sont utilisables qu’après paiement d’une licence d’utilisation. Pour que deux téléphones IP puissent communiquer, il faut qu’ils aient au moins un codec en commun… Nous en reparlerons un peu plus loin dans cet article.

Tableau des codecs / Débits / MOS

Tableau des codecs / Débits / MOS

Les protocoles utilisés en VOIP/TOIP

H323

H.323 gère la signalisation (décroché, ligne occupée, sonnerie…), la négociation de codec (Il peut s’agir du codec le moins gourmand en bande passante ou de celui qui offre la meilleure qualité), et le transport de l’information (Le transport de l’information s’appuie sur le protocole RTP qui transporte la voix, la vidéo ou les données numérisées par les codecs. On peut aussi utiliser les messages RTCP pour faire du contrôle de qualité, voire demander de renégocier les codecs si, par exemple, la bande passante diminue). Vous pouvez trouver sur le marché des téléphones IP utilisant un firmware H323. Ce protocole est géré par Asterisk.

MGCP

MGCP est un protocole permettant de contrôler les passerelles multimédia (Media Gateways) qui assurent la conversion de la voix et de la vidéo entre les réseaux IP et le Réseau Téléphonique Commuté. Vous pouvez trouver sur le marché des téléphones IP utilisant un firmware MGCP. Ce protocole est géré par Asterisk.

SIP

Session Initiation Protocol (SIP) est un protocole standard ouvert de gestion de sessions souvent utilisé dans les télécommunications multimédia (son, image, etc.). Il est depuis 2007 le plus courant pour la téléphonie par internet (la VoIP).

SIP n’est pas seulement destiné à la VoIP mais aussi à de nombreuses autres applications telles que la visiophonie, la messagerie instantanée, la réalité virtuelle ou même les jeux vidéo.

Vous pouvez trouver sur le marché des téléphones IP, utilisant un firmware SIP. Ce protocole est géré par Asterisk.

C’est le plus utilisé à l’heure actuelle, par les grands fournisseurs d’accès à Internet, par tous les grands fournisseurs traditionnels d’autocommutateur téléphonique privé, par les acteurs du marché de la visioconférence ainsi que dans les architectures de voix sur réseau IP pour la convergence fixe/mobile, il a été également retenu Microsoft.

Principe de fonctionnement du protocole SIP

Communication entre deux postes téléphoniques IP

Il est tout à fait possible d’établir une conversation entre deux postes IP, en appelant directement l’adresse IP du poste destinataire. Cette technique peut être utilisée par exemple sur un réseau interne en utilisant des softphones.

Cependant cette solution devient rapidement compliquée, quand le nombre de postes (donc d’adresses IP) augmente. La situation est encore plus difficile (voire ingérable) si les postes utilisent un adressage dynamique (DHCP) et n’ont pas toujours la même adresse.

Utilisation d’un registrar

Un registrar est un serveur qui va tenir à jour une table des postes IP en fonctionnement, et sera capable à la demande de fournir l’adresse IP d’un poste en fonction de son numéro de téléphone. C’est l’équivalent d’un DNS, en téléphonie.

table_adressesBien entendu pour qu’un poste puisse s’inscrire sur le registrar, il faudra enregistrer dans le poste un certain nombre d’informations comme l’adresse IP du registrar, le numéro attribué au poste, et le mot de passe que le poste devra fournir pour s’authentifier.

Côté registrar, on créera un compte pour le poste, avec un mot de passe, et on définira les actions à exécuter pour ce poste. Comme ces actions étendent le protocole SIP, elles portent le nom d’extension. Une extension, ce sont donc  les actions à réaliser pour un poste ou un groupe de postes.

Le protocole SIP

protocole_SIPCe diagramme représente la succession des opérations qui se déroulent quand un poste A appelle un poste B :

A décroche, et compose le numéro de téléphone de B. Le registrar, connaissant l’adresse IP de B lui envoie une invitation pour qu’il fasse retentir sa sonnerie. quand c’est fait, B prévient le registrar qu’il est en train de sonner.

Quand B décroche, le poste prévient le registrar, qui transmet l’information à A.

A partir de ce moment, la liaison ne passe plus par le registrar, mais se fait directement entre les postes par RTP ou RTCP.

On voit déjà deux possibilités de pannes :

  • Si les postes n’ont pas de codec en commun, le poste B sonne, décroche … et puis plus rien ! pas de son, pas de voix, puisque les postes ne peuvent échanger les données au travers d’un codec identique.
  • Si les postes sont situés dans le même réseau, pas de problème. Si les connections transitent par des routeurs NAT, les adresses des postes enregistrées sur le registrar sont les adresses IP qu’ils ont derrière les routeurs NAT. Lorsque la communication s’établit en direct, ces adresses sont inaccessibles par chacun des postes…. et plus rien ne fonctionne. On dit que SIP n’est pas NAT traversal, c’est à dire qu’il n’aime pas que vous utilisiez des routeurs NAT (Ce qui n’est pas vrai pour tous les routeurs. Les box, par exemple, sont conçues pour faire du SIP NAT traversal…)

Quand A raccroche, il en avertit le serveur, qui a son tour prévient le téléphone B de mettre fin à la communication.

Le protocole SIP est proche du protocole HTTP, il utilise le code ASCII pour les messages échangés, et des codes de réponse similaires à ceux de HTTP : 100=Trying, 200=OK, 404=Not Found. Les codes supérieurs ou égaux à x80 sont spécifiques à SIP : 180=Ringing, 486=Busy…

Mise en application de ces concepts

Les téléphones

Les téléphones peuvent être de vrais téléphones IP avec un firmware SIP, ou des softphones (logiciels émulant un téléphone sur un PC, un smartphone… ) également en SIP. Dans mon cas, j’avais à disposition des téléphones Adept SIP10 (Adept Telecom était un concepteur de (petits) PABX, basé au Creusot -71-, dont les produits ont été distribués sous la marque Diatonis par France Telecom. La marque a été reprise en janvier 2011 par BSE, également situé au Creusot).

Comment choisir son téléphone?

Si vous choisissez uniquement des softphones, il faudra que le(s) PC reste(nt) allumé(s) en permanence si vous souhaitez recevoir des appels. Par contre si vous ne faites qu’appeler, cette solution est intéressante. Le téléphone IP « réel » est certes plus couteux (allez faire un tour sur ebay et cherchez : téléphone SIP), mais il a une consommation réduite et peux rester sous tension très longtemps… A vous de voir !

Le registrar

Le serveur, utilisé comme registrar sera Asterisk, un logiciel libre. Il sera chargé de gérer l’enregistrement ses postes SIP, et de mettre en œuvre le protocole SIP.

Et le Raspberry Pi là dedans?

Le Raspberry Pi sera notre registrar. Il recevra une carte SD comportant la distribution Raspbx, c’est à dire Asterisk et le logiciel de gestion web d’Asterisk : FreePBX.

Références :

  • http://www.frameip.com/toip/
  • http://www.inetdoc.net/articles/modelisation/modelisations.concept.html
  • http://fr.wikipedia.org/wiki/Voix_sur_IP
  • http://www.architoip.com/toip-voip-pour-les-nuls/
  • http://projets-gmi.iup.univ-avignon.fr/projets/proj0708/M2/p10/codec.html

À propos François MOCQ

Électronicien d'origine, devenu informaticien, et passionné de nouvelles technologies, formateur en maintenance informatique puis en Réseau et Télécommunications. Dès son arrivée sur le marché, le potentiel offert par Raspberry Pi m’a enthousiasmé j'ai rapidement créé un blog dédié à ce nano-ordinateur (www.framboise314.fr) pour partager cette passion. Auteur de plusieurs livres sur le Raspberry Pi publiés aux Editions ENI.

13 réflexions au sujet de « Vous aimez les framboises à la crème ? Découvrez la framboise314 « ALLO » : Un PABX Asterisk dans votre Raspberry Pi (Partie 1) »

  1. md

    Bonjour,

    juste pour info le premier lien  » aller directement à la Partie 2″ ne redirige par vers la deuxième partie.

    Ps: toujours en attente du Raspberry pi.

    Répondre
  2. dada

    Bonjour,

    Je souhaite utiliser un Raspberry afin de faire le standard dont j’ai besoin en pro.
    Avant de me lancer dans l’aventure, je souhaiterai savoir si l’on peut connecter tout ceci à des lignes numéris T0?
    Dans l’attente de vos réponse…
    Cdt

    Répondre
    1. admin Auteur de l’article

      Bonjour
      Pour une connexion directe, la réponse est clairement NON ! Sur un pc on peut ajouter une carte RNIS… Pas sur un Raspberry Pi.
      Par contre rien n’empêche de passer par une passerelle Patton mais alors là… les prix grimpent de façon exponentielle.
      Bon courage
      Cordialement
      François

      Répondre
  3. Dada

    Bonjour,

    Peut-on utiliser un Cisco SPA 3102 afin de connecter une ligne T0?
    D’autre part, je siuhaite utiliser des téléphones IP sans fil, est-ce possible d’acheter uniquement des bases sans leur « pabx associé »? Par exemple, des Siemens Gigaset 610H sans prendre de Gigaset 610 IP?
    Dans l’attente de votre réponse.
    Cdt

    Dada

    Répondre
    1. admin Auteur de l’article

      Bonjour
      le Cisco SPA3102 est un ATA Analog Telephone Adapter. Il ne peut pas se connecter à une T0 puisqu’il est prévu pour interfacer une téléphone RTC avec une installation VOIP.
      Le téléphone C610IP est annoncé avec un « protocole VOIP » SIP. Il peut donc se connecter à un serveur Asterisk.C’est également un « base » DECT à laquelle on peut lier plusiers téléphones DECT comme le C610H. Mais ce dernier n’est QUE DECT et doit obligatoirement fonctionner avec une borne soit la C610 en RTC, soit la C610IP qui gère le RTC et la VOIP…
      Donc le C610H tout seul ne peut rien faire, il lui faut une station de base !
      Êtes-vous certain d’avoir les compétences pour vous lancer dans un tel projet? vos questions montrent qu’il vous manque des fondamentaux (SIP, T0, RTC, DECT…) pour être à l’aise dans la téléphonie…
      Bon courage
      Cordialement
      François

      Répondre
  4. Ping : VOIP | Pearltrees

  5. Nicolas M.

    Merci beaucoup pour cet article! Je souhaitais me lancer dans l’installation d’Asterisk sur mon Raspberry (sous Raspbian) qui me sert – entre autre – de serveur Web, courriel, streaming avec Icecast … J’ai entamé la lecture de  » Asterisk – Les cahiers de l’admin  » qui est une excellente source d’information mais qui est un poil trop technique ou tout du moins, pas tout à fait accessible au premier lecteur venu.

    N’ayant pas de téléphone SIP physique je vais me contenter dans un premier temps de softphone, le tout à partir d’une distribution Debian sur une VM pour ensuite – essayer – de faire tourner la chose directement sur le Raspberry …

    Un rapide coup d’oeil sur la seconde partie m’a permis d’entrevoir une issue à quelques de mes menus problèmes actuels !

    Merci encore 🙂

    Répondre
  6. Regis

    Bonjour, je decouvre petit a petit toutes les possibilites de la framboise, apres avoir realise router « wan wifi wlan » vers « wifi wlan » je voudrais me lancer dans le pabx, d’ou ma question…

    Sur livebox pro qui, de basse, accepter 2 telephones ip orange est il possible de remplacer ces telephones par un pi wifi qui pourrait etre operant avec des softphones de smartphone mais qui seraient plus nombreux (5 ou 6) ?

    Avant de me lancer j’aimerai vraiment avoir votre avis.

    Par avance merci de votre reponse et surtout un grand merci pour votre article tres pro.
    Bien cordialement

    Répondre
    1. admin Auteur de l’article

      Bonjour
      Je ne dispose malheureusement pas d’une LiveBox pro. Mais sur FreeBox ça fonctionne alors pour quoi pas sur LiveBox? L’Asterisk serait relié à la LiveBox par un câble Ethernet et les softphones des smartphones se connecteraient par wifi. Je ne vois pas d’impossibilité. attention si la LiveBox autorise 2 communications simultanées, ce n’est pas parce qu’il y aura 5 ou 6 tel. qu’ils pourront communiquer… Le nombre de communications sera de toute façon limité à 2 ! (c’est ce qu’il se passe sur Freebox)
      Tiens nous au courant de l’avancement de tes essais et si tu ne l’a pas déjà fait télécharge la « bible » ! http://cdn.oreilly.com/books/9780596510480.pdf
      Bon amusement
      Cordialement
      François

      Répondre
  7. Pascal

    Bonjour
    La téléphonie sur freebox est SIP. On peut la faire fonctionner sur ASTERISK ou même sur un boîtier ATA genre PAP2 ou semblable.
    Malheureusement, la connexion toip de la livebox n’étant pas SIP, il ne sera pas possible de la faire fonctionner sous ASTERISK. Le « code » (les protocoles) n’est pas ouvert. Orange ne veut pas qu’on utilise autre chose que sa livebox
    .

    Répondre
  8. Pascal

    Bonjour
    Un peu tard m’enfin!
    La téléphonie sur freebox est SIP. On peut la faire fonctionner sur ASTERISK ou même sur un boîtier ATA genre PAP2 ou semblable.
    Malheureusement, la connexion toip de la livebox n’étant pas SIP, il ne sera pas possible de la faire fonctionner sous ASTERISK. Le « code » (les protocoles) n’est pas ouvert. Orange ne veut pas qu’on utilise autre chose que sa livebox.
    .

    Répondre
  9. Ping : Long Time No See ^_^ » Raspberry Pi上搭建RasPBX实现VoIP GSM网关

Laisser un commentaire

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

Complétez ce captcha SVP *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.