Téléphonie sur IP - UV TL53 UTBM

Transcription

Téléphonie sur IP - UV TL53 UTBM
TP TL53
Téléphonie sur IP
J. MILLET
[email protected]
2016/2017
6 tp (Asterisk sur RPI -> pas H323, cisco sur 1 PC)
TP TL53
TP ADSL
Matériel: 1 PC Win7 avec vmplayer et image vmware d'un serveur 2k ( mdp Admin = tpvoip ) avec logiciels VLC,
serveur RAS, http et ftp ( IIS ) et PPPoE ( rasppoe ), avec usager tpadsl ( mdp adsl ) autorisé
à l'accès RAS.
1 PC sous Win7 avec OpenOffice ou Office pour faire le compte rendu.
1 routeur ADSL/VDSL Cisco 887 VA,
Testeur Aurora en ATU-C.
NB: La solution d'image vmware du serveur W2K ne fonctionnera pour PPPoE qu'avec une connexion Ethernet fixe. En sans fil, les messages PADO
sont bloqués sur certaines cartes sans fil.
Ethernet
câble
droit
Boucle locale
= 2 fils
Serveur
( vmware )
194.0.0.9
- RAS
- PPPoE
- HTTP
- FTP
- Streaming
Ethernet
câble
croisé
routeur ADSL
Cisco 887 VA
Testeur Aurora Presto
en DSLAM = ATU-C
Bridge
= PC 194.0.0.8
hébergeant le PC virtuel serveur
Objectifs:
- Etudier les paramètres d'une ligne ADSL.
- Etudier les protocoles liés à ADSL.
J. Millet
ADSL: Ligne, Protocoles
ADSL: Ligne, Protocoles
Bridged ( dérivé ) , Routed ( routé ) , Ethernet sur ATM, PPPoE
Le FAI ( fournisseur d'accès à Internet ) envoie par son DSLAM plusieurs flux via xDSL qui utilise AAL5 d'ATM.
La Box fait le tri et récupère l'information ( voix, données ou image )
- en reconnaissant les flux grâce au couple VP, VC ( Virtual Path, Virtual Circuit ) des entêtes ATM.
VP, VC = identifiant de communication ATM ( = Virtual Path, Virtual Circuit ).
Par cette valeur VP, VC envoyée par le DSLAM, l'opérateur indique au modem quel protocole utiliser =
Le modem sait comment il doit traiter les données et former les trames.
- en utilisant la même méthode de multiplexage que du côté opérateur ( encapsulation LLC ou VCmux ).
- LLC = ajout d'entête pour distinguer et gérer les protocoles, le même VP, VC est utilisé.
- VCmux = Chaque protocole a son VP,VC =>Pas d'ajout d'entête pour distinguer et gérer les flux.
On réalise la liaison par ADSL suivante:
PC "serveur" = avec
machine virtuelle serveur PPPoE
PC client
Ethernet
Série
Ethernet
ADSL
Routeur Cisco 887 VA
DSLAM
I) Prise en main du Cisco 887
Caractéristiques du routeur
-> Démarrer un logiciel série en 9600-8-n-1 sur le PC Client côté routeur.
Taper via le port console la commande router>show version
Q1) Indiquer
- La version d'IOS
- La RAM = faire le total à la ligne commençant par " Cisco 887VA (MPC8300) processor"
Ex: 45056K/4096K bytes of memory. indique une RAM de 48 Mo (45056kB + 4096kB = 49152kB)
- Les interfaces présentes
- La NVRAM et Flash RAM disponibles
-> Effacer la configuration actuelle: Taper
J. Millet
Router#write erase
Router#reload
ou erase startup-config
ou erase nvram
Routeur ADSL 1/8
-> Taper en console router#sh ip int brief
Q2) Relever les interfaces présentes pour la configuration.
-> Taper
router#sh run
Q3) Déterminer le nom du contrôleur DSL ( ADSL et VDSL ) en trouvant la ligne "controller xDSL x".
Caractéristiques de la liaison ADSL
-> Etablir la liaison xDSL en activant le DSLAM = Menu qui donne sous F3 "ADSL " ( voir annexe )
=> message sur le port console " controllers nom_controleur_xDSL , change state to up"
=> Diode CD en face avant du routeur qui s'allume = Synchro ADSL.
Illustrations de l'initialisation: Avec un oscilloscope on verrait les échanges de fréquences
Le client demande une connexion
et donne son protocole ( fréquences )
-> Taper
Le DSLAM répond ( Handshake = dialogues préalables,
Apprentissage = training avec analyse des canaux
puis Echanges = Showtime ).
La connexion est établie après tests
des porteuses et configuration.
router#show controllers nom_controleur_xDSL (nom_controleur_xDSL remplacé par le nom trouvé avant)
Q4) En déduire le matériel utilisé = le chipset xDSL du routeur ( modem xTU-R ), celui du DSLAM ( xTU-C )
Q5) En déduire les normes ADSL utilisées
= la norme xDSL utilisée ( ligne Trained Mode )
= l'interface de niveau 2 OSI utilisée ( ligne TC mode )
Q6) En déduire les caractéristiques de ligne et les réglages de gestion de puissance = l'atténuation dans les 2 sens
= la marge de bruit ( ligne Noise Margin )
= les puissances d'émission ligne Actual Power )
Q7) En déduire les débits pour notre abonnement:
= le débit descendant ( téléchargement, Download ) = ligne Speed colonne DS non nulle
= le débit montant ( téléversement, Upload ) = ligne Speed colonne US non nulle
Q8) En déduire la qualité de la ligne avec le nombre d'erreurs:
= les FEC ( correction d'erreur directe sans retransmission = ligne Reed-Solomon EC )
= les HEC ( erreurs d'entête ATM = ligne Header Errors )
Q9) En déduire le mode Rapide (Fast) ou Entrelacé ( Interleaved ):
= Ligne Interleave retard du à l'entrelacement < 1 ms = Mode rapide
retard du à l'entrelacement > 1 ms = Mode entrelacé
II) Caractéristiques de la ligne
Aspects théoriques
La liaison ADSL utilise la modulation DMT = juxtaposition de sous porteuses ( largeur réservée 4,3125 kHz avec 4 kHz utilisé ).
Chaque sous porteuse a une modulation selon sa qualité: Rapidité de modulation de 4 kbaud, valence entre 0 et 215 .
J. Millet
Routeur ADSL 2/8
Q10) Quelle est le débit maximum selon ces données théoriques pour une sous porteuse ( rappel : D = R × log2 [ V ] ) ?
SP 1 = RTC,
SP 2 à 6 = Bande de transition,
SP 7 à 32 = 26 kHz à 138 kHz
Montant,
SP 33 à 256 = 138 à 1104 MHz
Descendant
moins SP 64 = 271,6875 à 276 kHz
Synchronisation.
Affectation des bits par porteuses : Analyse côté DSLAM ( menu « analyse porteuses » )
Sur le DSLAM: - Régler le mode Entrelacé = Auto Intlv dans le menu "Config Emul" ( voir en annexe ).
- Régler les débits de ce mode ( Dans "Config Emul" Paramètres Montant et Descendant )
à 32 kbit/s pour le sens montant ( de Interleaved ! => ligne IBR Intl Bit Rate ),
à 32 kbit/s pour le sens descendant ( idem ).
Attention à ne pas mettre un débit mini supérieur au maxi, cela bloque l’Aurora.
( pour mettre une valeur de débit, taper 0, cela revient à gauche puis les chiffres désirés puis ↵ : 32 = 00032 )
-> Couper la ligne et relancer pour prendre en compte les nouveaux paramètres.
Q11) Par "Analyse porteuses" d'Aurora, notez les porteuses utilisées et le nombre de bits affectés à ces porteuses en sens descendant.
Calculer le débit.
Q12) Pourquoi y a-t-il une différence entre débit calculé ( 0 et 1 en ligne adsl ) et débit affiché par le traceur de 32 kbit/s ( 0 et 1 pour
utilisateur = ATM ) ?
Affectation des bits par porteuses : Analyse côté routeur
On veut voir la répartition des bits par sous-porteuse ( "DMT Bits Per Bin" selon la terminologie Cisco ).
-> Taper
router#show controllers nom_controleur_xDSL ?
pour voir les options à ajouter
Q13) En déduire ce qu'il faut ajouter à la commande pour voir l'allocation des bits aux sous-porteuses ( show bit alloc … )
On rappelle les affectations des porteuses selon la norme
RTC
Bande de Transition
sens montant
téléversement
(porteuses non utilisées)
ADSL G992.1 annexe A
256 porteuses
1
2à6
7 à 32 ( =0x20 )
ADSL2+ G992.5 annexe A 512 porteuses
1
2à6
7 à 32 ( =0x20 )
( cisco commence à 0 la numérotation, 0=RTC, 1 à 5 non utilisées,… )
Sens descendant
téléchargement
33 ( =0x21 ) à 256
33 ( =0x21 ) à 512
-> Taper la commande précédente avec l'option en plus.
Q14) Expliquer ce que l'on voit à l'écran ( colonne de gauche = ? Downstream subcarrier est ce vraiment Downstream seulement ? )
Comparer avec les mesures côté DSLAM.
J. Millet
Routeur ADSL 3/8
III) Protocoles: Routeur en mode bridge
Le DSLAM ( Aurora en ATU-C ) utilise
* VP,VC 8,35 ( menu Config ATM )
* en mode Bridge ( pont = transparent )
* avec encapsulation LLC ( menu Config IP / Encaps IP ).
Configuration du routeur en mode bridge
-> Réaliser la configuration en bridge ( pont ) par le port console selon les indications suivantes:
Configurer le xdsl
(fait par défaut en auto )
Configurer le côté LAN
Enable, conf t
Router(config)# controller vdsl 0
Router(config-controller)# operating mode auto
Router(config-controller)# end
Les interfaces LAN Fast Ethernet sont automatiquement configurées comme éléments du VLAN par défault.
On ne peut les configurer avec des adresses individuelles. L'accès est fourni par le VLAN. ( On pourrait
aussi les assigner à d'autres VLAN ).
Enable, conf t
Router(config)#int FastEthernet 0
Router(config-if)# switchport access vlan 1
Router(config-if)# exit
Router(config)# int vlan 1
Router(config-if)# bridge-group 1
Router(config-if)# no autostate
Router(config-if)# no shutdown
Router(config-if)# exit
-> sans cela "sh ip int brief" montrait que le VLAN
passait down et "no sh" ne le remonte pas
Config du lien Vlan –
ATM PVC
Router(config)# no ip routing
Router(config)# bridge 1 protocol ieee
CTRL Z
Config de l'interface
WAN ADSL
conf t
Router(config)# interface atm 0
Router(config-if)# no shutdown
Router(config-if)# bridge-group 1
Router(config-if)# no ip address
Router(config-if)# pvc X/Y
remplacer X par le VP trouvé dans la config du port du DSLAM
Router(config-if-atm-vc)# encapsulation Z
A NE PAS OUBLIER !!
Y par le VC
Z par l'encapsulation
"aal5snap" pour LLC,
"aal5mux ip" pour VCmux
CTRL Z, wr
-> Mettre l'adresse ip 194.0.0.3 au pc client, vérifier que le PC serveur est en 194.0.0.8.
Vérifier que les ping passent entre les 2 PC.
Q15) Pourquoi met-on 2 fois bridge-group1 dans la configuration ?
Pourquoi ce mode Bridge marche-t-il sans que l'on mette une adresse IP à une interface du routeur ?
Q16) Avec le résultat de la commande "sh bridge", indiquer ce que l'on voit s'afficher ? qui parle à qui ?
Pourquoi verra-t-on du spanning tree dans l'analyse ultérieure des échanges ?
ADSL utilise le niveau 2 ATM = AAL5 ( ATM Adaptation Layer 2 ). Il peut fonctionner selon différents modes:
CBR
Débit constant garanti à l'usager = Téléphonie non compressée
( Constant Bit Rate )
Le débit est défini par le PCR ( Peak Cell Rate ) = Débit des cellules ATM ( paquets de
taille fixe de 53 octets = 424 bits ): PCR = débit en bit/s / 424
VBR-rt
flux qui change de débit ET ne peut pas attendre = Téléphonie compressée et vidéo
( Variable Bit Rate
Il a un débit de cellules/s normal SCR Sustained Rate et un débit maxi PCR mais qui
Real Time )
n'est pas garanti. Il passe après les flux CBR
VBR-nrt
Idem VBR-rt mais il peut être mis en attente.
( Variable Bit Rate
Il passe après les flux précédents
NON Real Time )
UBR
Débit non garanti, on utilise ce qui est disponible = Internet
( Unspecified Bit Rate ) Passe après les autres flux.
J. Millet
Routeur ADSL 4/8
Q17) Avec le résultat de la commande "sh atm vc", indiquer les caractéristiques du PVC atm utilisé pour la liaison adsl ?
Colonne VCD name = Nom de ce PVC pour le routeur, à utiliser question suivante.
Colonne SC = Mode ( UBR non spécifié, VBR variable, CBR Constant = débit garanti )
Colonne Peak kbps = Débit crête en kbit/s = le plus petit des 2 sens.
Q18) Relever le nombre de cellules par seconde ( cps ) qui correspond au débit ( kps ) en tapant :
#sh atm vc nom
en remplaçant "nom" par ce qui est indiqué question
En déduire la valeur de la constante k dans la formule "débit bits = k × débit cellules"
Q19) Aller à la configuration du PVC ( interface puis PVC ) et taper Router(config-if-atm-vc)#ubr
ubr ?
Quelles sont les valeurs de débit en kbit/s pour lePVC ?
Conclusion sur la valeur relevée avec #sh atm vc ?
Remarque : Le testeur Aurora n’est pas un vrai DSLAM => Problème de débit réel ( en FTP on a des kbit/s pour une ligne Mbit/s ) => Pas de test possible.
Analyse des échanges = Mode Debug
On s'intéresse cette fois aux messages sur la ligne ADSL. Pour cela on va utiliser la commande debug des routeurs Cisco.
-> Débrancher l'ethernet des 2 PC = On n'a que le trafic interne à ADSL ( pas de mise à jour de PC ou netbios ou … )
-> Préparation pour le debug = Par la config routeur via port console, activer les timestamps en ms
router(config)#service timestamps debug datetime msec
router(config)#service timestamps log datetime msec
-> Lancer le debug sur le routeur en tapant via console router# debug atm packet
Capturer les messages dans un fichier texte
( sous hyperterminal Menu Transfert > Capturer le texte
sous putty: Clic droit sur barre du haut de fenêtre, Change settings, Logging, Printable output, mettre un nom.txt )
Attendre 1 minute, les paquets ATM défilent.
-> Terminer la capture du fichier dans hyperterminal.
Arrêter le debug du routeur en tapant en aveugle router# undebug all
-> Ouvrir le fichier créé.
Q20) Dire ce que détermine les valeurs des champs LLC et OUI ( utiliser l'arbre des protocoles donné en cours sachant que l'on est en
bridge c'est à dire avec le protocole RFC2684 = ex RFC1483 ).
En analysant la valeur de TYPE, indiquer quel est le trafic que l'on observe
Remarque: Le debug ne montre pas le trafic du bridge, on ne verrait pas de ping entre les 2 PC. On verrait un ping partant du
PC mais on ne le fait pas ici, on n'a pas mis ici d'adresse IP au routeur. On ne verrait que les messages en broadcast ethernet
( exemple: requêtes ARP si on rebranche un PC ou netbios ).
IV) Mode de fonctionnement ADSL: Rapide ( Fast ) / Entrelacé ( Interleaved )
ADSL dispose de 2 modes de fonctionnement :
Rapide ( Fast, Low ping ) : Les données sont mises en trames, on ajoute une petite correction d’erreur FEC et une entête.
Entrelacé ( Interleaved ): On mémorise plusieurs trames. On ajoute les corrections d’erreur
On éparpille ces trames en les mélangeant = Entrelacement.
A la réception on fait l’opération inverse = Désentrelacement.
Intérêt de l’entrelacement: Meilleure protection contre les erreurs en les éparpillant ( codage de canal ).
-> Configurer la ligne du DSLAM (Voir arborescences des menus en annexe: F4 Config / Emulation / ... )
Mode: Entrelacé = Interleaved
Paramètres Montants -> débit ( Bit Rate de Interleaved ! => IBR): 512 kbit/s montant,
Paramètres Descendants -> débit ( Bit Rate de Interleaved ! => IBR): 4096 kbit/s descendant.
-> Activer la ligne ADSL, rebrancher les liens Ethernet, vérifier qu’ils se voient ( ping entre 194.0.0.3 et 194.0.0.8 ).
J. Millet
Routeur ADSL 5/8
Q21) Noter le débit théorique en mode Entrelacé ( sur le routeur, commande sh controllers … ).
Relever la valeur d’un ping sur le serveur ( temps en ms ).
Recommencer avec un échange plus long : ping <adr> -l 512
- Désactiver la ligne ( flèche ).
- Modifier la configuration de l'Aurora pour passer en mode FAST ( Mode dans Menu Config Emul ).
- Activer la ligne ( prise en compte des nouvelles valeurs ).
Q22) Noter le débit théorique en mode rapide.
Relever la valeur d’un ping sur le serveur ( temps en ms ).
Recommencer avec un échange plus long : ping <adr> -l 512
Q23) Conclusion sur le temps de propagation ( sachant que vue notre distance, seule la mise en trame intervient,
pas le temps de propagation ) ?
Conclusion sur le débit ?
Q24) Intérêt de l'entrelacement ?
Quel est le mode par défaut du DSLAM sachant que l'opérateur veut la ligne la mieux protégée ?
Quel est le mode que devrait avoir une personne jouant en réseau qui veut une grande réactivité du système ?
V) Protocoles: Routeur en mode PPPoE
Au lieu de configurer l'adresse IP côté client, on va utiliser le protocole PPPoE qui va dialoguer avec un serveur PPPoE pour
donner automatiquement la configuration IP.
Analyse des échanges PPPoE sans ADSL
-> Mettre le PC client en DHCP, puis créer une connexion d'accès distant PPPoE:
Sous Win7 = Centre réseau et partage, Configurer nouvelle connexion, Se connecter à Internet, Haut débit ( PPPoE )
Identifiant: tpadsl
mot de passe: adsl
-> Faire ipconfig sur le pc avant connexion, regarder les interfaces affichées.
-> Sur le PC serveur démarrer la machine virtuelle W2000 ( raccourci sur le bureau du PC serveur ).
( login Administrateur, mot de passe tpvoip )
-> Démarrer wireshark sur le PC client pour faire une capture sur la carte Ethernet.
Activer la connexion que vous avez créée si la machine virtuelle a eu 2 mn pour démarrer les services.
-> Ouvrir un navigateur web et se connecter à la page du serveur pour avoir du trafic http.
-> Terminer la capture wireshark. Mettre un filtre ( Case Filter ) PPPoED || PPP
( | = ALT GR et 6 )
Q25) Refaire ipconfig, quelle est la nouveauté ? Avec quelle @IP ?
Q26) Dans la capture wireshark, relever les étapes de PPPoED = PPPoE discovery avant les échanges PPP: PADI, …
Quelle est l'adresse MAC destinataire de la première trame PPPoED ?
Q27) Lors de la phase de découverte ( Discovery ), quel est le niveau du modèle OSI utilisé ?
Entre le PC et le serveur, pour faire du point à point, comment fonctionnent les autres appareils ( modem, DSLAM ) ?
Q28) S'il y a plusieurs serveurs PPPoE visibles, à quelle étape le client ne communique-t-il plus qu'avec le serveur qu'il choisit ?
-> Enlever le filtre de wireshark et cliquer sur une trame HTTP.
J. Millet
Routeur ADSL 6/8
Q29) Avec la trame http de requête du serveur web ( http GET ) dans Wireshark, indiquer la liste des protocoles entre http et ethernet
( on regroupera ici PPPoE et PPP ensemble ).
ADSL a été conçu
pour utiliser ATM
car le coeur était en
ATM
RFC1483 Ether/ATM
ATM AAL5
PC Client
Modem
Bridge
DSLAM
->Déconnecter la liaison PPPoE, supprimer la connexion créée.
-> Mettre le PC client en 10.0.0.3, laisser le PC serveur en 194.0.0.8.
Configuration du routeur en PPPoE
On commence par effacer la configuration du routeur:
- Taper Router#write erase
ou erase startup-config ou erase nvram
Router#reload
La documentation cisco du routeur ne correspond pas aux commandes du routeur ( commande vpdn non acceptée ) donc on utilise
une configuration trouvée sur Internet.
(Source: partie 887 de http://www.internode.on.net/support/guides/internet_access/broadband_adsl/cisco_routers/)
conf t
no ip source-route
interface ATM0
no ip address
no shutdown
no atm ilmi-keepalive
pvc 2/16
encapsulation aal5snap
pppoe-client dial-pool-number 1
int FastEthernet 0
switchport access vlan 1
interface Vlan1
ip address 172.20.160.1 255.255.0.0
ip nat inside
interface Dialer 0
ip address negotiated
ip nat outside
encapsulation ppp
dialer pool 1
dialer-group 1
ppp chap hostname login
ppp chap password mdp
ip nat inside source list NAT interface Dialer 0 overload
ip route 0.0.0.0 0.0.0.0 Dialer 0
ip access-list extended NAT
permit ip 172.20.0.0 0.0.255.255 any
CTRL Z
wr
J. Millet
Routeur ADSL 7/8
-> Faire la configuration qui est indiquée mais avec
* le VP/VC du DSLAM
* le login, mot de passe du paragraphe précédent
Q30) Quel est le port fastethernet du routeur qui est configuré ? Vérifier que votre PC client est bien sur ce port.
PC "serveur" = avec
machine virtuelle serveur PPPoE
PC client
LAN
WAN
avec PPPoE
Ethernet
Série
Ethernet
ADSL
Routeur Cisco 887 VA
DSLAM
-> Configurer l'IP de la carte réseau du PC client = Choisir une IP dans le réseau LAN de la configuration effectuée.
et mettre la passerelle = @IP du routeur.
-> Vérifier avec la diode PPP en face avant que la session PPPoE est active sur le routeur.
-> Taper en console router#sh ip int brief
Relever l'IP que le serveur PPPoE a donné à l'interface WAN du routeur
Q31) Indiquer à quoi on voit que la session est active
-> Vérifier que le ping passe entre PC client 172.20.x.y et serveur 194.0.0.9 ( interface PPP du serveur )
Analyse des échanges = Mode Debug
-> Lancer le debug sur le routeur en tapant via console router# debug atm packet
Capturer les messages dans un fichier texte ( sous hyperterminal Menu Transfert > Capturer le texte
sous putty: Session / logging, Printable output, mettre un nom.txt )
Attendre 1 minute, les paquets ATM défilent.
-> Faire un ping du routeur ( via console pour le voir dans le debug ) vers le serveur PPPoE.
-> Terminer la capture du fichier dans hyperterminal.
Arrêter le debug du routeur en tapant en aveugle router# undebug all
-> Ouvrir le fichier créé.
Q32) Utiliser l'arbre des protocoles donné en cours et dire ce que signifie les valeurs des champs LLC et OUI.
Quel est le champ TYPE de RFC1483 ( ou RFC2684 ) ?
La trame Ethernet qui suit est-elle avec son champ FCS ou non ?
Q33) Chercher un paquet de TYPE de RFC1483 en 1ère ligne = 07.
Grâce à l'annexe du protocole RFC2684, expliquer le contenu.
J. Millet
Routeur ADSL 8/8
Configuration de l'Aurora Presto: ( Pour information !! ne pas modifier ou appeler l'enseignant )
- Le testeur est en ATU-C ( DSLAM ) en mode bridge ( Pont ATM/Ethernet = transparent au dessus ).
- On a activé le VP, VC 8,35: Vérifier en allant dans le menu ATM ( F4 Config / ATM/... )
- Reste de la configuration:
Confg puis Config IP: Src: son adr, Dest: adr modem, DGW: Son adr, Spécifier
Config Trame IP => DIX, LLC Snap, Bridge Type 7, Pas compress entete
Config Protocole: Bridged
J. Millet
Annexe Routeur ADSL
1/6
Annexes Trames RFC2684 ( RFC1483 ) Ethernet, IP
RFC 2684 ( remplace RFC 1483 )
RFC 2684 ( qui remplace RFC 1483 ) définit 2 méthodes d'encapsulation pour interconnecter des réseaux sur AAL5 ( Couche
d'adaptation 5 ) d' ATM en mode non connecté routé ou ponté.
-> LLC = Multiplexer plusieurs protocoles sur un unique circuit virtuel ATM.
Le type de protocole de chaque PDU est identifié par un entête LLC ( Lien Logique de Contrôle ) = préfixe IEEE 802.2.
-> VCmux = Multiplexer plusieurs protocoles en affectant chaque protocole sur un circuit virtuel ATM séparé.
( chaque circuit virtuel ATM transporte les PDUs d'un seul type de protocole ).
Le choix d'utiliser l'encapsulation LLC ou VCmux dépend de l'implémentation et des contraintes du système = Choix du FAI.
( LLC = moins de circuits virtuels ATM utilisés, VCmux = meilleur rendement de protocole avec moins d'entête )
En pratique le choix est fait par configuration des entités qui veulent communiquer ( pas de champ ATM permettant d'indiquer le choix )
pour un PVC ( Permanent VC utilisé en ADSL = sans négociation ).
Charge utile ( PDU d'AAL5 ) avec l'encapsulation LLC
LLC obligatoire si plus d'un protocole doit être transporté sur un même circuit virtuel.
* LLC Mode Routé
LLC
NLPID
( 3 octets )
( 1 octet )
DSAP SSAP Contrôle Identificateur
couche
0xFE
0xFE
0x03
protocole
PDU
PDU
( jusqu'à 216 – 4 octets )
Dans le cas d'IP, on remplace NLPID par un entête SNAP: OUI et PID
La valeur de LLC indique cette modification.
LLC
OUI
PID
Organism Unique
Protocol
( 3 octets )
DSAP
0xAA
SSAP
0xAA
Identifier
Identifier
( 3 octets )
( 2 octets )
PDU
Contrôle
0x03
Si OUI = 0x00-00-00 => PID est un "EtherType"
( 0x800 = IPv4
0x806 = ARP,... )
* LLC Mode Ponté avec Ethernet 802.3 ( indiqué par OUI, le PID indiquant si on transmet le FCS Ethernet ou pas )
LLC
OUI
PID
PAD
Adr Dest
suite trame MAC
Organism Unique
Protocol
avec FCS si PID=0x00 01
( 3 octets )
( 2 octets )
MAC
Identifier
Identifier
sans FCS si PID=0x00 07
( 6 octets )
( 3 octets )
( 2 octets )
DSAP SSAP Contrôle
0x00 0x01
0x00 0x00
ou
0xAA 0xAA
0x03
0x00 0x80 0xC2
0x00 0x07
si PID=0x000E => trame de gestion de spanning-tree "hello packets"
( toutes les 2 s par défaut )
Charge utile ( PDU d'AAL5 ) avec l'encapsulation VCmux
* VCmux mode routés
PDU AAL5 = PDU du protocole routé
* VCmux mode pontés: On ajoute un champ PAD
Si c'est Ethernet
PAD
Adr MAC Dest
( 2 octets )
( 6 octets )
0x00 0x00
J. Millet
Suite Trame Ethernet
FCS d'Ethernet en option
( selon le circuit virtuel et
choix de configuration )
Annexe Routeur ADSL
2/6
PPPoE ( RFC 2516 )
Le contenu ( payload ) de la trame Ethernet qui contient du PPPoE a un champ en plus de 8 octets = 32 bits après le
type Ethernet.
VER
4 bits
8 octets
TYPE
4 bits
CODE
8 bits
SESSION_ID
16 bits
LENGTH
16 bits
PAYLOAD PPPoE
~
Champ VER = 4 bits = 0x1 pour cette version de PPPoE ( rfc2516 ).
Champ TYPE = 4 bits = 0x1 pour cette version de PPPoE ( rfc2516 ).
Champ CODE = 8 bits voir schéma dans le cours ou tableau suivant.
SESSION_ID field = 16 bits choisi lors de la phase de découverte
pour identifier les échanges de la session.
LENGTH = 16 bits = Longueur du payload PPPoE ( n'inclut pas les entêtes ).
PAYLOAD PPPoE = La charge utile dépend de la phase de communication (voir ensuite)
- soit des TAG ( format TLV Type-Longueur–Valeur ) en PPPoED,
- Soit une trame PPP simplifiée ( seulement champ Protocole + Payload PPP ) en session PPP.
Il y a 3 phases dans la connexion PPPoE:
1) Phase de découverte PPPoE = PPPoED => Dans la trame Ethernet TYPE = 0x8863
La partie découverte PPPoE sert à définir une session.
A la fin de la découverte les appareils ont - défini un numéro de session PPPoE SESSION_ID
- échangé leur adresses Ethernet.
Etapes successives de la découverte PPPoE:
PADI ( PPPoE Active Discovery Initiation ): CODE = 0x09 et SESSION_ID = 0x0000
= Envoi en broadcast ethernet ( adr mac ff:ff:ff:ff:ff:ff ) d'une requête
demandant aux serveurs PPPoE à l'écoute des offres de services.
PADO (PPPoE Active Discovery Offer ): CODE = 0x07 et SESSION_ID = 0x0000
= Envoi à l'adresse ethernet du demandeur d'une offre de service avec
en particulier le nom du serveur ( AC-name: Access Concentrator Name ).
PADR (PPPoE Active Discovery Request ): CODE = 0x19 et SESSION_ID = 0x0000
= Choix d'un serveur parmi les offres reçues
= envoi à l'adresse du serveur choisi de PADR = Requête de connexion.
PADS ( PPPoE Active Discovery Session-confirmation ): CODE = 0x65
= Le serveur accepte de gérer la connexion et fournit un SESSION_ID.
2) Session PPP => Dans la trame Ethernet TYPE = 0x8864
CODE de l'entête PPPoE = 0x00.
SESSION_ID de la session défini à la phase de découverte.
3) Fermeture de connexion = PPPoED => Dans la trame Ethernet TYPE = 0x8863
PADT (PPPoE Active Discovery Terminate): CODE = 0xa7 et SESSION_ID de la session.
= Fin de connexion
Remarque: Lors de la phase découverte les systèmes échangent des informations = TAG.
Un TAG a la structure TLV = Type – Length - Value
Type = 16 bits indiquant l'information
Length = 16 bits indiquant la longueur de la valeur
Value = Valeur de l'information
Exemple: Type du TAG PPPoE dans un paquet PADO = 0x0102 => AC-Name
=> Le serveur envoie son nom
J. Millet
Annexe Routeur ADSL
3/6
J. Millet
Annexe Routeur ADSL
4/6
TRAME ETHERNET 802.3
Préambule
Sof
7 oct
1
adr
desti
6
adr
source
6
Longueur
/ Type
2
DSAP
SSAP
Ctrl
1
1
1
802.3 MAC
802.2 LLC
Org
Code
3
Type
Données
FCS
3
38 à 1492
4
802.2 SNAP
Le LSB est transmis en premier.
SOF = Start of Frame delimiter.
Longueur = Nombre d’octets dans la trame sans le contrôle d’erreur
Si Longueur/Type >1536 ( 0600H), ce champ est type et on n’a pas les champs au dessus mais le niveau 3.
Si le type est:
0800H: Données = Datagramme IP
0806H: Données = 28 octets ARP + 10 octets PAD de bourrage pour avoir au moins 38 octets ( recherche ADR MAC pour une IP )
0835H: Données = 28 octets RARP + 10 octets PAD de bourrage pour avoir au moins 38 octets
8863H: Données = PPPoE Discovery
8864H: Données = PPPoE en session PPP
PAQUET Ipv4
version
4 bits
long
entête
TOS
type of
service
4 bits 8 bits
paquet 1
MSB=bit0
longueur
totale
identification
16 bits
16 bits
LSB=bit31
MSB
flags
3 bits
paquet 2
fragment
offset
TTL
durée
de vie
13 bits
8 bits
LSB
MSB
Protocole
8 bits
paquet 3
Somme
de
contrôle
d’entête
16 bits
LSB
adr IP
source
adr IP
derstinataire
32 bits
paquet 4
MSB
LSB
32 bits
paquet 5
MSB
LSB
options
données
Entête IP
Pour l’entête la transmission se fait en format grand indien : D’abord bit 0 à 7 puis 8 à15, puis 16 à 23,...
longueur entête = nombre de mots de 32 bits composant l’entête = 5 + options
TOS en Ipv4 = 3 bits de priorité du datagramme, bit D (délai), bit T (débit), bit R (fiabilité), bit C (coût), 3 bits non utilisés.
TTL ( time to live ): Nombre de sauts ( passage de routeurs ) avant élimination du paquet
Si le protocole est:
J. Millet
6: Données du paquet IP = segment TCP ( telnet, ftp, smtp,... )
17: Données du paquet IP = segment UDP ( dns, snmp, netbios=0x89... )
1: Données = ICMP ( ping )
Annexe Routeur ADSL
5/6
Trame ARP utilisé avec IPv4 pour résolution d'adresse
Trame Ethernet 802.1q
J. Millet
Annexe Routeur ADSL
6/6
TP TL53
TP SIP
Matériel:
Client ( Win7 64 )
adr IP:
192.168.1.3
- xlite 2
- xlite 3
- Express talk
- Open Office
ET serveur SIP Axon NCH
sur port 5060
- extensions 0951222222
mdp 1234
- extensions 0951333333
mdp 1234
- modif de son Dial Plan:
Pas de règle pour 0
Client ( Win 7 64 )
adr IP:
192.168.1.13
Serveurs
( image vmware )
adr IP:
192.168.1.23
- xlite 2
- xlite 3
- Express talk
- vmplayer
ET image vmware
de W2000_SIP
de Asterisknow
de Trixbox
HUB
Même machine physique ( serveur en vmware )
Objectifs:
- Comparer différents logiciels clients et serveurs SIP ( pas forcément les solutions les plus performantes = TP Asterisk )
=> En dégager une vision des éléments principaux à configurer, ceux que l'on retrouvera d'une solution à une autre.
- Analyse du protocole SIP de signalisation et RTP/RTCP de transport multimédia.
- Connecter un serveur à un opérateur public SIP ( simulé ).
- Tester les capacités d'un serveur.
J. Millet
Logiciels SIP
TP TL53
Logiciels SIP
Notions de base: - Le serveur SIP est en écoute sur le port SIP 5060.
- Le terminal s'enregistre en appelant ce port 5060 et en indiquant son port SIP ( par défaut aussi 5060 ).
Le serveur accepte et appelera avec ce port indiqué pour la signalisation SIP.
- Le terminal est en écoute sur son port SIP.
I) Les clients SIP = UA User Agent
Nous utiliserons des clients logiciels ( Softphones ) ou matériel ( Siemens C450 IP ).
Dans un premier temps le serveur sera Asteriskwin avec les éléments préconfigurés.
- Démarrer l'image W2000 en cliquant sur le fichier vmx ( cela lance vmplayer ).
Se connecter au serveur W2000: Administrateur, tpvoip
Relever l'adresse IP ( cmd / ipconfig ).
- Noter l'adresse IP du client Win7 qui héberge le PC virtuel du serveur.
- Noter l'adresse IP de l'autre client.
- Démarrer le logiciel Asteriskwin sur le PC ( virtuel ) serveur = Icone PBX Manager & Console.
Il émule "modestement" un serveur asterisk sous windows:
=> Cygroot/asterisk ( pour avoir plus de fonctionnalités, il faut payer ).
On trouve les fichiers .conf de Asteriskwin dans Cygroot/asterisk/etc
- Utiliser l'interface d'administration: Admin/ Pbx Manager, mot de passe "admin", Dial Plan
Q1) Noter les postes définis par défaut dans Asteriskwin ( colonne Extension ) ?
- Sortir du manager ( en haut
puis
Quit ).
- Lancer le serveur SIP: Tools/ Pbx Start.
Pour chacun des logiciels clients, en s'aidant de la présentation page suivante, répondre aux questions:
Q2) Relever les éléments qui définissent un usager ( cases à remplir quand on définit un compte usager SIP ) ?
Q3) En allant dans les pages de configuration réseau, lesquels autorisent de paramétrer le port SIP ?
Quel est le port SIP par défaut ? Peut-on utiliser le logiciel sur le PC du serveur si le serveur est en 5060 ?
Q4) Liste des codecs en G... utilisables
Certains logiciels permettent de faire d'autres types d'échanges que la voix ( Chat = Dialogue textuel, tableau blanc, vidéo ).
Q5) Applications autres que la voix pour communiquer ( regarder les menus et s'il y a des codecs vidéo ) ?
Q6) Quels logiciels donnent des informations ? ( fichiers de log, messages d'état,... )
- Configurer 2 Xlite2. Faire une communication entre ces 2 logiciels.
- Remplacer un Xlite2 par un Xlite3, configurer, faire une communication.
NB: Fermer complètement le logiciel sinon il garde le port SIP => regarder en bas à droite de l'écran
- Remplacer Xlite3 par Xpress Talk, configurer, faire une communication.
- Remplacer Xpress Talk par le téléphone Gigaset C450 IP, configurer:
- Sur le téléphone, enlever le DHCP ( Menu/ / réglages / base / réseau local [PIN 0000] /DHCP ), définir une adresse IP
- Relier la base au réseau IP.
- Depuis un PC, avec le navigateur web, se connecter à l'interface de configuration du téléphone, mot de passe = code PIN 1111.
- Paramètres/Téléphonie/Connexions ( on y est par défaut ):
Désactiver le compte Gigaset.net ( décocher Actif )
Editer l'autre compte: Connexion IP, remplir les infos de l'usager.
Tester la communication.
- Fermer l'image vmware w2000 qui intégre Asteriskwin.
J. Millet
Logiciels SIP
1/6
TP TL53
Xlite 2
Xlite 3
Express Talk
Gigaset C470 IP
Pour la config d'un compte:
- Clic gauche sur icône menu ( droite de clear ) / System
Settings / Sip Proxy / entrer dans une ligne = 1 compte pour 1
proxy
( Domain et Sip Proxy = IP serveur )
Pour la config d'un compte:
- Clic droit/ SIP Account settings
une ligne = 1 compte pour 1 proxy
Pour la config d'un compte:
- Settings / Lines
Pour la configuration réseau:
- menu / System Settings / Network
- autres éléments réseaux = ceux du PC
Pour la configuration réseau:
- clic droit / Options / Advanced ( en bas
à gauche ) / Network
- autres éléments réseaux = ceux du PC
Pour la configuration réseau:
- Settings / Network
Pour les codecs:
Menu/ Advanced System Settings / Codec Settings
Pour les codecs:
Clic droit/Options/ Advanced / Audio Codecs
Pour les codecs:
- Pas de config,
utilise G711 A, G711 µ, GSM
Pour les codecs:
- Paramètres/Téléphonie/Audio
Pour relancer l'inscription:
Fermer le logiciel, rouvrir.
Pour relancer l'inscription:
Désactiver SIP Account Settings et fermer la fenêtre (
Close ), activer SIP Account Settings et fermer, il essaie
de se connecter.
Pour relancer l'inscription:
- Ouvrir Settings/Lines, refermer.
Pour relancer l'inscription:
- bouton "Définir" du compte SIP
Pour infos de log:
Clic droit / Diagnostic log
Pour infos de log:
- Clic droit/Options/ Advanced / Diagnostics
- Clic droit / Open Diagnostic log
Pour infos de log:
Bas de l'affichage
Pour infos de log:
Onglet Statut et Statut du compte
( page Paramètres/Connexions )
J. Millet
Logiciels SIP
Pour la config d'un compte:
1) Sur le combiné: Adr IP de la base
Appui bouton bleu de la base et lire sur le combiné
qui sonne => Lire la valeur
OU Menu / réglages / base / réseau local [PIN
1111] / adresse IP => Lire la valeur
2) Depuis un navigteur web: http://adr_IP
mot de passe = code PIN 1111
3) Paramètres > Téléphonie > Connexions
Clic sur "Editer" du compte actif
Pour la configuration réseau:
- navigateur web ou combiné, voir avnt.
2/6
TP TL53
II) Serveurs SIP
Nous utiliserons des clients logiciels ( Softphones ): Les plus fiables et ergonomiques Xlite3 ou Express Talk.
Notre serveur pour ce TP ne comprend pas de carte TDM => IP PBX ou PBX IP Only.
Il existe différents serveurs SIP plus ou moins performants:
Peu performants:
Performants:
- SIP Server de la société Brekeke est un serveur SIP utilisant Java avec serveur Apache Tomcat.
- Axon NCH SIP Server
- Asteriskwin ( émulation sous windows de Asterisk )
- Distributions implémentant Asterisk: Asterisknow de Digium, Trixbox de Fonality, Elastix
- SER ( SIP Express Router ) ou OpenSER ( sur Renater réseau de recherche français )
Asterisknow sous VMWARE
Asterisknow était une distribution basée sur rPath Linux développée par Digium. Trixbox étant bien plus performante ( étudiée
ensuite ), Asterisknow a repris l'interface de configuration Freepbx et la distribution CentOs.
Asterisknow permet de mettre simplement en oeuvre Asterisk à condition de ne pas avoir de cartes TDM ou d'avoir des
Digium ( pour les autres cartes, pas de réponse sur leur forum... ) => Logiciel libre avec tendance à bloquer l'utilisation !
NB: Express Talk peut s'enregistrer avec Asterisknow sous vmware mais ensuite il y a des problèmes de communications du
fait des interfaces réseaux de vmware ( NIC interfaces: Le logiciel mélange des adresses IP, voir les messages ).
=> On utilisera 2 terminaux Xlite pour tester les serveurs.
- Lancer la machine virtuelle contenant Asterisknow : Cliquer sur Asterisknow.wmx.
* Relever l'adresse IP une fois Asterisknow lancé: root, tpvoip, ifconfig
* Vérifier depuis un autre PC que l'on peut joindre cette machine virtuelle = ping.
- Accès distant par GUI
* Lancer Firefox sur une autre machine à l'adresse de l'Asterisk.
* Se connecter avec freepbx / fpbx
- Onglet "Admin" en haut, on voit sur la gauche 2 onglets Setup et Tools.
Les différentes fonctions ( modules ) ont été installées via "Module Admin"
NB: Il n'y a pas d'éditeur de fichier pour éviter de créer des incohérences entre des modifications dans le fichier en texte et
dans l'interface http. On peut en ajouter en chargeant un module "Configuration Editor" pour freepbx.
- Créer un usager SIP 100(Extensions, Generic SIP Device, Submit, remplir les cases utiles, Submit en bas, OK pour pas de mot de passe )
- Cliquer en haut "Apply Configuration Changes", recommencer pour un téléphone 101.
- Menu "Tools/Asterisk CLI", taper la commande CLI "sip show peers" pour vérifier les enregistrements réalisés.
- Se connecter en ssh ( logiciel externe ou module "Tools/Java ssh" ) car on n'a pas ajouté de module "File Editor".
Q7) Recopier dans votre compte-rendu la définition de l'usager 100 qui est faite dans le fichier /etc/asterisk/sip_additionnal.conf
Q8) Quel est le contexte associé ( traitement des numéros demandés ) ?
- Accès local par Terminal.
* Toujours en ssh, fermer le fichier édité.
* Se connecter à Asterisk: asterisk –rvvvvvv
* Réaliser un appel
Q9) Que voit-on en début de première ligne après executing ? Qu'est ce qui est affiché en bleu sur les lignes apparues ?
Q10) Recopier dans votre compte-rendu les contextes et macros utilisées pour un appel ( après executing et @ ) ?
Q11) Relever le code d'écho dans "Setup/Feature Codes".
- Tester en appelant *43.
- Relever la section utilisée ( après executing et @ )
Q12) Quelles sont les 3 fonctions utilisées ( en bleu après la section ) ?
J. Millet
Logiciels SIP
3/6
TP TL53
En fait il y a aussi des fonctions qui n'apparaissent pas directement, pour toutes les voir il faut aller dans le fichier:
- Quitter la CLI avec "quit", dans le répertoire /etc/asterisk, faire grep *43 extensions_additionnal.conf
Q13) Recopier ces lignes qui réalisent la fonction d'écho dans votre compte-rendu.
- Fermer l'image Asterisknow.
Trixbox sous VMWARE
Trixbox est une distribution basée sur CentOS Linux qui intègre Asterisk et les logiciels liés. Son ancien nom est
Asterisk@home. Elle est développée par Fonality.
Ce serveur sera utilisé de manière approfondie dans le TP Asterisk. On se contentera ici de créer et utiliser 2 postes.
- Lancer la machine virtuelle contenant Trixbox.
* Cliquer sur Trixbox.wmx, cela lance wmplayer en virtualisant Trixbox.
* Relever l'adresse IP une fois Trixbox lancé ( se connecter: root, tpvoip et ifconfig eth0 ).
* Vérifier depuis un autre PC que l'on peut joindre cette machine virtuelle = ping.
- Accès distant par GUI en http:
* Lancer Firefox sur une autre machine à l'adresse de l'Asterisk.
* Se connecter en cliquant en haut à droite sur "switch"puis maint / password.
- Créer 2 usagers SIP 100 et 101, penser à activer les changements.
( onglet PBX, PBX Settings, module à gauche "extensions", Device = Generic SIP, cliquer submit,
indiquer les valeurs nécessaires = user extension, Display name, SIP Alias,
en bas cliquer sur "submit" puis en haut Apply Configuration Changes )
- Revenir sur les usagers ( à droite, cliquer sur un des 2 usagers ).
Q14) Quel est le contexte associé à un usager créé ?
- Lancer Xlite et Express Talk sur le PC Win7 192.168.1.13, configurer ces postes en 100 et 101.
- Onglet Tools, menu "Asterisk CLI", taper la commande CLI "sip show peers" pour vérifier les enregistrements.
- Onglet PBX / Config Files Editor, répondre question suivante.
NB: Si ces menus n'apparaissent pas, vous êtes mal connecté en http, recommencer ( "switch"puis maint / password ).
Q15) Où sont placés les usagers SIP créés, sip.conf ou sip_xxxx.conf ?
- Onglet PBX / Config Files Editor, extensions.conf, cliquer le nom du contexte de l'usager dans la colonne de gauche.
Q16) Que voit-on alors dans la fenêtre ?
- Accès local par Terminal ( Console ).
* Ouvrir un terminal dans Trixbox ( clic dans la fenêtre vmplayer puis root/tpvoip )
* Se connecter à Asterisk: asterisk –rvvvvvv
* Réaliser un appel
Q17) Conclusion par rapport à Asterisknow ?
- Accès distant à Trixbox par SSH.
* Lancer ssh, se connecter à Trixbox avec root / tpvoip
* Lancer la connexion distante avec messages d'états: asterisk -rvvvvvv
* Taper la commande CLI: dialplan show nom_context ( nom_context = celui de Q14 ).
III) Protocole SIP
- Lancer une capture wireshark sur un PC client.
- Réaliser un appel, parler un peu !
- Telephony/VoIP Calls. Parfois Wireshark découpe l'appel => Mettre en surbrillance tous les éléments ( cliquer ).
J. Millet
Logiciels SIP
4/6
TP TL53
Q18) Incorporer à votre compte-rendu la fenêtre Flow ( faire Save As dans un fichier txt pour la rendre lisible ).
Commenter les éléments importants ( machines intervenant, contenu message INVITE, flux RTP ).
- Cliquer sur une trame RTP puis Telephony/RTP/Stream Analysis.
Q19) Quelle est l'ordre de grandeur du débit une fois l'appel stabilisé ? Quel codec ?
- Faire VoIP Calls, choisir la communication, faire Player / Decode => On voit le son en temporel.
- Sélectionner en cochant en dessous un sens ou les 2 de conversation et écouter: Play.
IV) Connexion du serveur à un réseau SIP ( SIP Trunk )
On veut réaliser l'installation suivante:
Le réseau public SIP sera réalisé par le serveur Axon NCH SIP Server .
- Fermer tout logiciel SIP ( libérer le port 5060 ) sur le PC en 192.168.1.3,
lancer le serveur Axon sur ce PC sur l'autre PC
( celui en 192.168.1.3 qui n'a pas l'image vmware de Trixbox )
En cas de problème: interface d'administration: Bouton "Web Control",
identifiant : Admin ( respecter majuscule minuscules !!! ), mot de passe: admin ou rien selon la version
extensions pour définir un téléphone ( il lui faut un mot de passe ).
- Lancer Express Talk sur le même PC ( Le serveur utilise le port SIP 5060, ce client par défaut utilise 5070 )
( ou un poste externe si un hub est disponible sur la table )
Définir les paramètres du compte utilisé si ce n'est fait:
0951333333 avec mot de passe 1234
serveur en 192.168.1.3
Le serveur est configuré pour définir 2 extensions: 09 51 33 33 33 et 09 51 22 22 22
- Vérifier que le poste 09 51 33 33 33 s'enregistre sur le serveur ( messages en bas de la fenêtre du logiciel en bleu ).
On va configurer le serveur Trixbox pour qu'il ait le numéro public 09 51 22 22 22 => Définition d'un accès externe SIP. On
définit un faisceau ou trunk puis un acheminement ou route.
- Se connecter au serveur Trixbox par http, onglet PBX / Pbx Settings.
- Définir le faisceau ( Trunk ): Menu Setup puis à gauche "Trunk"
=> Add SIP Trunk
Outbound Caller ID ( CID Sortant ) : 0951222222
Outgoing Settings / Trunk Name: Abo_ext_SIP
Outgoing Settings / Peer Details
host=192.168.1.3
( IP du serveur, pas celle de Trixbox !! )
username=0951222222
(votre numéro de téléphone )
secret=1234
( mot de passe pour notre compte sur le serveur public )
type=peer
( liaison vers un autre serveur, rappel: type = friend pour connexion d'un téléphone local )
insecure=very
Effacer le contenu de USER Details dans les Incoming Settings
J. Millet
Logiciels SIP
5/6
TP TL53
=> Enregistrement sur le serveur public: Descendre à Register String
Mettre l'instruction dont le format est: numéro:mot de passe @ IP du serveur/numéro
sachant - que le numéro est 0951222222 avec le mot de passe donné dans Peer Details avant.
- que le serveur public est sur le PC 192.168.1.3.
Remarque: Il faut absolument le "/numéro" après le "@IP_serveur" car sinon l'enregistrement se fait mal ( on a s = numéro
inconnu ce qui fera que les appels entrants seront traités sans le bon n° appelé = DID )
- Après les Submit, Apply, Reload... Vérifier sur le serveur public que le téléphone 0951333333 et le serveur Trixbox
sont enregistrés:
Web admin, Admin, admin ou rien selon version ( voir dans option, onglet "Web Access" )
Extensions => on doit voir leurs IP et leurs numéros de téléphone
- Vérifier sur Trixbox les bons enregistrements ( adresses IP cohérentes ): En CLI, sip show peers
( si vous avez fait une erreur avant, même en l'ayant corrigée, le serveur peut garder des mauvaises valeurs => reboot )
Outbound route: On peut alors définir dans Trixbox l'acheminement de sortie ( lien entre numéro extérieur appelé et faisceau )
Un téléphone local utilisera un préfixe pour indiquer qu'il veut appeler l'extérieur
PBX / PBX Settings / Setup / Outbond routes
Route name: Op_ext_SIP_sortant
Dial Patterns:
0|.
Masque de numérotation: On compose le préfixe 0 sur le téléphone local qui sera
éliminé et Trixbox appelle sur le réseau public le reste du n° qui est de format
quelconque ( . )
Trunk Sequence: Mettre le faisceau défini avant: Abo_ext_SIP
- Tester un appel depuis un poste local 100 ou 101 vers le 0951333333 en mettant le préfixe pour sortir.
Inbound route: On peut enfin définir l'acheminement en entrée ( lien entre numéro interne appelé et poste local )
Un appel extérieur ira vers un téléphone local par la SDA ( sélection directe à l'arrivée = lien n° public <–> n° privé )
PBX / PBX Settings / Setup / Inbound routes
Description: Op_ext_SIP_entrant
DID number: 0951222222
( Caller ID number = n° appelant doit rester vide pour recevoir tous les appels )
Set Destination: Cocher Extensions et mettre 100
=> Les appels au 0951222222 iront au poste local 100
Notre serveur public gèrant Trixbox comme une extension ( type=friend ) plutôt que comme un peer, Trixbox ne peut traiter
correctement les trames SIP d'un appel entrant => numéro appelé inconnu ( DID ).
( message en CLI: "Received incoming SIP connection from unknown peer to ... " )
On a le numéro appelé sur notre réseau "public" dans les trames SIP ( voir le champ From du message SIP Invite ) mais
Trixbox ne le traite pas en tant que tel => n° inconnu. Il ne peut associer la route entrante au numéro appelé.
- Ajouter à la définition du trunk, partie "outgoing settings" ( ! ) pour traiter ces appels entrants la ligne
"context=from-trunk"
( Autre solution: Accepter les appels SIP anonymes pour les téléphones locaux => Enorme faille de sécurité
General settings / Security Settings et mettre "Allow Anonymous Inbound SIP Calls" à yes. )
- Tester un appel depuis le 0951333333 vers le 0951222222 qui doit aller au poste local 100.
Q20) Recopier dans votre compte-rendu la ligne qui contient la commande Dial ( en CLI: ssh puis asterisk –rvvvvvv ).
Remarque: On ne fera pas les tests de capacités du serveur pour raison de temps. On aurait utilisé des logiciels type SIPP ou
ASTERTEST qui "stresse" le serveur ( envoi de multiples.requêtes pour simuler des appels nombreux et analyse du
comportement du serveur ).
J. Millet
Logiciels SIP
6/6
TP TL53
TP ASTERISK
Matériel: Client et Config = 1 PC Win7 avec logiciels Xlite, Ekiga, SSH, Firefox, Thunderbird, OpenOffice, client Hudlite.
Serveur = 1 PC avec Asterisk et les cartes Dialogic Diva server 4Z et 4 BRI avec une disquette Ghost,
1 Hub,
1 téléphone IP SIP Granstream,
1 Siemens gigaset C450 IP ( SIP et RTC ),
1 PABX Matra avec 2 S0, 1 Z, 1 I.
Copie de capi.conf et musiques d'attente sur le bureau du PC de configuration.
Objectifs:
- Analyse de l'organisation d'un serveur Asterisk
- Configuration installation locale Asterisk ( usager, plan de numérotation, groupes d'usagers, renvois,... ).
- Configuration d'accès externe par cartes TDM ( Canaux ZAP, accueil, discrimination ).
- Fonctionnalités avancées: Conférences, SVI Serveur Vocal Interactif.
J. Millet
Asterisk
TP TL53
Serveur Asterisk ( Trixbox )
I) Définition des éléments de l'installation
Ce tp aborde la configuration du serveur de téléphonie sur IP d'une entreprise: Logiciel Asterisk.
On utilise la distribution Trixbox qui intègre ce logiciel.
Le serveur Asterisk gère les appels téléphoniques et fait le lien entre côté privé interne à l'entreprise et côté public en externe.
Côté privé
Téléphonie sur IP en SIP,
Les terminaux internes à l'entreprise sont déjà configurés:
n° 100 pour logiciel Xlite,
n° 101 pour un visiophone,
n° 102 pour le sans fil.
=> numéros privés à 3 chiffres.
Côté public
Téléphonie TDM = Réseaux en commutation de circuit = RTC et RNIS
( TDM = Time Division Multiplex, carte TDM analogique = RTC, carte TDM numérique = RNIS ).
Les réseaux publics RTC et RNIS sont simulés par un PABX qui permet au maximum des n° à 4 chiffres
=> numéros publics à 4 chiffres ( au lieu de 10 chiffres comme en réalité en France ).
Côté public on a installé 2 téléphones:
PUBLIC
n° 4002 pour le numérique Matra et
n°4001 pour le sans fil (il a 2 sorties, on a mis l'une côté privé en IP,
l'autre côté public en RTC).
Gigaset C 450 IP
Téléphone DECT
à sorties SIP et RTC
Privé
Z
4001
RTC
WAN IP
non utilisé ici
IP
102
Z
I Matra
4000
IP
4002
RNIS
+ propriétaire Matra
LAN IP
S0
IP
FXO
IP
T0
Téléphone IP
SIP sans PoE
poste 101
Softphone = Xlite
Navigateur web
OpenOffice
poste 100
3030
3031
3032
- un PABX simule RTC
et RNIS ( d'où un téléphone
numérique Matra I = RNIS
amélioré mais pas compatible,
d'où des numéros à 2 chiffres )
Asterisk avec
carte ethernet = IP
carte Diva Server 4 Z = FXO
carte Diva Server 4 BRI = T0
- Pour simplifier, il n'y a
qu'un LAN et pas de
WAN ( pas de routeur
pour les séparer ).
Q1) Quels sont les abonnements dont dispose l'entreprise pour communiquer avec l'extérieur selon le schéma ?
Q2) Avec les équipements mis dans le serveur Asterisk et les abonnements, par où pourra-t-on téléphoner à l'extérieur ?
Avantages et inconvénients des différentes technologies ?
J. Millet
Asterisk
1/10
TP TL53
II) Interfaces de dialogue
Outil de dialogue local : Console
- Se connecter sur le PC qui héberge Trixbox: Identifiant root et mot de passe tpvoip
Q3) Faire ifconfig et relever l'adresse IP du serveur.
- Passer dans le répertoire asterisk:
cd /etc/asterisk
- Se connecter à Asterisk qui est lancé lors du boot: Taper asterisk -rvvvvvv
( r pour remote, v niveau de verbose = précision des messages d'état )
=> On est en mode CLI ( commande en ligne = Prompt finissant par >CLI: ). Taper help
Q4) Relever les commandes "SIP show ..." ( help sip show ) ? Y a-t-il une commande commençant par capi ... ( faire help capi ) ?
- Quitter la console ( sinon en root, cela peut perturber l'interface web ensuite ): Taper exit
Outils de dialogue distant ssh
Au lieu de se connecter via terminal en local, on utilise le PC client distant:
- Sur l'autre PC qui héberge le client Xlite3 lancer une connexion SSH vers le serveur Asterisk
@IP du serveur relevée avant
identifiant: root mot de passe: tpvoip
( sous Asterisknow, le login est admin, il faut passer en root pour pouvoir de se connecter au serveur Asterisk: sudo su puis mot de passe )
- Passer dans le répertoire asterisk: Taper
cd /etc/asterisk
- Créer un fichier capi.conf: nano capi.conf
puis copier le contenu du fichier qui est sur le bureau ( CTRL A puis CTRL C sous windows et Edit/Paste en SSH )
puis CTRL O puis ↵ puis CTRL X
- Lui donner les droits maximum: chmod 777 capi.conf
- Lancer la connexion distante: asterisk –rvvvvvv
stopper le logiciel pour que capi.conf soit intégrer dans un redémarrage: stop now
redémarrer asterisk –cvvvvvv
Q5) En CLI, voit-on après création de capi.conf des commandes capi ... ? Quelle information donne-t-elle pour l'instant ?
Outil de dialogue distant graphique: GUI ( Graphical User Interface )
- Sur le PC client, lancer le navigateur Internet Explorer
( avec Firefox les menus sont mal affichés )
http: //@IP_serveur ( remplacer @IP_serveur par sa valeur )
- Passer en mode admin:
En haut à droite après User Mode clic sur "Switch"
=> Identifiant: maint
Mot de passe: password
Remarque: Si Asterisk est démarré en console avec l'identifiant root, certaines pages risquent de ne pas s'afficher.
( on peut faire "amportal restart" puis asterisk –r )
J. Millet
Asterisk
2/10
TP TL53
III) Configuration locale minimale du serveur Asterisk par GUI
L'interface http basée sur le logiciel Freepbx dialogue avec le logiciel Asterisk et modifie ses fichiers de configuration.
En http on a les menus: - FreePBX ou PBX Settings Configuration par interface du logiciel
- Edition Configuration ou Config Edit = Faire la configuration par édition des fichiers de conf
- Information d'Asterisk ou Asterisk Info = Eléments définis dans le serveur actuellement.
- Manager de périphériques ou Endpoint Manager = Utilisation de configurations prédéfinies par fichier xml
- CDR Report (Call Detail Records) = Historique des appels.
On a ajouté à la configuration de base d'autres modules ( en ligne, avec login, Asterisk / PBX / PBX Settings / Tools ou Setup / Module Admin /
Check for update on line => Asterisk CLI = Console Asterisk, IVR = Digital Receptionnist = Standard automatique ou SVI, ... ).
Définir des usagers par FreePBX = PBX Settings
Nous allons utiliser le menu Asterisk/FreePBX ou PBX ( selon la langue ). On crée 2 usagers SIP 100 et 101.
- Asterisk > PBX > Setup > Extensions: Choisir Generic SIP puis clic submit.
- Mettre 100 comme n° = "user extension" et "Display name" et "SIP Alias"
puis clic submit en bas et OK ( même s'il dit qu'il vaudrait mieux mettre un mot de passe: secret )
- Activer les changements ( "activate changes" en barre orange en haut d'écran ) puis reload.
- Revenir sur l'usager ( "100 <100>" à droite ), une ligne context s'affiche cette fois. Modifier en mettant tp_sip.
- Sauvegarder et recharger.
- Recommencer pour un usager 101 ( idem pour context aussi ) => "Add Extension" à droite, submit,...
On a créé des usagers pour Asterisk sauf qu'au lieu de taper dans le fichier de conf les lignes de définitions, le logiciel l'a fait
pour nous. => On a 2 comptes de téléphones IP
- utilisant le protocole de signalisation SIP: 100 et 101.
- dont les n° composés dessus seront traités dans le contexte [tp_sip]
Définir le contexte [tp_sip] = Règles d'appels pour les téléphones = Plan de numérotation ( Dialplan )
- Lancer le téléphone Xlite3 sur le bureau du PC. Il est configurée ( n° de compte 100 et @IP du serveur ), il s'enregistre
auprès du serveur ( envoi de message SIP REGISTER au serveur indiquant qu'il est le n°100 et près à communiquer )
=> N° 100 affiché sur son écran..
- Vérifier que le visiophone est enregistré: N° 101 affiché en vert.
- Vérifier qu'un appel est impossible sans règle d'appel ( contexte [tp_sip] pour les 2 qui n'est pas défini )
Un usager SIP est défini par
- ses caractéristiques téléphoniques ( n°, codecs,… ),
- son plan de numérotation faits de sections = context.
Les règles d'appel sont définies dans le fichier extensions.conf ou les fichiers inclus ( include => nom_contexte ou
#include nom_contexte ).
Ce fichier .conf est fait de contextes = Sections du fichier [nom_contexte].
Les contextes ( sections du fichier ) sont faits de commandes: exten => extension,priority,Command(parameters)
extension est un numéro ou un ensemble de numéros ( pattern ): voir annexe
priority définit l'ordre de traitement ( Asterisk traite les règles de priorité 1, puis 2, puis 3,... )
Commandes:
Dial, Wait, Answer, Playback, Voicemail, Hangup, Echo ...
http://www.voip-info.org/wiki/index.php?page=Asterisk+-+documentation+of+application+commands
Pour cette configuration minimale, on va créer les règles d'appels:
- Dans PBX/Config Edit, choisir /etc/asterisk
- Ajouter une section: Taper en fin de fichier
J. Millet
puis extensions.conf
[tp_sip]
Asterisk
3/10
TP TL53
- Mettre dans la section ( écrire en dessous de [tp_sip] ) la règle de traitement
pour n° appelés en 100 ( _ = ensemble de n°, 1XX = n° de 100 à 199 )
on appelle ( Dial ) par le canal SIP ( port ethernet en IP en utilisant SIP ) le n° composé sur le téléphone ( ${EXTEN} ) :
=> Taper:
exten => _1XX,1,Dial(SIP/${EXTEN}) ; règle pour un téléphone de tp_sip:
- Sauvegarder avec update en bas en étant sûr d'avoir caractère pour caractère les lignes indiquées ( dont le _ ).
- Recharger avec reload en CLI ( via ssh ou console ou Trixbox/PBX/tools/CLI ).
Sans cela les lignes ajoutées ne sont pas prises en compte.
- En CLI
taper dialplan show => On voit tout le plan de numérotation ( tous les contextes )
taper dialplan show tp_sip => On ne voit que les règles d'appel pour le contexte tp_sip.
Xlite sur le PC client et le téléphone IP sont configurés et se sont enregistrés => Prêts à appeler.
PABX
- Tester s'ils peuvent s'appeler.
- Vérifier que l'appel *43 n'aboutit pas.
[tp_sip] ne dit pas ce qu'il faut faire pour cet appel
100
101
Contexte tp_sip
pour les 2
- Dans extensions.conf, de la même manière, ajouter dans [tp_sip] une fonction d'écho ( sans les commentaires ):
Taper les lignes en dessous de celle qui traite les appels en 1XX:
exten => *43,1,Answer()
; décrocher
exten => *43,2,Playback(demo-echotest)
; le serveur envoie l'annonce du début d'écho
exten => *43,3,Echo()
; écho de la voix
exten => *43,4,Hangup()
; raccroche
- Reload et tester en appelant *43.
IV) Cartes TDM ( Time Division Multiplex = Commutation de circuit )
On veut téléphoner à l'extérieur de notre site géré par Asterisk ( n° à 3 chiffres en 100 ). Pour cela on utilise dans ce tp des liens
avec les réseaux téléphoniques en commutation de circuit = TDM ( RTC analogique, RNIS en numérique ).
On utilise CAPI (Common Application Programming Interface = interface logicielle de dialogue avec appareil RNIS ) pour
dialoguer entre le serveur Asterisk et le logiciel des cartes téléphoniques.
RNIS
RTC
1carte Diva Server 4 BRI = 4 accès de base RNIS en mode TE ( Terminal Equipment ) branché au
réseau ( accès PABX = NT Network Termination ).
1 carte Diva Server Analog 4P = 4 accès analogiques RTC mais programmables aussi via CAPI.
=> Dans capi.conf, un contrôleur est défini par:
- son nom ( entre crochets ): [nom]
- son groupe de contrôleurs: group = 1
- son numéro: controller = 1 ( on ne peut avoir 2 fois un même n° )
- son contexte pour traiter les appels entrants: context = ...
Analyse de CAPI.conf
Q6) Relever les contrôleurs définis dans capi.conf ( nom, groupe, n° de contrôleur, contexte entrant associé ). Comparer à l'info
renvoyée en CLI par "capi info". ( remarque [general] n'est pas un contrôleur, cela regroupe des caractéristiques qui s'appliquent à tous )
Appel entrant: SDA ( sélection directe à l'arrivée = Lien n° public et n° privé )
On a défini comment traiter les appels internes venant d'un téléphone SIP => SIP.conf.
Téléphone SIP
=> Compte
défini dans
SIP.conf.
J. Millet
SIP.conf
Définition du compte
du téléphone SIP dont
son contexte.
Extensions.conf
Définition des règles
de traitement d'appel
dans le contexte.
Exécution des règles
de traitements définis
pour le n° composé
Asterisk
4/10
TP TL53
On l'applique de même à un appel qui arrive à Asterisk venant d'une carte TDM = Réseau public
Réseau public -> Carte TDM -> Asterisk => Appel entrant dans notre installation.
Cette fois la carte TDM est associée à CAPI.conf:
Carte TDM
Définition des
lignes TDM dans
CAPI.conf
On a branché
CAPI.conf
Définition de la ligne
de la carte TDM dont
son contexte.
Extensions.conf
Définition des règles
de traitement d'appel
dans le contexte.
Exécution des règles
de traitements définis
pour le n° composé
- le réseau RTC sur la carte Analog ( 5ème section de CAPI.conf )
- le réseau RNIS sur le port 2 de la carte BRI ( accès de base = T0 = 2ème section de CAPI.conf ).
Q7) Quel est le contexte dans CAPI.conf pour les appels venant du RNIS = Port 2 BRI ?
Quel est le contexte dans CAPI.conf pour les appels venant du RTC = Pour le port analogique ?
Dans cette partie où on manipule les fichiers de conf sans interface http Freepbx, on modifie extensions.conf pour traiter les
appels venant de la carte TDM = Appels entrants
- Clic sur "PBX/Config edit" et aller dans extensions.conf
a) Appels entrants RNIS
On dispose de 3 abonnements RNIS pour notre installation: 3030, 3031 et 3032 ( n° publics à 4 chiffres, en réalité c'est 10 chiffres pais le
PABX qui simule les réseaux publics ne veut pas plus de 4 chiffres ).
Quand un appel RNIS arrive à un abonné, le réseau RNIS présente le n° appelé = Il indique qui est appelé ( 3030, 3031 ou 3032
pour nous ).
- Créer une section à la fin d'extensions.conf pour les appels RNIS => Nom du contexte trouvé avant dans CAPI.conf port 2
Mettre la ligne: exten => 3030,1,Dial(SIP/100)
; appel n° public 3030 va à SIP 100
Ajouter une ligne pour envoyer les appels vers le n° public 3031 au SIP 101 ( priorité 1 aussi => 3031,1,Dial )
- Recharger ( reload en CLI ),
Appeler le 3030 depuis le poste numérique 4002 => Le 100 doit sonner
Appeler le 3031 depuis le poste numérique 4002 => Le 101 doit sonner
b) Appels entrants RTC
Pour le RTC, ce réseau dans la majorité des cas ne présente pas le numéro appelé = Sonnerie et c'est tout.
=> On a mis "immediate=yes" dans CAPI.conf pour répondre immédiatement sans chercher à traiter le n° appelé
On va indiqué comme numéro appelé s ( start ) qui signifie de démarrer cette règle quand on n'a pas de n° appelé.
- Créer une section à la fin d'extensions.conf pour les appels RTC => Nom du contexte trouvé avant dans CAPI.conf port 5
Mettre la ligne: exten => s,1,Dial(SIP/100)
;appel n° public non défini va à SIP 100
- Recharger ( reload en CLI ),
Appeler le 4000 depuis le poste numérique 4002 => Le 100 doit sonner.
( contrairement au RNIS, dans le driver pour la ligne analogique utilisée
on a défini son n° 4000 = "Called party number Value" et mis "Use Caller ID CID" = No )
RTC
A ce stade, on a défini par fichier texte
- Comment gérer les appels internes
- Comment gérer les appels entrants
qui arrivent depuis les réseaux publics.
RNIS
CAPI/g5
CAPI/g2
PABX
Remarque: Sans SDA ( lien n° public – n° privé ), on envoie tous les appels entrants
vers le même poste = Standard ou PO ( voir annexe )
Contexte tp_sip
pour les 2
J. Millet
100
101
Asterisk
5/10
TP TL53
Appel sortant
Un téléphone interne ( SIP pour notre configuration ) veut appeler l'extérieur. On retrouve le traitement des appels internes
puisque c'est un téléphone SIP qui appelle.
( compte dans SIP.conf définissant le contexte => Contexte dans extensions.conf définissant les règles de traitement pour le n° composé ).
Mais cette fois l'appel est envoyé non pas au canal SIP internet mais au canal CAPI = cartes TDM reliant aux réseaux publics.
La syntaxe pour un appel via interface capi qui utilise le module chan_capi est
OU
OU
CAPI/nom/n°/b
pour appel par le contrôleur appelé nom de n°
CAPI/g1/n°/b
pour appel par les contrôleurs du groupe 1 ( g2 pour groupe2,... ) de n°
CAPI/contr1/n°/b pour appel par le contrôleur référencé contrôleur 1 de n°.
Pour un appel depuis le réseau privé vers le réseau public, Asterisk doit changer le numéro d'appelant quand il émet
l'appel vers le réseau public: Exemple: Le téléphone privé 100 appelle vers l'extérieur un numéro public,
* Si on ne fait rien => le réseau public voit une demande d'appel venant du n° 100 qu'il ne reconnaît pas ( n° privé ) => Il bloque.
( Message écrit CHANUNAVAIL en CLI ou message vocal du serveur )
* Si on change le n° d'appelant 100 avec notre n° public 3030 => le réseau public voit une demande d'appel venant du n° 3030 qui
est un n° public => Il passe.
Remarque: Autre méthode définissant le n° public: Mettre dans capi.conf defaultcid=n° et dans la commande Dial, ajouter l'option d
( dans PBX/PBX Settings/Setup/General Settings ).
- Ajouter au contexte de nos téléphones SIP ( pas celui des contrôleurs CAPI ! ) les lignes pour appel RNIS via préfixe 0:
exten => _0.,1,Set(CALLERID(all)=3030) ; n° appelant public
exten => _0.,2,Dial(CAPI/g2/${EXTEN:1}/b,15)
La seconde ligne signifie que si on compose un n° sur un téléphone dépendant de ce contexte comme le 100,
n° qui commence par 0 de n'importe quelle longueur ( . ), alors on appelle ( Dial ) par canal CAPI via ligne g2 ( RNIS
port 2 ) le n° composé sur le téléphone moins le premier chiffre à gauche = préfixe ( ${EXTEN:1} )
- Ajouter au contexte de nos téléphones SIP les lignes pour appel RTC via préfixe 9:
exten => _9.,1,Set(CALLERID(all)=4000)
exten => _9.,2,Dial(CAPI/g5/${EXTEN:1}/b,15)
Remarque: On aurait aussi pu écrire
exten => _9.,2,Dial(CAPI/contr5/${EXTEN:1}/b,15)
ou exten => _9.,2,Dial(CAPI/Analog-4P/${EXTEN:1}/b,15)
Remarque: NE PAS METTRE priorité 2 sans règle 1 sinon il ne fait rien..
- Recharger le plan de numérotation ( reload en CLI ) avant les tests du chapitre suivant.
Q8) Refaire le schéma suivant en complétant les " ___ "pour l'appel défini dans la case de gauche
Sur le poste SIP privé n° 100
On compose le n° 0 4002
=> Le poste envoie une
demande d'appel au serveur
Asterisk: 100 vers 04002
Asterisk va chercher où
est défini le compte du
n° 100 selon son type =
fichier __________
Il y trouve comment on
traite ses appels = nom
du ____________
Asterisk va chercher
dans le fichier où
sont définis les
traitements = fichier
__________
dans la section du
___________
comment traiter le
n° demandé.
Asterisk déclenche
un appel avec n°
appelant _______
vers le n°_______
par le canal
__________
qui sort par le port
______ de la carte
qui est relié au
réseau ______
vers le n° ________
V) Outils d'analyse
On cherche à configurer un système complexe => Il est indispensable d'avoir des outils de test pour faire la mise au point.
Mode verbose: asterisk –rvvvvvv via ssh ou console
asterisk –cvvvvvv au lancement
- Se connecter à distance au serveur via ssh si ce n'est plus le cas ( logiciel externe ssh ou ssh java de trixbox ):
adr IP serveur, login:tp: mdp: tpvoip
puis asterisk -rvvvvvv
- Tester un appel sortant via RNIS ( préfixe 0 ) vers le poste numérique ( N° en début de TP ).
J. Millet
Asterisk
6/10
TP TL53
- Trouver la ligne de la commande Dial.
On a affichage des différents traitement réalisés pour l'appel.
- Executing avec entre crochets la section de contexte utilisée.
- En bleu la commande.
Q9) Quelles informations y trouve-t-on ?
- Créer un poste 102 dans Trixbox/PBX/Setup/Extensions, débrancher et rebrancher la base dect qui gère le téléphone
gigaset C470 IP => Cela le force à s'enregistrer au boot ( sinon on peut attendre 2 ou 3 minutes ).
( adr IP lue sur le téléphone par menu/réglages/base/réseau local/adr IP puis interface web: http://adr_IP puis mdp PIN 0000 ).
Q10) Quel est le contexte de l'usager SIP quand il est créé ?
- Appeler en IP depuis le 102 ( n° puis appui bref de la touche appel ) le n° *65 qui donne son numéro à un usager.
Q11) Quelle est la macro qui réalise le traitement ? De combien de lignes est-elle faite dans extensions_additional.conf
Commandes CLI de Asterisk ( Command Line Interface )
Commande utiles:
help = liste des commandes ( ou help capi pour capi, …)
capi info = liste des contrôleurs vus par Asterisk
capi debug = message de dialogue entre Astersik et carte TDM en CAPI
sip show peers = usagers sip
Q12) Avec "sip show peers", à quoi voit-on qu'un terminal est enregistré ?
- Lancer "capi debug" en CLI, faire un appel via RTC ( préfixe 9 ) vers le poste numérique.
Q13) Si le td RNIS a été fait, que reconnaissez-vous ? Expliquer les informations principales renvoyées.
Informations de Trixbox
Exemple: Pour voir tous les usagers:
Tools / Asterisk Info / puis à droite Peers.
ou Setup/extensions puis à droite.
Autres
* Fonction d'écho créée dans extensions.conf ( test si le poste est reconnu par le serveur )
* Wireshark
* Fichiers de log d'Asterisk
VI) Configuration minimale du serveur Asterisk par GUI
Usagers SIP
- Modifier le contexte des usagers 100 et 101 pour utiliser celui de Trixbox ( penser à "Apply Configuration Changes" en haut ).
On a alors 3 usagers 100, 101 et 102 avec la configuration Trixbox.
Asterisk gère les comptes SIP créés dans SIP. conf. Dans Trixbox , le GUI crée le compte SIP dans SIP_additionnal.conf.
Remarque: Dans Asterisknow ancienne version sans Freepbx, le GUI écrit dans users.conf, et n'affiche que les usagers de users.conf sans afficher
ceux de sip.conf. Mais asterisk voit les 2 comme le montre en CLI sip show peers ).
Q14) Quelle est la commande dans sip.conf qui permet d'ajouter les usagers de sip_additional.conf ( ";" met en remarque, pas "#" ) ?
Appels externes
a) Faisceau = Trunk
Un faisceau est un moyen d'acheminer des appels. Il est défini par son type ( canal ) et le matériel utilisé ( lignes d'un canal ).
Pour nous le PABX est relié à l'extérieur par des canaux CAPI.
- Créer un Trunk de type custom ( PBX/PBX Settings/Setup/Trunks ): Add Custom Trunk
Laisser vide sauf la case "Custom Dial String": CAPI/g2/$OUTNUM$/b
Q15) A quel connecteur faut-il brancher le réseau RNIS avec cette syntaxe ( voir g2 dans capi.conf ) ?
- Recommencer un nouveau custom trunk avec CAPI/g5/$OUTNUM$/b pour le lien RTC.
J. Millet
Asterisk
7/10
TP TL53
b) Appel entrant = Accueil = Inbound Routes
Dans un PABX, il faut faire le lien entre numéros extérieurs publics et intérieurs privés
- Soit on associe un numéro extérieur à un numéro intérieur = SDA ( Sélection Directe à l'Arrivée )
=> Il faut beaucoup de numéros extérieurs ( à louer à l'opérateur => Cher ).
( souvent le numéro intérieur est le MCDU du numéro extérieur 0381994711 et 4711 en interne )
- Sinon, l'appel externe va à un poste interne spécial => Standard ( ou PO Poste opératrice ).
L'accueil va relier
le n° public appelé
à
un destinataire.
- Relever le nom du contexte du contrôleur g2 dans capi.conf
Vider son contenu dans extensions.conf et mettre une seule ligne: include => from-pstn
=> Les appels entrants par la carte g2 ( RNIS ) sont gérés par Trixbox.
- Créer une route entrante "Inbound Route" dans PBX/PBX Settings/setup
"Description": RNIS_3031
nom que l'on donne à l'Inbound route
"DID Number": 3031
n° public de notre entreprise appelé
"Set Destination": Extension 101
destinataire interne à qui on envoie l'appel
Q16) Quelles sont les types de destination qui était proposées dans "Inbound Route" ( Choix possibles pour "Set Destination" ) ?
- Recommencer avec 3032 lié à 102.
- Créer une route entrante "Inbound Route"
"Description": Autre
"DID Number" vide
"Set Destination": Extension 100
dont RTC s'il ne fait pas de présentation d'appel
- Activer les changements, recharger, tester ( appeler 3031, 3032 puis 4000 depuis le poste numérique )
( si l'appel vers 4000 n'aboutit pas, demander à l'enseignant s'il a affecté le n°4000 au port FXO utilisé = config carte DIVA port 10005 )
Q17) Quels sont les liens SDA que l'on a créé ( n° public associé à un numéro privé ) ?
c) Appel sortant = Acheminement = Outbound Routes
- Définir un acheminement ( outbound route ) = Pour un ensemble de numéros, l'appel sera acheminé via le faisceau:
+ nom RNIS_1 ( route name )
+ Tous les n° commençant par le préfixe 0 qui sera retiré à l'émission ( | ) => Dans Dial Patterns: 0|.
+ Trunk Sequence: Pour la première ( référencé 0 ), mettre CAPI/g2/$OUTNUM$/b
( on peut définir des routes de secours après la première ).
- Submit, activer les changements, recharger, tester en appelant le poste numérique 4002 depuis 100. Problème...
Q18) Indiquer à l'aide de capi debug en CLI le numéro de l'appelant donné au réseau pour l'appel. En déduire avec ce qui a été fait
au IV) pourquoi cela ne marche pas ?
- Modifier le trunk à la ligne "Outbound Caller ID" pour résoudre le problème comme au IV) . Tester.
VII) Fonctionnalités de base de téléphonie
Groupes de postes
Un PABX traditionnel propose 3 types de groupes:
Ordonné = Hiérarchique = Séquentiel: Le premier téléphone du groupe sonne en premier, il est prioritaire = Hiérarchie.
Parallèle = Général: Tous les téléphones du groupe sonne, le premier qui décroche prend l'appel.
Cyclique: Le premier téléphone qui sonne est le suivant du dernier qui a décroché ( travail réparti ).
Trixbox propose plus de types de groupes ( Ring Strategy ):
- "Ringall" = mode parallèle (Syntaxe simple dans la commande Dial pour appel parallèle : SIP/100 & SIP/101 )
- "Hunt": Fait sonner le premier poste, puis s'il ne répond pas on passe au suivant, puis … = Ordonné.
- "Memoryhunt": Hunt mais laisse sonner les précédents
- "firstavailable": Appelle seulement le premier poste non occupé du groupe ( un téléphone en com mais avec mise en instance d'appel est vu libre ).
- "firstnotonphone": Idem à la précédente mais un téléphone occupé est vu occupé même avec mise en instance d'appel ( Call waiting ).
Remarque: suffixe "-prim": Gestion d'un deuxième appel: Surtout important pour les renvois ( Follow Me )
Si on est en communication et que l'on ne veut pas être dérangé, un autre appel nous verra occupé et sera traité, par exemple renvoi vers
notre portable qui va nous déranger.
J. Millet
Asterisk
8/10
TP TL53
- Créer un groupe ( module Ring Group ) de n° 600, de nom GRP ( Group Description ), de type ringall
comprenant le 100 et 101 ( Extension List ).
=> Tester en appelant le groupe depuis le 102 ( appeler le n° du groupe ! ).
- Ajouter un téléphone externe: 4002 Attention il faut mettre le préfixe, puis le n° puis # pour un n° externe.
=> Tester.
Renvois
Renvois automatiques: Follow Me
Une personne a plusieurs postes: 101 et 102. Si elle quitte son bureau où est le poste fixe 101, elle prend son sans fil 102.
Si le 101 ne répond pas, on renvoie l'appel vers le 102.
Dans ce cas, Trixbox traite le renvoi comme un groupe ( mêmes stratégies ) sauf qu'on enlève son numéro de la liste de renvoi.
- Dans le menu "Follow me", choisir le poste 101, définir un renvoi vers le 102 au bout de 20s.
Ring Strategy: Hunt,
Initial Ring: 20 Follow me list: 102 seul ( poste qui vont sonner après 20s de non réponse )
Destination if no answer: voicemail du poste ( traitement après essai de tous les postes du renvoi )
- Tester: Le 100 appelle le 101, l'appel doit être renvoyé vers 102 après 20s de sonnerie.
- Faire un renvoi du 102 vers l'extérieur via RNIS sur le poste numérique: numéro 04002 et # à la fin !
- Tester: Le 100 appelle 102, l'appel doit être renvoyé.
Renvois à programmer = activer / désactiver: Call Forwarding
Une personne qui a un poste fixe va en réunion dans le bureau d'un collègue et veut que ses appels suivent sur le poste du
collègue ( déplacement occasionnel ). En partant elle active le renvoi sur son poste, en revenant elle le désactive.
Q19) Indiquer les codes pour activation/désactivation de renvois sur inconditionnel, sur occupation et non réponse ( Feature Codes ).
- Programmer le renvoi inconditionnel de 102 vers 101 ( appeler le code depuis 102, donner le n° du poste à renvoyer 102, puis le n°
du poste de renvoi 101. La voix française parle de standard pour le poste de renvoi ).
- Tester en appelant 102 depuis 100 => Le 101 est appelé.
- Désactiver le renvoi ( depuis le poste renvoyé, 102 ici, appeler le code d'annulation ).
Transfert: Transfer
A appelle B, B répond et sait que c'est plutôt C qui doit répondre, B met en attente A ( hold ), B appelle C, demande s'il
accepte l'appel, coupe la com avec C, reprend la com avec A, tape le code et le n° de C.
Remarque: Comme c'est un code pendant la com, si le son n'est pas bon ( en particulier si on fait des tests avec 2 postes sur 1 PC ), cela ne marche pas.
Q20) Quel est le code de transfert ( InCall Blind Transfer ) défini dans PBX/Setup/Feature Codes ?
Peut-on utiliser l'option canreinvite=yes qui fait que les flux audio ne passent pas par Asterisk si on veut faire des transferts ?
- Tester avec un appel du numérique 4002 via RNIS donc vers 100 à transférer à 101.
Musique d'attente = MOH ( Music on Hold )
A ce jour, en version gratuite, le choix de musique ne s'applique qu'à des appels externes = Faisceaux ou à des files
d'attente ( queues ). Entre téléphones locaux, seule la musique par défaut sera jouée.
- Créer via Trixbox/PBX/PBX Settings/setup/Music on Hold une nouvelle catégorie: RTC
- Se mettre sur cette catégorie puis charger depuis le PC client le fichier Classique.mp3 ( rapide avec firefox, lent avec ie ).
- Créer via Trixbox/PBX/PBX Settings/setup/Music on Hold une nouvelle catégorie: RNIS
- Se mettre sur cette catégorie puis charger depuis le PC client le fichier Electro.mp3
Q21) Quelles sont les indications renvoyées par la commande CLI: moh show files ?
- Affecter la catégorie RTC à la Inbound Route liée au RTC, RNIS à celle liée à RNIS 3030.
- Tester: Appeler depuis le 4002 via RTC ( 4000 ), mettre en attente ( bouton hold ). Recommencer via RNIS (3030 ).
J. Millet
Asterisk
9/10
TP TL53
Boite vocale = Répondeur
- Activer les boites vocales des postes 100 et 101:
Setup/extensions puis dans la rubrique Voicemail, case "Status" à Enable. Mettre le mot de passe 1234.
- Supprimer les renvois "Follow me" des postes avec les "Activate Configuration changes",....
- Tester la possibilité de dépôt de message ( 101 appelle 100 qui ne répond pas,... )
Q22) Quels sont les "Features Codes" qui permettent d'accéder à la boite vocale du poste duquel on appelle ? A n'importe quelle boite
( qui sera demandé en début de com ) ? Quelle icône apparait sur un téléphone Xlite qui a un message vocal ?
- Tester la lecture de message ( après le mot de passe attendre un peu sans rien faire, le traitement n'est pas immédiat ).
Q23) Quels est le préfixe d'appel direct de la boite d'un téléphone ( General Settings ) ? Combien de secondes de sonnerie avant la boite
vocale ( General Settings ) ?
- Tester en appelant la boite du poste 100 depuis un autre téléphone: Code et n° 100 après question "boite aux lettres".
Discrimination
Un poste intérieur appelle l'extérieur
- Soit directement avec un préfixe s'il a le droit
=> Préfixe avant le numéro ( souvent 0 ). Le PABX achemine l'appel via le faisceau associé à une ligne ( Dahdi, CAPI, SIP,...).
- Soit il n'a pas le droit d'appeler l'extérieur et passe par le standard qui fera un transfert d'appel.
S'il appelle directement, on affine les autorisations d'appel.
Exemple:
Poste de salle de tp = Urgence, Local.
Poste de bureau enseignant = Urgence, Local. + n° vert gratuit 0800, n° nationaux, portables.
Poste de directeur = Tout ( n° précédents + international, n° surtaxés )
Principe: 1) Créer les différents contextes à appeler = Directions ( local, gratuit 0800, urgences, national, mobiles 06, international 00 )
Certains abonnés auront droit seulement au local
2) Créer des contextes niveau_1, niveau_2, niveau_3 qui incluent les directions autorisées ( include ... )
3) Affecter les contextes niveau_i aux utilisateurs => autorisent les appels.
- Créer 3 directions dans extensions_custom.conf avec Config Edit:
* contexte [postes] = appel externe vers 4XXX avec préfixe 0, par RNIS
exten => _04XXX,1,Set(CALLERID(all)=3030)
exten => _04XXX,2,Dial(CAPI/g2/${EXTEN:1}/b)
; utilisant port g2 RNIS
* contexte [modem] = appel externe vers 5XXX avec préfixe 0, par RTC
exten => _05XXX,1,Dial(CAPI/g5/${EXTEN:1}/b)
* contexte [local] = appel local vers 1XX par SIP sans préfixe:
exten => _1XX,1,Dial(SIP/${EXTEN})
- Créer le contexte [niveau_1] qui autorise local ( mettre une ligne include => local ),
[niveau_2] qui autorise local, et postes,
[niveau_3] qui autorise local, postes et modem,
- Affecter le contexte [niveau_1] au téléphone 100, recharger,
- Tester si les appels sont autorisés : vers modem interne PABX 5999, poste 4002, poste local 101.
- Recommencer en affectant le contexte [niveau_2] au poste 100, puis [niveau_3].
- Remettre le contexte de Trixbox pour le poste 100.
J. Millet
Asterisk
10/10
TP TL53
ANNEXE
I) Préparation du PC
L'enseignant a préparé le PC serveur Asterisk
- en faisant un ghost ( 2nde partition sur 2nd disque dur, Depuis image TRIXAVE.gho comme source puis OK pour partition source puis
destinataire disque 2 ( 6 Go ), partition 2.
( Disque 1: 9 Go XP, 21 Go Stockage FAT32 avec images ghost, 8 Go Asterisknow, Disque 2: 100 Mo inconnue, 6 Go Trixbox )
- intégration des cartes: en console ( root, tpvoip ) modification de /etc/asterisk/modules.conf
dans section [modules]:
dans la section [global]:
load => chan_capi.so
chan_capi.so=yes
avec une ligne vide à la fin de module.conf
- en donnant l'adresse IP 192.168.1.2 au PC au PC qui est en DHCP
- en mettant un n° public 4000 = Called party number Value et mis "Use Caller ID CID" = No à la carte FXO pour les appels entrants (port 10005)
On dispose alors d'un PC serveur avec 2 cartes PCI DIALOGIC ( ex EICON ) DIVA Server
( Analog 4P = 4 FXO, 4 BRI = 4 T0 ou SO ).
Asterisk peut désormais dialoguer avec les cartes par le module chan_capi basé sur le standard CAPI.
Voir http://uv.utbm.free.fr/TL53/Install Diva sous Linux.htm
II) PO = Poste Opératrice = Standard
L'accueil a pour fonction de traiter les appels venant de l'extérieur à un poste interne, selon l'heure, la disponibilité,...
On a d'abord le standard = PO qui est un poste avec des fonctions de supervision. On peut ajouter un serveur vocal interactif
PO ( Poste Opératrice = Standard ): FOP ( Flash Operator Panel )
FOP installé par défaut utilise Flash, pose un problème de compatibilité avec
http://aussievoip.com/wiki/TB-FOP
http://www.asternic.org/
le plugin Firefox.... ( clignotements et pas de réaction ).
- Se connecter via Internet Explorer à Trixbox en mode admin, PBX/PBX Settings, onglet en dessous "Panel".
On a le panneau opérateur avec le téléphone 100 sur notre PC, les 2 forment le PO.
Remarque: Pour un non administrateur ( = user mode ), on peut s'y connecter dans la page d'accueil ( switch mode ). Le login est ?????, le mot de passe par
défaut est passwOrd où 0 est zéro( modifiable dans cd /var/www/html/panel puis fichier op_server.cfg puis ligne securtiy_code= )
Q24) Quelles sont les informations disponibles ?
- Initier un appel: : Cliquer sur le téléphone 100 et déplacer vers le téléphone 101 à appeler ( drag & drop ).
- Transférer un appel: Cliquer sur le téléphone 100 et déplacer vers le 102 ( drag & drop )
- Raccrocher l'appel RTC => vers 101: Cliquer sur le bouton rouge.
PO ( Poste Opératrice = Standard ): Logiciel Hudlite de Fonality
On a installé le serveur Hudlite sur le PC Trixbox ( package tbm-hudadmin ). On a sur le PC client Win7 le client Hudlite.
- Modifier les mots de passe dans Trixbox/PBX/Hudlite manager pour avoir 100 pour le poste 100, 101 pour le 101, ...
- Lancer sur le PC Win7 client le logiciel Hudlite, puis File/Settings:
Config client: sip100, mot de passe 100 ( voir menu Hudlite manager sur Trixbox )
Config connexion: adr_IP serveur, mdp serveur = password, port = 6600
- Réaliser des appels et transférer en déplaçant des icônes ou via la case en haut Call ou Xfer ( transfert ).
III) Autres
Calendrier
Enregistrement de messages systèmes personnalisés
Conférences: MeetMe
SVI : Serveur vocal interactif ( Standard automatique / Digital Receptionnist / IVR Interactive Voice Response )
ETC, ETC...
- Messages mail d'avertissement de message vocal
message vocal déposé sur la boite vocale -> Asterisk envoie un mail d'avertissement à un serveur:
- Centre d'appel
On peut faire des accueils plus performants qu'avec des IVR ( gestion sde file d'attente ): Logiciel Queuemetrics de Loway
- Gestion de fax, fax vers mail
- Langues parlées (http://www.domln.com/mediawiki/index.php/Trixbox_:_Voix_fran%C3%A7aises )
wget http://www.asterisk-france.net/data/Demo/Prompt.FR.AF.Ver.2.1.GSM.Released.zip
- Musique d'attente = radio en streaming
- Sécurité
- Taxation ( billing )
- Dialogue avec logiciel externe ( AGI : Asterisk Gateway Interface ) voir pour PHP http://phpagi.sourceforge.net/
J. Millet
Annexe Asterisk
1/1
TP TL53
TP Cisco CME
Matériel: - 1 PC avec carte réseau de bouclage activée en 192.168.2.3
- 1 téléphone cisco 7942 avec câble croisé relié au PC
image vmware XP_Cisco GNS3
adr MAC différente de l'autre image
interface AMDnet 192.168.2.13
- GNS3
image vmware W2000
- IP Communicator
- xlite
adr MAC différente de l'autre image
interface AMDnet 194.0.0.2
- kit voix (GNS3, tftp...)
- wireshark
- répertoires pour GNS3
- VT-GO-PC
- Express Talk
- Serveur SIP Axon NCH
- clients 0951222222
- clients 0951333333
- dialplan ne traitant pas 0
GNS3
routeur avec CME
int f0/0 192.168.2.23
int f0/1 194.0.0.3
PC réel
Carte réseau de bouclage 192.168.2.3 ( vmbridge activé )
- vmplayer
- wireshark
- xlite
- Express Talk
- IP Communicator ( et .NET2.0 Framework )
- VT-GO-PC
2 images vmware en bridge malgré les réseaux différents ( GNS3 fera le routage, pas vmplayer )
( mettre la RAM image w2000 à 256 Mo si on a seulement 1 Go sur le pc réel, WINDOWS à 512 Mo )
J. Millet
TP Cisco
TP TL53
Cisco Call Manager Express ( CME )
I) Configuration du simulateur GNS3 puis du routeur
Pour étudier la solution de téléphonie sur IP Cisco qui utilise un serveur logiciel dans le routeur, le CME ( Call Manager
Express ), on va utiliser le simulateur GNS3 ( remarque: ne pas utiliser la commande reload dans le routeur simulé ).
( Ne pas confondre CME = traitement et contrôle d'appel dans IOS de leurs routeurs, CM Call Manager solution plus performante sur serveurs Cisco ou tiers )
Préparation du simulateur
- Lancer l'image vmware XP_Cisco incluant GNS3. Vérifier que son IP est 192.168.2.13 (cmd/ipconfig ).
- Lancer GNS3 ce qui ouvre une fenêtre "Fichier\nouveau projet", cliquer sur la case ... ,
créer votre répertoire de travail dans C:\CCNA_Voice_LABs\Mon_Labo
mettre un nom de votre choix dans la case .net, cliquer sur enregistrer puis OK.
Remarque: Si on voulait faire des simulations différentes, il faudrait faire un sous répertoire pour ne pas mélanger les fichiers
- Passer au paragraphe après ce cadre ( le cadre est là en cas problème sur GNS3: pas de ping routeur simulé <-> PC réel )
Le PC virtuel contient un répertoire C:\CCNA_Voice_Kit dans lequel on a créé les répertoires de travail associés
C:\CCNA_Voice_LABs\Mon_Labo
C:\CCNA_Voice_LABs\IOS.
- Vérifier dans GNS3, menu Editer\Préférences onglet Général
Langage: français
Project Directory: C:\CCNA_Voice_LABs\Mon_Labo
IOS/PIX Directory: C:\CCNA_Voice_LABs\IOS
- Dans Editer\Préférences onglet Dynamips,
cliquer sur "Tester" pour vérifier que l'on a un message vert "Dynamips successfully started".
fermer en cliquant OK
Remarque: On a désactivé le pare-feu windows sinon dans ce tp il faudrait débloquer beaucoup de ports.
- Dans Editer\Images IOS et hyperviseurs, vérifier que l'on a
dans "Image IOS" l'image C:\CCNA_Voice_LABs\IOS C3725-AD.bin
et en cliquant droit 2 fois sur le fichier bin, on voit en bas: RAM par défaut: 256 Mo
- Fermer
sinon:
- Dans C:\CCNA_Voice_Kit, se mettre sur le fichier d'extension .bin, faire clic droit ouvrir avec,
choisir l'application winrar => Cela décompresse une image d'IOS de routeur c3725-AD.bin
- Déplacer ce fichier c3725-AD.bin dans C:\CCNA_Voice_LABs\IOS
- Dans Editer\Images IOS et hyperviseurs
"Fichier image" -> On lui indique C:\CCNA_Voice_LABs\IOS\ c3725-AD.bin
RAM par défaut: 256 MO
Cliquer "Sauvegarder" ce qui fait apparaitre l'image au dessus puis fermer.
Utilisation du simulateur GNS3
- Cliquer sur "Routeur C3700" à gauche, le déplacer dans la fenêtre du milieu où l'on définit notre installation
relâcher le clic.
- Clic droit sur le routeur, "configurer", cliquer sur RO,
onglet "Mémoires et disques" = Mettre disk0 PCMIA à 32 Mo
onglet "Slots" => On voit les cartes d'interfaces du routeur.
Fermer la fenêtre.
- Clic droit sur le routeur, "Démarrer" puis clic droit, "Console" => On dialogue par console telnet avec le routeur.
- Entrée puis No pour "Would you like to enter the initial configuration dialog?"
Taper entrée pour avoir le prompt "Router>" puis "enable" puis "show interfaces"
(en tapant le début des mots puis la touche tabulation, le système complète automatiquement l'instruction quand il n'y a pas d'ambiguïté)
Q1) Combien d'interfaces FastEthernet sont présentes dans notre routeur ?
Vérifier en activant la fenêtre de GNS3 puis en mettant la souris sur le routeur et en attendant l'affichage
Vérifier en console avec "show ip interface brief" ( ou sh ip int brief )
J. Millet
TP Cisco
1/8
TP TL53
Création du réseau autour du routeur
* IDLE PC associé au routeur:
- Dans le schéma GNS3, clic droit sur le routeur, "IDLE PC", être patient...
- Chercher dans la liste, choisir la ligne avec un astérisque ( meilleur PC ) sinon prendre le premier, OK.
* Relier le routeur simulé au réseau: Nuage défini par une interface réseau
1) Fermer la console, Clic droit sur le routeur, Arrêter
2) Clic droit à gauche sur "nuage", placer ce nuage sur le schéma
3) Clic droit sur le nuage, Configurer, Cliquer sur CO sous nuages dans la colonne de gauche.
4) Sous NIO Ethernet générique, mettre l'interface ethernet du PC vmware:
Cliquer dans la case en dessous, ce qui affiche les noms d'interface, cliquer sur l'interface.
Cliquer sur ajouter => l'interface est ajoutée en dessous
OK pour fermer
5) Cliquer sur l'icône "Ajouter un lien" en haut
FastEthernet, clic gauche sur le routeur ( on ne voit rien )
clic gauche sur le nuage
puis sur l'interface réseau qui s'affiche
L'interface du routeur est un point rouge car il est arrêté.
6) Clic gauche à nouveau sur l'icône "Ajouter un lien" qui est devenue une croix rouge et redevient l'icône d'avant
Clic droit sur le routeur, Démarrer ( remarque: le routeur ne sera pas actif tout de suite )
L'interface du routeur devient un point vert.
* Configuration de l'interface fastethernet du routeur:
Ouvrir la console du routeur, entrée, enable, conf t,
(config)#interface fastethernet 0/0
( ou int f0/0 )
ip address 192.168.2.23 255.255.255.0
no shutdown
( ou no sh ) pour que l'interface reste active
exit puis exit puis write
( ou CTRL Z puis wr )
Tester l'interface du routeur en le pinguant lui même: ping 192.168.2.23
Tester le lien avec le nuage extérieur PC vmware en le pinguant depuis le routeur:
ping 192.168.2.13 ( échec si on laisse le firewall de WINDOWS )
avec le PC réel: ping 192.168.2.3
Le dispositif réseau est prêt pour faire notre installation téléphonique. Sauvegarder le projet GNS3.
J. Millet
TP Cisco
2/8
TP TL53
II) Configuration du CME pour utiliser des matériels Cisco (protocole SCCP )
On configure la téléphonie du routeur ( remarque en cas d'erreur, à la fin on pourra recommencer la config )
- Relancer la console, en ( enable ), conf t ( configure terminal ),
(config)#telephony-service setup
1) n car on ne veut pas de DHCP
2) y car on veut démarrer la configuration de la téléphonie.
3) 192.168.2.23 = adresse IP du routeur contenant le gestionnaire d'appel = CME = Call Manager Express
4) 2000 pour le numéro du port du protocole Cisco SCCP Skinny qui gère les liens téléphoniques.
5) 4 pour le nombre de téléphones à configurer
6) yes pour avoir deux lignes utilisables par téléphone
7) 1 pour français
8) 1 pour tonalités françaises
9) 1000 pour le premier numéro de téléphone
10) y car on a une SDA ( DID )
0384211000 comme numéro de téléphone associé au poste 1000 pour le RTC ( pots )
11) y pour associer une messagerie vocale
8000 comme numéro de messagerie
12) Entrée pour le timout de renvoi en cas de non réponse après 18s ( Call Forward No Answer Timeout )
no si les informations sont correctes ( pas de changement )
sinon yes pour recommencer la config.
Le routeur active les téléphones: interfaces ephone_dsp ( change state to up ).
- Taper entrée pour revoir le prompt,
exit pour revenir du mode configuration de terminal au mode configuration ( Router# )
write pour écrire en mémoire votre configuration => La configuration est écrite en mémoire.
"show running-config" ( ou sh run ) puis barre d'espace jusqu'à voir les lignes concernant les téléphones
Q2) Quelle commande définit adresse et port du serveur CME ? Que définit-on dans les ephone-dn ?
- Vérifier que le téléphone réel est enregistré => L'écran affiche l'heure et le numéro de téléphone.
III) Utilisation de clients SCCP ( Skinny Client Control Protocol )
Un téléphone Cisco est un ephone ( Ethernet phone ) = terminal physique ( adresse MAC ). Il est associé à un ou des numéros
= lignes => ephone-dn ( directory number ).
Cisco IP Communicator
On a installé .NET Framework2.0 de windows puis le client Cisco CiscoIPCommunicator.
GNS3 est lancé, le routeur démarré ( on a vérifié notre config par show running-config )
- Sur le PC XP vmware .13, lancer le logiciel IP Communicator, clic droit, Preferences.
- Onglet Network, vérifier que "Use these TFTP Servers , TFTP Server 1" est à 192.168.2.23
=> Le téléphone s'enregistre = AUTOREGISTRATION => L'écran affiche l'heure et le numéro de téléphone.
Dans la console on voit des messages "change to state up" pour les interfaces "ephone-dsp" indiquant l'enregistrement du
terminal sur le serveur d'appels.
Remarque: Pour fixer le numéro ( ephone-dn ) d'un téléphone ( ephone avec son adresse MAC ), il faudrait les associer par la commande button dans la
définition de l'ephone ( voir annexe et la suite ).
Remarque: Second téléphone logiciel VTGO-PC Lite si un des 2 précédents ne marche pas
Sur le PC réel 192.168.2.3, on a installé VTGO-PC Lite qui est compatible avec SCCP,
le protocole Cisco. ( s'il faut réinstaller, mettre un nom d'usager, installation complète, configuration par défaut )
- Cliquer sur l'icône en haut des outils ( Tools Menu )
Configuration Wizard, Next, Next, Next,
vérifier que l'on a "Cisco CallManager Auto Discovery"
TFTP Server l'adresse du serveur d'appel: 192.168.2.23
Next, Next, Finish
- Pour changer l'affichage sur les téléphones: conf t, telephony-service, system message tp TL53
J. Millet
TP Cisco
3/8
TP TL53
Analyse des échanges
a) Enregistrement
- Fermer le logiciel Cisco IP Communicator, attendre 30s, lancer wireshark du PC .13 qui héberge GNS3,
- Relancer Cisco IP Communicator pour voir l'enregistrement.
Q3) Quels sont les protocoles:
Le téléphone charge son fichier de configuration depuis le CME. Quel est le protocole de transfert ? Il utilise UDP ou TCP ?
Quel est ensuite le protocole pour s'enregistrer auprès du serveur ? Il utilise UDP ou TCP ?
( on pourra faire un filtre d'affichage ip.addr == 192.168.1.23 qui ne garde que les trames liées au CME )
Q4) Quel est le nom du fichier .cnf.xml qui est chargé ?
b) Communication
- Relancer une capture wireshark, réaliser un appel entre 2 postes SCCP
Q5) Quels sont les protocoles ?
Q6) CTRL Z puis "debug ephone register", fermer et réactiver le poste. Observer les informations fournies. Faire "undebug all".
Q7) Relever et expliquer les informations renvoyées par la commande #show ephone.
Q8) Relever les commandes autorisées pour un ephone ( CTRL Z, conf t, ephone-dn 1, ? )
Dans la fenêtre Telnet: clic droit, sélectionner tout, CTRL C, copier, mettre en forme
IV) Configuration du CME pour utiliser des clients SIP non Cisco ( Third party )
On souhaite configurer le service SIP et activer le serveur d'enregistrement:
Ouvrir la console puis enable, conf t,
(config)#voice service voip
sip
registrar server
exit
allow-connections sip to sip
exit pour revenir en mode configuration de terminal
Définir un groupe de codecs avec un ordre de préférence,
(config)#voice class codec 1
codec preference 1 g711ulaw
codec preference 2 g711alaw
exit
(config)#voice register global
mode cme
source 192.168.2.23 port 5060
max-dn 5
max-pool 5
timezone 23
time-format 24
hold-alert
tftp-path flash:
create profile
exit
On définit ensuite le premier téléphone sip
J. Millet
(config)#voice register dn 1
number 200
name 200
label 200
empêche l'enregistrement auprès d'un serveur externe !!
no-reg
call-forward b2bua noan 201 timeout 10
exit
TP Cisco
4/8
TP TL53
Vérifier que l'adresse MAC de la carte réseau du PC vmware XP qui héberge GNS3 est 000C.29EF.E0FB: ipconfig/all
(config)#voice register pool 1
id mac 000C.29EF.E0FB
number 1 dn 1
username 200 password cisco
voice-class codec 1
dtmf-relay rtp-nte sip-notify
adresse MAC de la carte obtenue avec ipconfig/all
sinon si on ne veut qu'un codec: codec g711ulaw
Le simulateur propose peu de codecs.
Q9) Toujours dans la config du voice-register-pool, taper "codec ?", indiquer les codecs disponibles.
CTRL Z, write
Lancer le client SIP xlite du PC en .13, configurer, vérifier les enregistrements sur le serveur: "show voice register statistics".
Pour voir les messages SIP: prompt#deb ccsip messages
Recommencer pour un second téléphone avec le client SIP du PC en .3.
voice register dn 2 de n° 201 avec call forward vers le 200,
voice register pool 2 avec l'adresse MAC du PC, "number 1 dn 2" et " voice-class codec 1".
Q10) Observer la trace d'un appel entre 2 postes SIP ( wireshark / Telephony / Voip Calls / Flow )
Q11) Observer la trace d'un appel entre un postes SIP et un SCCP ( wireshark / Telephony / Voip Calls / Flow )
Pendant un appel, accéder aux statistiques d'un téléphone Cisco en cliquant rapidement 2 fois sur le bouton "?".
Q12) Indiquer les informations données par cette interface.
V) Association Ephone et Ephone-dn: Button
On va créer de nouvelles associations entre postes physiques ( ephone ) et numéros ( ephone-dn ) => boutons ( button ).
En console: enable, conf t,
(config)#ephone-dn 2
( on peut faire ? pour voir toutes les instructions de configuration d'un ephone )
name nomposte2
description Bureau du poste 2
label labelposte2
exit
Puis on affecte les boutons ( remarque, par défaut le premier bouton permet de superviser la première ligne du poste )
(config)#ephone 1
ne pas confondre avec ephone-dn 1
button 1:1 2:2
reset
exit
Q16) A quel numéro est affecté le bouton 1 ? Le bouton 2 ?
( on peut faire "?" dans ephone 1 qui indique quel est l'index avant ":", quel est l'index
après ou regarder l'annexe )
(config)#ephone 2
button 1:2 2:1
reset
exit
Q13) A quel numéro est affecté le bouton 1 ? Le bouton 2 ?
Tester les appels et la supervision par icône du bouton qui change avec un poste SIP qui appelle un poste SCCP
Q14) Sur quel poste voit-on l'appel ? Sur quel poste peut prendre l'appel ? Que voit le poste SIP selon le poste qui décroche ?
J. Millet
TP Cisco
5/8
TP TL53
VI) Lien avec un fournisseur d'accès SIP ( SIP Trunk )
On souhaite relier notre installation à un réseau public SIP. Un autre PC vmware va introduire un serveur SIP, celui de
l'opérateur public sur lequel on va déclarer notre routeur Cisco = PC3 = image W2000.
PC1 réel avec
client SCCP
192.168.2.3
PC2 XP image
vmware avec
client SCCP
192.168.2.13
routeur en 192.168.2.23
et 194.0.0.3
( GNS3 dans le PC2 image
vmware XP )
Sur le serveur SIP du PC3 on a déclaré 2 usagers:
PC3 image vmware W2000
avec serveur et client SIP
194.0.0.2
0951222222 = n° public E164 de notre routeur
0951333333 = n° d'un client SIP public sur le même PC déjà configuré
( Express Talk en port 5070, le serveur SIP prenant le port 5060 sur le même PC )
On va définir dans le routeur un client SIP qui se connectera au serveur externe ainsi que des liens avec le serveur ( dial-peer ).
Lien Ethernet avec extérieur
- Ajouter un nuage au schéma GNS3: Lui associer aussi la carte réseau du PC, relier au routeur par l'interface 2.
- Démarrer le routeur, se connecter à la console, en, conf t,
(config)#int f0/1
ip address 194.0.0.3 255.255.255.0
no sh
CTRL Z
#wr
Démarrer l'image vmware w2000 contenant le serveur SIP: administrateur, tpvoip. Vérifier que son IP est 194.0.0.2, que son
adresse MAC est différente de celle de la machine virtuelle XP. Faire un ping dans la console du routeur vers ce PC virtuel.
Lien entrant
Dans le PC w2000, activer le serveur SIP NCH Axon ( il est déjà configuré ).
Lancer s'il ne l'est pas ( icône en bas à droite ) sur le même PC le client SIP Express Talk ( il est déjà configuré en 0951333333 ).
Dans la console, enable, conf t
(config)#line console 0
logging synchronous
exit
évite messages du routeur dans la saisie des commandes
(config)#dial-peer voice 1 voip
description **Appel entrant par faisceau SIP**
voice-class codec 1
voice-class sip dtmf-relay force rtp-nte
( force est une commande cachée => aide contextuelle non disponible )
session protocol sipv2
session target sip-server
incoming called-number .
"." en fin de commande signifie que tout n° est autorisé
dtmf-relay rtp-nte
no vad
exit
J. Millet
TP Cisco
6/8
TP TL53
(config)#sip-ua
authentication username 0951222222 password cisco
credentials username 0951222222 password cisco realm
définition du routeur come client SIP: UA
réponse !! à challenge d'enregistrement avec
login et mdp de notre compte SIP sur le serveur
194.0.0.2
initie !! enregistrement SIP,
sans cette ligne, rien...
no remote-party-id
retry invite 2
retry register 10
retry options 1
timers connect 100
registrar ipv4:194.0.0.2 expires 3600
sip-server ipv4:194.0.0.2
host-registrar
CTRL Z
#write
Remarque: - "show running-config" montre le mot de passe crypté "password 7", sinon on aurait "password 0" en non crypté.
Q15) Que constate-t-on dans le fenêtre du serveur SIP ( tentative d'enregistrement de qui toutes les 3 mn ) ?
Pour corriger cela
pour les postes en 100x , faire enable, conf t, ephone-dn 1, no number 1000, number 1000 no-reg, exit.
recommencer pour nos 3 autres postes de n° 1001, 1002, 1003 ( ephone-dn 2, 3 et 4 ).
pour les 038421100x,
faire enable, sh telephony –service ( pour voir la ligne dialplan-pattern ),
conf t, telephony-service, no dialplan-pattern 1,
retaper la ligne dialplan-pattern avec à la fin " no-reg"
Remarque: Si on avait installé l'interface web de configuration sur le routeur: Configure, System parametrers, Dialplan patterns,
Pattern 1, "E164 register" à no, Set
Vérifier que le routeur est enregistré auprès du seveur SIP: en console, enable, sh sip register status
Q16) Quels sont les types de liaison indiquées dans "#show dial-peer voice summary" ( pots = rtc ) ?
Si on appelle le n° public du routeur 0951222222, il ne sait pas faire le lien avec un poste privé ( n° SCCP en 100x ou SIP en 20x )
On va corriger cela par des règles de translation de numérotation:
La syntaxe est "rule n°_règle /n° concerné/ /n° modifié/".
Exemple "rule 1 /123/ /456/" remplacera LE n° 123 composé sur le téléphone par 456.
"rule 1 /^123/ /456/" remplacera le début DES n° commençant par 123 par 456
- On crée la règle qui traite le numéro entrant 0951222222: enable, conf t
(config)#voice translation-rule 1
rule 1 /0951222222/ /1000/
exit
- On crée un profil qui regroupe des règles:
(config)# voice translation-profile ENTRANT
translate called 1
exit
- On applique cette règle pour le dial-peer des appels entrants
(config)#dial-peer voice 1 voip
translation-profile incoming ENTRANT
CTRL Z
#wr
traduction n° appelé selon règle 1
- Tester un appel entrant depuis ce client SIP vers le routeur: Appeler 0951222222.
( On peut avoir un échec même avec une bonne configuration: Redémarrer le serveur SIP puis le routeur,
Regarder les enregistrements SIP, utiliser "debug ccsip messages" et "sh sip register messages", la console du serveur SIP, "sh run",... )
Q17) Vers quel poste interne va l'appel ? Comment cela a-t-il été défini ?
- Appuyer sur Hold sur le poste Cisco => Musique d'attente du Cisco envoyée à l'appelant.
- Reprendre l'appel sur l'autre poste Cisco ( qui s'est aussi mis en attente car notre config "button" partage les dn ). Terminer l'appel.
Q18) Envoyer les appels entrants vers le poste 1001.
Tester.
J. Millet
TP Cisco
7/8
TP TL53
Lien sortant
On définit le dial-peer pour le préfixe 0 ( dial-pattern )
(config)#dial-peer voice 2 voip
description **Appel sortant vers faisceau SIP**
destination-pattern 0..........
voice-class codec 1
voice-class sip dtmf-relay force rtp-nte
session protocol sipv2
session target sip-server
dtmf-relay rtp-nte
no vad
exit
Appel par préfixe 0 de numéro à 10 chiffres ( 10 points )
Remarque: Si on veut des appels vers un autre type de numéro (destination-pattern ), il faut faire un "dial-peer voice 3 voip"
Tester un appel sortant depuis un téléphone Cisco SCCP vers ce téléphone avec le préfixe 0 pour sortir.
Q19) Pourquoi cela ne marche-t-il pas ? ( regarder les messages du serveur SIP Axon NCH )
- On crée la règle qui traite les numéros sortants pour supprimer le préfixe 0: enable, conf t
(config)#voice translation-rule 2
rule 1 /^0/ //
exit
- On crée un profil qui regroupe des règles:
traduction n° appelé selon règle 2
( calling modifierait le n° appelant )
(config)# voice translation-profile SORTANT
translate called 2
exit
- Puis on applique cette règle pour le dial-peer des appels sortants
(config)#dial-peer voice 2 voip
translation-profile outgoing SORTANT
CTRL Z
#wr
- Utiliser la commande "#test voice translation−rule 2 00951333333" pour vérifier que le préfixe sera supprimé.
- Il faut enfin que le numéro envoyé sur le réseau ne soit pas le numéro interne mais le numéro public: conf t
(config)#dial-peer voice 2 voip
clid network-number 0951222222
- Recommencer l'appel sortant depuis un téléphone Cisco SCCP vers le téléphone externe avec le préfixe 0 pour sortir.
( pour info: outil de supervision trop pointu pour ce tp d'introduction : debug voip dialpeer all )
- Sauvegarder votre fichier de configuration du routeur pour visualiser le travail réalisé:
+ Lancer le logiciel tftp Pumpkin
+ Sur le routeur en console: "#copy run tftp", entrée, puis mettre l'adresse IP du destinataire 192.168.2.13 puis entrée, entrée.
+ Cliquer sur Accept dans Pumpkin
+ Récupérer le fichier router-confg ( voir répertoire de destination dans Options/Server/TFTP Filesystem root de Pumpkin ).
+ Ouvrir avec wordpad et copier.
J. Millet
TP Cisco
8/8
TP TL53
Annexe: Configuration de routeur Cisco
Fichier de configuration startuo et running:
Le routeur qui démarre copie la configuration de NVRAM flash en RAM: "startup config" de NVRAM flash -> "running config" en RAM.
copy startup-config running-config copie conf NVRAM flash en RAM
write = copy running-config startup-config copie la conf iguration RAM en NVRAM flash
"write erase" efface la startup config en NVRAM flash.
=> Si on fait "reload" et que l'on répond no à System configuration has been modified. Save? [yes/no]: no
la config nvram étant vide, il recharge la configuration par défaut.
voir http://www.data76.free.fr/Docs/Reseau/CCNA2.pdf
Quelques instructions:
- write ( wr ): Mémorisation de la configuration actuelel running-config de RAM en NVRAM startup-config
- show configuration: Visualisation de la configuration actuelel en RAM ( ou show running-config ou sh run )
pour voir une seule section: sh run | sec nom_section
- no "instruction": Suppression d'une instruction
• En mode privilégié (prompt #)
- show ip route : Visualisation de la table de routage :
Dans la table de routage donnée, le S veut dire que l’interface est en mode statique (mis à la main par l’administrateur)
L’adresse 0.0.0.0 indique le routeur par défaut
Le suffixe /<entier> des adresses est le nombre de bit `a 1 du netmask
Exemple : C 192.0.0.1/24 is directly connected Ethernet 0
- write erase puis reload: Redémarrer avec startup config ( config d'origine, ne pas sauvegarder: répondre n à la question )
- reload pour rebooter ( NB: COMMANDE NON SUPPORTEE DANS GNS3 DYNAMIPS )
• En mode configuration globale (prompt : (config)#)
- interface <nom interface> <numéro> : permet de passer en mode « configuration interface » pour
configurer une interface, le nom de l’interface peut être : série, Ethernet... ex : interface serie 0
• En mode configuration interface (prompt : (config-ip)#)
- ip address <adresse internet> <netmask> : association d’une adresse et d’un netmask à l’interface
Exemple : ip address
- no shutdown : active l’interface
J. Millet
Annexes TP Cisco
1/2
TP TL53
Quand un appareil démarre: (Monitor the phone startup process ) ( p 2-5 doc 7906 Admin guide )
- Initialisation locale
- Demande DHCP s'il est utilisé => adresse IP, masque, passerelle , serveur DNS et serveur TFTP ( Option 66 de DHCP )
* Si le DHCP ne fournit pas d'adresse de serveur TFTP => Configurer sur le poste "Alternate TFTP"
* Sans DHCP, il faut faire une config IP et définir l'adresse du serveur TFTP
Echange avec TFTP pour téléphone SCCP:
- L'appareil envoie son fichier CTL qui définit la sécurisation des échanges. CTLSEP<adr MAC>.tlv
- L'appareil demande son fichier de configuration au serveur TFTP: souvent SEP<adr MAC>.cnf.xml
* Si le serveur TFTP trouve possède le fichier, il l'envoie à l'appareil.
- Si le fichier contient la localisation du serveur CME, il se connecte.
- Sinon, l'appareil se connecte au serveur par défaut du poste .
* Si le serveur ne possède pas de fichier, il envoie "file not found" à l'appareil
Echanges avec CME:
- L'appareil essaie de faire une connexion TCP avec le premier CME que lui indique le fichier de configuration reçu.
* Un appareil ajouté au CME manuellement s'enregistre
* Un appareil utilisant l'"autoregistration" se lance dans cette procédure.
- Le CME informe les appareils utilisant des fichiers CNF de l'identité du fichier load à charger ( load ID )
Les appareils utilisant des fichiers de config CNF.XML utilise le fichier load indiqué dans le CNF.XML
- Si l'appareil doit utiliser un firmware différent de celui qui est installé, il le télécharge sur le TFTP et fait un reset.
- Le téléphone affiche son numéro à l'écran.
Le téléphone est prêt à faire un appel.
- L'appareil demande au TFTP un fichier liste de sonneries
L'utilisateur pourra choisir, ce qui chargera sur le serveur TFTP le fichier son d'une nouvelle sonnerie.
Pour refaire les fichiers de configuration:
enable, conf t, telephony-service, no cnf-files puis create cnf-files
Pour changer l'IP du système CME:
* reconfigurer l'interface: en, conf t, int f0/0, ip address 192.168.1.254 255.255.255.0
* changer l'adresse des serveurs du CME
Pour SIP:
en, conf t, voice register global,
no source-address
source-address 192.168.1.254 port 5060
Pour SCCP: en, conf t, telephony-service,
no source-address
source-address 192.168.1.254 port 2000
=> Cela va mettre à jour les fichiers existants CNF ( updating ) si on a inclus "create cnf-files"
dans conf t / telephony-service
Rem: Sans changer l'adresse source-address, les fichiers de configuration garde l'IP ancienne => le téléphone essaie de se connecter avec l'ancien serveur
Pour voir les fichiers disponibles sur le serveur tftp en SCCP:
# show telephony-service tftp-bindings
=> noter le chemin pour accéder au fichier
# more system:/its/SEPIP000CCE62BCED.cnf .xml
=> voir le contenu du fichier
Définir un poste:
sur le CME:
* Soit il sait faire l'"autoregistration" ( pour niveau de sécurité du CME faible ), il met sa MAC mais pas le button
* Soit il faut renseigner l'adresse MAC du poste
( pour un poste SIP: voice register pool
pour un poste SCCP: ephone )
et le lien avec un ephone-dn par la commande button
sur le poste:
* Définir la config IP: Mettre "DHCP Enable" à NON ( NB: C'est une autre ligne que la valeur du DHCP !
la valeur DHCP doit alors être vide )
Remplir l'IP et le masque.
* Définir l'adresse du TFTP ( qui donnera l'adresse du CME par ses fichiers CNF ou CNF.XML,
elle est obtenue par la config du CME: source-address de telephony-service pour SCCP
de voice register global pour SIP )
* Définir aussi l'adresse du routeur 1 !!!
Déverrouiller les menus de configuration d'un téléphone:
Verrouiller: **#
**#
Rem: Il faut laisser 10 secondes entre verrouiller et déverrouiller sinon le poste croit que l'on tape
Debug enregistrement:
J. Millet
debug ephone register / undebug all pour SCCP
**#** = reset
debug ccsip all pour SIP
Annexes TP Cisco
2/2
TP TL53
TP Codec
Matériel: - 1 PC avec carte réseau de bouclage activée en 192.168.1.2
image vmware Ubuntu
interface AMDnet 192.168.1.23
- xlite
- VLC
- netspeed
- fichiers vidéo à diffuser
PC réel
Carte réseau de bouclage 192.168.1.2 ( vmbridge activé )
- vmplayer
- wireshark
- Openoffice
- xlite
- Express Talk
- VLC
- Axon Serveur SIP avec 2 téléphones 1000 et 1001
OBJECTIF DU T.P.: Étudier le codage d'une vidéo, la diffusion ( streaming ), les paramètres de qualité de service.
J. Millet
TP Codec
TP TL53
Codec, Streaming
I) Caractéristiques d'une vidéo
- Démarrer le PC réel
- Lancer la machine virtuelle = Clic sur l'icône sur le bureau VM_codec, cocher "I moved it"
login tpvoip,
mot de passe: tpvoip
- Configuration des adresses IP:
PC réel: Vérifier qu'il a pour adresse IP 192.168.1.2 sur l'interface réseau simulée ( loopback )
Machine virtuelle sous ubuntu: ouvrir un terminal, ifconfig, on a 192.168.1.23 avec interface ETH0.
- Vérifier que le ping passe entre machine virtuelle et réelle.
Caractéristiques générales
Sur Ubuntu, on a installé le logiciel Mediainfo qui donne les caractéristiques d'un fichier multimédia avec 3 vidéos.
Q1) Faire un tableau dans votre compte-rendu en remplissant les cases vides du tableau suivant grâce à Mediainfo.
( Lancer Mediainfo, File, Open, Open File, sur le bureau... puis dans le logiciel view/html )
Mire_HD_xvid_1.avi
Evolution_GSM.mp4 Ski_v1.mp4
Ski_v2.mp4
Feux_artifices_1080.avi
overall bitrate
( débit total )
Video > codec ID
Width ( largeur )
Height ( hauteur )
Frame rate
( images/s )
Analyse détaillée
Rappels cours: La compression utilise des images
I ( Intra ) = Compression interne à l'image ( spatiale, proche de jpeg )
-> petite taille si peu de détails dans l'image
-> grande taille si beaucoup de détails dans l'image
P et B = Compression temporelle = différence entre 2 images
-> petite taille si images proches, peu de différences
-> grande taille si images très différentes ( mouvements, explosions )
On veut maintenant être plus précis dans l'analyse du débit instantané de la vidéo. Lire Mire_HD_xvid_1.avi avec VLC.
Q2) A-t-on des détails dans les images ? En déduire si les images I seront de petite ou grande taille ?
A-t-on du mouvement ? En déduire si les images B et P seront de petite ou grande taille ?
- Cliquer sur le raccourci bureau Bitrateviewer pour avoir le débit de la vidéo par rapport au temps.
Charger ( Load ) le fichier Mire_HD_xvid_1.avi
Q3) Faire une capture d'écran et intégrer à votre compte-rendu.
Indiquer le nombre de pics.
Q4) Ajouter les 2 lignes au tableau précédent et compléter la colonne de Mire_HD_xvid_1.avi
débit moyen ( Average )
débit max ( Peak )
J. Millet
TP Codec
1/6
TP TL53
- Fermer Bitrateviewer, cliquer sur le raccourci bureau Avidemux, charger Mire_HD_xvid_1.avi, Oui à dépaqueter.
- Menu Outils, cliquer "Histogramme de débit".
Q5) Indiquer le nombre d'images I, P, B ( en haut de fenêtre ).
En déduire ce que sont les pics que l'on avait pour le débit dans Bitrateviewer.
Expliquer par rapport au contenu du fichier ( Mire = suite d'images avec détails mais fixes dans le temps )
Q6) Indiquer le nombre total d'images dans cette vidéo.
Expliquer comment on peut calculer le nombre d'images par secondes dans cette vidéo.
Faire la calcul, vérifier avec les données de MediaInfo.
Q7) Faire la capture de Bitrateviewer pour les 4 autres vidéos du tableau.
Compléter les colonnes du tableau.
Q8) Indiquer avec les informations largeur et hauteur du tableau la différence entre les vidéos Ski_v1 et Ski_v2.
Comparer la forme du débit ( les 2 captures Bitrateviewer ).
Comparer les valeurs de débits ( moyen et max ).
En France, la TNT ( DVB-T ) transmet un ensemble de chaînes sur une fréquence: Un multiplex à 24 Mbit/s.
Un multiplex est fait en général de 6 chaînes SD ( image 720x576 pixels ) ou 3 chaînes HD ( 1920 ou 1440x1080 pixels ).
Q9) Quel est le débit moyen pour une chaîne SD ? pour une chaîne HD ?
Quel est le nombre de pixels pour une image SD ? pour une HD 1920x1080 ?
Pourquoi est-on passé du codec mpeg2 en TNT SD à mpeg4 en TNT HD ( coeff multiplicatif entre pixels SD et HD => débit HD en mpeg2 ) ?
- Pour la vidéo de ski ( v1 ou v2 ), on a 3 creux importants sur le diagramme débit/temps.
Q10) Repérer le temps en mn, sec qui leur correspond.
En regardant la vidéo dans VLC, expliquer pourquoi on a ces creux.
Taux de compression
- Ouvrir le fichier Mire_HD_sans_compr.avi dans Bitrateviewer = Mire HD sans compression.
Q11) Relever le débit de la vidéo sans compression avec Bitrateviewer.
Relever la durée de la vidéo non compressée .
En déduire le nombre de Mo par secondes de vidéo pour cette image HD.
En déduire une estimation de la taille du fichier de cette vidéo non compressée qui dure 2 mn 32 s.
( ce qui explique que l'on n'ait mis que 2 secondes de vidéo non compressée )
Q12) Calculer le taux de compression = débit moyen sans compression / débit moyen avec compression.
( remarque: L'encodage a été fait pour garder de la qualité même si cela augmente la taille du fichier compressé => XVID Target Quantizer 1 )
II) VLC en diffusion multimédia = Streaming
On veut envoyer en diffusion des flux multimédia.
Sur Ubuntu, on a ajouté dans la barre du haut d'écran un applet de mesure de débit en temps réel: Netspeed.
- Ouvrir l'affichage graphique de Netspeed = Clic droit sur les débits de la barre du haut, Détails du périphérique.
Influence du rapport entre Débit vidéo et Débit de diffusion
On diffuse Mire_HD_xvid_1.avi car elle permet d'analyser la résolution grâce aux lignes verticales plus ou moins fines.
- Sur Ubuntu, lancer VLC ( taper "vlc" en ligne de commande dans un terminal si le clic sur l'icône ne fait rien,
En cas de blocage, ouvrir le moniteur système dans la barre du haut, onglet processus, clic droit sur le processus, stopper).
* Menu Media > Flux… > clic Ajouter, sélectionner le fichier Mire_HD_xvid_1.avi > clic sur Diffuser
* Clic Next > Destination: HTTP > clic Ajouter !!!
Laisser le port 8080 et le point de montage / > clic Next
=> Le flux sera accessible à l'@IP_serveur: http://192.168.1.23:8080
J. Millet
TP Codec
2/6
TP TL53
On utilise un profil de diffusion prédéfini ( conteneur = encapsulation, codec vidéo, codec audio, sous-titres )
* Profil: Video – Theora+Vorbis ( OGG) > Next ( Des versions de VLC refusent MPEG2 pour des résolutions élevées )
Cliquer sur le bouton
, onglet codec vidéo, dans Débit mettre 8000 kbit/s, enregistrer
Clic sur Next
=> On a en bas de la fenêtre la ligne de commande qui est réellement utilisée avec vlc.
vcodec -> codec vidéo
vb -> débit de la vidéo ( video bitrate )
scale -> échelle de diffusion ( réduction, zoom )
acodec -> codec audio
( ab = débit audio audio bitrate, channels = 1 mono ou 2 stéréo )
- Rendre visible à l'écran le débit sous ubuntu de netspeed ( on va faire à la fin une capture d'écran )
Lancer la diffusion dans VLC: Cliquer sur Stream ( on voit alors en bas à droite l'instant de lecture de vidéo et sa durée )
( on aurait pu aussi voir la vidéo qui est diffusée en local en cochant dans la définition de la diffusion jouer en local" )
Si le bouton Stream du bas est hors écran, taper entrée du clavier principal,
rouvrir la fenêtre => VLC réduit le haut de fenêtre, le bas est accessible.
- Lancer VLC sur le PC réel,
* Media/ouvrir un flux réseau
* URL réseau = Adresse de la source ( avec n° de port ! ): http://192.168.1.23:8080
Q13) A la fin de la diffusion, revenir au PC réel ( CTRL+ALT) en gardant Netspeed visible, faire une impression écran depuis le PC réel
montrant l'évolution du débit ( graphique de netspeed ubuntu ).
Ouvrir Paint, Coller ( CTRL+V ), découper l'image pour n'avoir que le débit, mettre ce graphique dans votre compte-rendu.
Q14) Evaluer la valeur moyenne du débit émis et noter cette valeur dans votre compte-rendu.
Est-ce que le serveur de diffusion VLC envoie seulement le fichier diffusé ( débit de Q1 ) ou ajoute-t-il des éléments de remplissage
( bourrage pour avoir un débit vb + débit ab + des entêtes HTTP/TCP/IP/Ethernet ) ?
Q15) Comment jugez vous la réception vidéo ?
Critères de jugement:
Perturbations
-> Fluidité = Evolution dans le temps: Saccades, ralentissements ( lag, freeze = blocage )
-> Résolution = Précision et netteté: Image pixelisée ( carré à l'écran ), flou, perte de contours
Pour être moins subjectif, en comparant vb aux valeurs de la vidéo ( voir Q1 et Q2 ), comment pouvait-on deviner ?
Diffusion d'une vidéo avec détails et mouvement: Ski_v1.mp4
Les vidéos les plus exigeantes à la compression sont celles qui évoluent vite et avec beaucoup de détails, en particulier de la
neige ( ski ) ou de l'eau ( canoe kayak ).
On a introduit cette fois du mouvement dans la vidéo par rapport à la mire.
- Lancer la diffusion de Ski_v1.mp4 avec les mêmes paramètres sauf le débit que l'on remet à 800 kbit/s.
Q16) Recommencer Q13) pour la diffusion de la vidéo Ski_v1.
Q17) Comment jugez vous la réception vidéo ? Rappeler les valeurs pour cette vidéo de Q1 et Q2 ?
Diffusion d'une vidéo de résolution plus importante: Ski_v2.mp4
- Lancer la diffusion avec les mêmes paramètres de Ski_v2.mp4.
Q18) Recommencer Q13) pour la diffusion de la vidéo Ski_v2.
Q19) Comment jugez vous la réception vidéo ? Rappeler les valeurs pour cette vidéo de Q1 et Q2 ?
On change le débit de diffusion pour Ski_v2.mp4:
- Mettre une diffusion en mode personnalisé
Encapsulation: Ogg/Ogm
Codec vidéo: Theora, Mettre débit à 8000 kbit/s , échelle 1
Codec audio: Vorbis, 128, 2
Q20) A la fin de la diffusion, faire une impression d'écran sous PC réel. Ouvrir Paint, Coller avec CTRL+V, découper l'image pour
n'avoir que le débit netspeed, mettre ce graphique dans votre compte-rendu.
J. Millet
TP Codec
3/6
TP TL53
Q21) Que devient la forme du débit ? L'image a-t-elle une influence ( le débit s'adapte-t-il à l'image ou l'image au débit ) ?
- Recommencer la diffusion, mettre la vidéo sur le récepteur en grand écran.
On constate une qualité médiocre. On a cette fois un débit largement suffisant pour faire passer la vidéo. Mais la diffusion
correspond à un codage de l'émetteur, une transmission sur le canal, un décodage au récepteur.
Q22) Pourquoi a-t-on une qualité médiocre ? ( codage source, transmission, décodage récepteur ? )
En déduire la contrainte pour regarder une émission en 4k = 4k UHD ( caméra, codage, diffusion, récepteur ).
III) Effet du ré-encodage sur le serveur de diffusion
Le choix du codec
( et son réglage = pourcentage d'images I, P, B ) a une influence sur:
la qualité / le débit nécessaire / l'utilisation de l'UC / le délai ( latence ).
- Ouvrir dans la barre de menu du haut le moniteur système ( clic droit ). Choisir l'onglet "Ressources".
Codec MPEG2
- Laisser coché "Activer le transcodage", choisir le Profil MPEG2 ( Conteneur MPEG-TS, codec vidéo MPEG2, vb 800 kbit/s ).
Lancer la diffusion de Ski_v1.mp4.
- Mettre la fenêtre netspeed
sous la partie CPU du moniteur système
( Étendre si besoin pour que cela soit visible ).
Q23) Faire une impression écran du PC réel, découper les 2 fenêtres ( netspeed et CPU du moniteur système ),
ajouter à votre compte-rendu.
Codec H264
- Laisser coché "Activer le transcodage", choisir le profil personnalisé "Vidéo H264 + MP3 ( TS )"
=> Encapsulation MPEG-TS, codec vidéo H264 à 800 kbit/s., codec audio MP3 128 kbit/s, 2 ( pas AAC )
Lancer la diffusion de Ski_v1.mp4.
Q24) Recommencer la question précédente.
Q25) A quoi correspond l'augmentation d'utilisation de CPU quand on lance le streaming sur l'émetteur avant d'activer
le récepteur ( voir la fonction indiquée dans la ligne de commande VLC ou les questions Q1 Q2 codec vidéo ) ?
Q26) Conclusion sur le débit émis selon codec pour VLC ? sur l'utilisation CPU selon codec ?
IV) Effet du choix de protocole de diffusion selon la qualité de la ligne
Avec notre lien direct ( vmware = LAN parfait ) entre PC émetteur et récepteur, on n'a perdu aucun paquet sur le réseau, on n'a
introduit qu'un retard de codage et décodage du codec.
Mais en réalité le réseau intervient entre émetteur et récepteur, c'est lui qui pose le plus de problème ( sauf en fibre ).
J. Millet
TP Codec
4/6
TP TL53
On a déjà joué sur le débit en réglant la diffusion. On va modifier
* le délai ( ou latence = temps de transfert des paquets ),
* la gigue ( variation du temps de transfert des paquets )
* le taux de perte des paquets.
Pour cela on utilise netem ( network emulation ) dans la gestion des flux de la carte réseau ( tc = traffic control ).
- Ouvrir un terminal sous Ubuntu, se mettre en sudo su, ouvrir avec un éditeur le script simadsl.
( Mettez vous d'abord dans son répertoire = Bureau !! sinon vous avez un fichier vide )
( inspiré de http://blog.nicolargo.com/2009/03/simuler-un-lien-wan-sous-linux.html , http://wiki.secondlife.com/wiki/BLT )
- Mettre les caractéristiques d'une ligne adsl correcte:
BWU=8Mbit ( 8 Mbit/s sortant du DSLAM côté serveur )
BWD=512 kbit
DELAYD=20ms
DELAYU=20ms
LOSSU=1%
LOSSD=1%
- Sauvegarder et lancer le script: ./simadsl start
Diffusion avec protocole HTTP sur TCP
- Lancer le streaming en profil MPEG2 en HTTP de Ski_v1.mp4 ( comme avant mais avec une ligne "réelle" ).
=> On constate des blocages ( freezes ). On peut voir avec wireshark les messages liés au problèmes.
Q27) Est-ce dû au protocole http sur tcp ( attente d'acquittements ) ou à un blocage de débit ( voir netspeed ) ?
- Arrêter le script: ./simadsl stop
- Définir une très mauvaise ligne avec perte de paquets importantes:
BWU=3Mbit
LOSSU=10%
LOSSD=10%
- Lancer le script: ./simadsl start
- Lancer le streaming en profil MPEG2 en http => On constate de gros blocages ( freezes ).
Q28) Conclusion sur une diffusion en http sur cette ligne ?
Diffusion avec protocole RTP sur UDP
On utilise un autre protocole pour les diffusions: RTP ( Real Time Protocol sur UDP )
- Lancer une diffusion en UDP sous Ubuntu:
* Media / Flux…, choisir Ski_v1.mp4, clic Diffuser, clic Next.
* Nouvelle destination: RTP MPEG TS, Ajouter !!
mettre l'adresse IP DU DESTINATAIRE ( PC réel en 192.168.1.2 ), laisser le port 5004 et nom vide.
* Profil MPEG2 avec débit 800 kbit/s
- Démarrer le script de ligne: ./simadsl start
- Ouvrir VLC du PC réel: Media/ouvrir un flux réseau,
rtp:// IP_destinataire du flux:5004 ( destinataire = PC réel 192.168.1.2 ).
Remarque: Avec wireshark on voit que le flux est émis même sans destinataire prêt. Normalement on met une adresse de multicast, le multicast va gérer les
flux ( IGMP côté client et PIM SM Sparse Mode côté routeurs avec RP Rendezvous Point pour les relier ).
Q29) Conclusion sur une diffusion en RTP sur une mauvaise ligne?
- Arrêter le flux du streaming sous Ubuntu, relancer.
Q30) Que se passe-t-il sur le client configuré en RTP ?
- Arrêter le script: ./simadsl stop
- Arrêter VLC, fermer la fenêtre de détails de Netspeed.
V) Codecs audio et protocoles RTP ( Real Time Protocol )
On va utiliser un système de ToIP pour étudier les codecs audio et leur transfert via RTP.
- Lancer le serveur ToIP sur le PC réel: Axon
( On a défini 2 téléphones 1000 et 1001 )
J. Millet
TP Codec
5/6
TP TL53
- Lancer le client sur le PC virtuel: Xlite (n° 1001 mdp rt1234 port TCP 5060 )
Le démarrage est long ( 1 mn puis il faut attendre 1 mn qu'il passe la détection de firewall ).
Vérifier qu'il affiche son numéro = 1001
- Lancer sur le PC réel le client Express Talk, faire sa configuration si nécessaire: n° 1000 ( port TCP 5070 ),
serveur en 192.168.1.2
( Vérifier qu'il y a message blanc parlant de "registrated" et "[email protected]:5070" dans sa fenêtre en bas)
- Téléphoner pour vérifier que tout marche. Couper la communication.
Codec G711 loi µ ou A
- Dans le PC Ubuntu, cliquer en face avant de xlite sur tous les codecs sauf G711a (le seul qui reste lumineux).
- Dans le PC réel, lancer une capture wireshark sur l'interface ethernet ( 192.168.1.2 )
Appeler depuis Xlite sous ubuntu et décrocher sur l'autre téléphone pour avoir un flux RTP contenant le codec.
- Terminer la capture wireshark après 1 mn, se mettre sur une trame RTP.
- Aller au menu Telephony > RTP > Stream Analysis .
Codec voix
L'appel utilise l'encapsulation de protocoles suivante
RTP
UDP
IP
Ethernet
La colonne "IP BW" de la fenêtre Wireshark donne le débit au niveau Ethernet.
Q31) Noter le débit ( colonne IP BW, prendre au milieu de la capture quand la communication est en régime stable ).
Sachant que le débit du flux de voix G711 est 64 kbit/s, quel est le débit des entêtes ?
Quel est le rendement = taille flux du média / taille totale de la trame ( média + entêtes ) ?
Codec GSM
- Dans le PC Ubuntu, cliquer en face avant de xlite pour n'avoir que GSM qui reste lumineux.
- Dans le PC réel, relancer une capture wireshark sur l'interface 192.168.1.2
- Appeler depuis Xlite sous ubuntu.
- Terminer la capture wireshark après 1 mn, se mettre sur une trame RTP.
- Telephony / RTP / Stream Analysis.
Q32) Noter le débit = colonne IP BW ( prendre au milieu de la capture quand la communication est en régime stable ).
Connaissant le débit des entêtes grâce à la question précédente, en déduire le débit du codec.
A-t-on le codec GSM d'origine à 13 kbit/s ou une de ses évolutions ?
- Fermer la machine virtuelle.
Remarque: On aurait pu jouer avec le script simadsl avec 2 PC et en branchant haut-parleurs et micro:
Avec des délais de 200 ms up et down => 200+200 = 400 ms => perte d'interactivité.
Avec une perte de paquets => perte de qualité.
J. Millet
TP Codec
6/6
TP TL53
TP Asterisk
Sur
Raspberry Pi
Matériel: 1 RPI avec alim,
1 graveur de carte SD et 1 fichier image OS_RPI_raspbx.img sur PC
1 webcam usb,
1 casque HP + micro ( pour enregistrer messages IVR ),
1 SPA3102,
1 téléphone analogique
1 PC avec xlite, ssh, firefox ( flux MJPEG ), win32diskImager, tftpd32.
PABX
( partagé avec tp Asterisk )
I
téléphone
numérique
Z
SPA3102
n° 4200
Line = FXO
Phone = FXS
192.168.0.1 puis 10.0.0.3
Ethernet
Internet
Téléphone "public"
N° 4100
n° 101 donné
par SPA3102
PC LAN
avec client SIP
Xlite n° 100
10.0.0.13
Raspberry Pi
10.0.0.23
serveur Asterisk
Objectifs:
- Utiliser Asterisk.
- Faire un serveur vocal interactif.
- Utiliser Asterisk avec un logiciel externe ( Motion pour vidéosurveillance ).
J. Millet
TP Asterisk sur Raspberry Pi
TP TL53
Asterisk sur Raspberry Pi
L'enseignant a gravé sur carte mémoire flash une image de distribution Linux ( Debian adaptée au processeur ARM ),
étendu la partition,
installé les logiciels de la fin de tp
et défini l'@IP statique du raspberry pi en 10.0.0.23 ( voir annexe ).
(fdisk -l pour voir les partitions, df -h pour la taille libre, sudo raspi-config puis ligne "enlarge the root partition" ou "expand rootfs" )
I) Configuration de la passerelle SPA3102
On a sur la table le matériel suivant:
PABX
( partagé avec tp Asterisk )
I
téléphone
numérique
Z
SPA3102
n° 4200
Line = FXO
Phone = FXS
192.168.0.1 puis 10.0.0.3
Ethernet
Internet
Téléphone "public"
N° 4100
n° 101 donné
par SPA3102
PC LAN
avec client SIP
Xlite n° 100
192.168.0.13
10.0.0.13
Raspberry Pi
10.0.0.23
serveur Asterisk
Pour économiser du matériel on va utiliser les 2 ports ethernet de la passerelle SPA3102 comme switch.
- Faire un reset du SPA3102: Depuis le téléphone analogique branché sur le port Phone du SPA3102,
* Appeler le numéro **** ( cela appelle l'IVR = serveur vocal ), attendre la fin de l'annonce de l'IVR.
si vous n'avez pas d'annonce, débrancher tout sauf le téléphone,
rebrancher l'alimentation et recommencer.
* Composer le numéro 73738 pas trop vite en attendant que la voix répète la touche appuyée
* Taper # puis taper 1 er raccrocher quand vous entendez "option successful" ce qui lance le reset.
- Mettre le PC à l'adresse 192.168.0.13, se connecter au SPA3102: avec un navigateur HTTP http://192.168.0.1
( s'il le demande: identifiant admin et pas de mot de passe )
- Aller dans l'onglet Router, puis clic sur Advanced à droite => On a au total 4 onglets en dessous.
Aller sur l'onglet en dessous WAN Setup.
* Mettre l'adressage en IP statique ( Connection Type )
* Renseigner adresse IP 10.0.0.3 ( Static IP ) et le masque 255.255.255.0 ( Netmask )
* Mettre "Enable Wan Web Server" à yes !!! sinon on n'aura pas d'accès et il faudra refaire le reset.
* Clic sur "Submit all changes"
- Rafraichir la page si nécessaire, Clic sur LAN Setup.
* Mettre le mode Bridge
* Mettre "DHCP Server" à No
* Clic sur "Submit all changes" ( l'@IP LAN n'est pas utilisée en bridge )
A ce stade, la broche LAN ( Ethernet jaune ) et WAN ( Internet bleue ) sont dans le même réseau, c'est pourquoi on peut
brancher le rasperry pi sur cette broche.
- Repasser l'adresse IP du PC en 10.0.0.13 et vérifier que l'on peut se reconnecter au SPA3102 en 10.0.0.3
J. Millet
Asterisk sur Raspberry Pi
1/9
TP TL53
III) Configuration de la téléphonie privée de l'entreprise
Configuration des comptes téléphoniques sur Asterisk
- Se connecter à l'interface http du serveur
* Se connecter depuis le PC via navigateur web à l'interface http d'Asterisk:
* Choisir FreePbx
* Identifiant, mot de passe = admin, admin
http://10.0.0.23
- Créer les 2 comptes SIP 100, 101
* Applications > Extensions
( si inaccessible, connexion en ssh selon instructions plus loin et asterisk –cvvvvvvv )
* Mettre le n° de téléphone dans les cases "Display Name" et "SIP Alias"
mettre dans "secret" un mot de passe de 6 caractères avec lettres et chiffres: secret = rt1234
Cliquer sur "Submit" puis en haut sur "Apply config".
Configuration pour le téléphone du SPA3102
La configuration pour le téléphone sur le port Phone ( interface FXS ) correspond à l'onglet Voice > Line 1
- Dans l'interface http du SPA3102, clic sur l'onglet Voice
puis clic sur Admin login
puis clic sur Advanced => On voit 9 onglets
- Clic sur l'onglet Line 1
* Mettre Line enable à yes
* Mettre dans "Proxy and Registration" la ligne "Proxy" l'adresse IP du serveur Asterisk
la ligne "Outbound" l'adresse IP du serveur Asterisk
* Mettre dans "Subscriber Information" la ligne "Display Name" à 101
la ligne "User ID" à 101
la ligne "Password" à rt1234
* Mettre dans "Audio Configuration" la ligne "Preferred Codec" à G711a
* Vider la ligne Dialplan et mettre sans oublier les . après les x: ( x. | *x. )
Ce téléphone peut appeler un numéro commençant par 0 à 9 de n'importe quelle longueur ( x. )
et * puis un chiffre entre 0 et 9 puis n'importe quelle longueur ( *x. )
* Clic sur "Submit all changes"
- Clic sur l'onglet SIP: Mettre Packet Size à 0.020 => On émet des paquets de 20 ms
Clic sur "Submit all changes"
- Clic sur l'onglet Regional, on change un élément de la configuration électronique des signaux pour le téléphone FXS.
Mettre en bas de page FXS Port Impedance à "600+2,16uF"
Clic sur "Submit all changes"
Le téléphone Xlite du PC est configuré en 100.
- Démarrer Xlite sur le PC => Il s'enregistre.
- Vérifier les enregistrements: Se connecter en SSH à Asterisk
login = root pour cette distribution ( pi d'habitude )
password = raspberry
Taper asterisk –rvvvvvvv
puis
sip show peers => On voit les @IP )
( Sur le SPA3102, Onglet Voice > Info, section Line 1 status on a aussi Resgistration State et Next Registration In
Pour forcer l'enregistrement on redémarre le SPA3102 en enlevant et remettant l'alimentation )
- Vérifier qu'ils peuvent s'appeler, qu'ils peuvent appeler le serveur ( appeler *43 pour avoir le test d'écho )
Ajout de boite vocale = Répondeur
- Activer les boites vocales des postes 100 et 101 dans Asterisk ( via interface freepbx dans navigateur web du PC ):
Dans la définition de l'extension: Rubrique Voicemail, case "Status" à Enable. Mettre le mot de passe 1234.
- Tester la possibilité de dépôt de message ( 101 appelle 100 qui ne répond pas,... )
J. Millet
Asterisk sur Raspberry Pi
2/9
TP TL53
Q1) Relever le code à composer pour accéder aux boites vocales: Admin > Feature Codes > Voicemail > Dial Voicemail
- Tester la lecture de message ( appel depuis n'importe quel poste, indiquer votre numéro puis votre mot de passe ).
Q2) Relever le code à composer pour accéder aux boites vocales directement: My Voicemail
- Tester la lecture de message ( appel depuis le poste de la boite vocale, indiquer votre mot de passe ).
IV) Configuration de l'accès externe
Configuration d'Asterisk pour les appels sortants
a) Définir un faisceau SIP = Trunk SIP dans le serveur du RPI:
- Aller au menu de définition des Trunks dans l'interface Freepbx de l'Asterisk du RPI: Connectivity > Trunks
=> Add SIP Trunk
Trunk Name: Abo_SIP
Outbound Caller ID ( CID Sortant ) : 4200
( notre n° public )
Max Channels: 1
Outgoing Settings / Trunk Name: Abo_ext_SIP
!! à reprendre dans la config du SPA3102
Voice -> PSTN-Line -> User ID
Outgoing Settings / Peer Details
Mettre host=dynamic
Mettre username=Abo_ext_SIP
Mettre secret=rt1234
Laisser type=friend
Ajouter context=from-trunk
nom du Trunk
mot de passe pour notre compte sur le serveur public
liaison vers passerelle qui va s'enregistrer et donner son @IP
=> Effacer le contenu de USER Details dans la partie Incoming Settings
=> Ne rien mettre dans Register String
Comme on se connecte non pas à un serveur ( type peer ) mais à un client qui fait passerelle ( type friend ), le trunk n’a pas à
s’enregistrer, c’est le client qui l’aura fait.
- Clic sur Submit puis Apply Config
b) Définir l'acheminement des appels sortants : Outbound route: ( lien entre numéro extérieur appelé et faisceau )
On fait le lien entre le numéro demandé par l'abonné local et le faisceau à utiliser avec la numérotation à faire.
On veut que l'abonné local utilise le préfixe 0 pour un appel externe par le faisceau SIP.
Connectivity / Outbond routes
Route name: Op_ext_SIP_sortant
Dial Patterns:
0|.
0 dans la case Prefix et . dans la case "Match Pattern"
= Masque de numérotation: On compose le préfixe 0 sur le téléphone local qui sera éliminé et Asterisk
appelle sur le réseau public le reste du n° qui est de format quelconque ( . )
Trunk Sequence for Matched Routes: Mettre le faisceau défini avant: Choisir Abo_SIP
Clic sur Submit puis Apply Config
Configuration du SPA3102 pour les appels sortants
- Clic sur l'onglet Voice > PSTN Line
* Vérifier que Line enable est à yes,
que le port SIP est 5061 ( 5060 utilisé pour le téléphone branché sur Phone = FXS, 5061 pour le port Line = FXO )
* Dans la section Proxy and Registration
Proxy: Mettre l'adresse IP du serveur Asterisk
* Dans la section Subscriber Information
sur la droite, pas dans "Display name" !!
User ID = nom du trunk
User ID: Abo_ext_SIP
Password: rt1234
mot de passe du Trunk
* Dans la section Audio Configuration
Preferred Codec: G711a
J. Millet
Asterisk sur Raspberry Pi
3/9
TP TL53
* Dans la section DialPlan
( Rem: 4. sans x ne marche pas )
Dial Plan 1: ( 4x.<:@gw0> )
* Dans la section VoIP-To-PSTN Gateway Setup
VoIP-To-PSTN Gateway Enable: yes
Vérifier que "Line 1 VoIP Caller DP" est à 1 => On utilise le Dial Plan 1
* Dans FXO Timer Values (sec )
Voip Answer Delay: 0 ( si on laisse à 1 cela peut faire des moitiés de sonnerie sur appel sortant )
PSTN Answer Delay: 0 si on n’a pas de CallerID service sur la ligne analogique, au moins 3 sinon.
* Dans PSTN Disconnect Detection
Ligne coupée = Tonalité 440Hz à -30dB de 0,5 sec
Disconnect Tone: 440@-30,440@-30;2(.5/.5/1)
* Dans International Control
FXO Port Impedance: 600+2,16uF
SPA To PSTN Gain: 2
PSTN To SPA Gain: 2
On-Hook Speed: 3 ms ( ETSI )
Current Limiting Enable: yes
Ring Validation Time: 100 ms
Ring Timeout: 256 ms
* Clic sur "Submit all changes"
- Appeler depuis un des postes locaux vers le n° public. Penser au préfixe 0 avant le n° ( parfois il y a un délai, jusqu'à 15 s maxi )
Configuration d'Asterisk pour les appels entrants
On ajoute un acheminement entrant: Inboud Route = Lien entre le n° public demandé par l'abonné externe et n° privé appelé.
Un appel extérieur ira vers un téléphone local par la SDA ( sélection directe à l'arrivée = lien n° public <–> n° privé )
Connectivity / Inbound routes
Description: Op_ext_SIP_entrant
DID number: on laisse vide pour prendre tous les appels ( n° public pour le tp car on simule le réseau avec un pabx,
en réalité 10 chiffres )
( Caller ID number = n° appelant doit rester vide pour recevoir tous les appels )
Set Destination: Cocher Extensions et mettre 100
=> Les appels au n° DID iront au poste local 100
Clic sur Submit puis Apply Config
Remarque: Si on avait plusieurs numéro spublics, dans Trixbox, si on s'arrête là on ne peut appeler car Trixbox ne traite pas le n° => n° inconnu.
Il ne peut associer la route entrante au numéro appelé => On ajoute à la définition du trunk, partie "outgoing settings" ( oui outgoing pour appel
entrant ! ) la ligne "context=from-trunk"
Configuration du SPA3102 pour les appels entrants
- Se connecter à la CLI du serveur Asterisk puis appeler depuis le téléphone public notre installation.
=> On ne voit rien en CLI et on constate que l'appel va directement au poste branché sur Phone = FXS par défaut.
Pour que ce soit Asterisk qui gère les appels on doit rediriger les appels de PSTN vers VoIP: Clic sur PSTN Line,
Dans l'onglet Voice > PSTN Line, section PSTN-To-VoIP Gateway Setup du SPA3102
* Vérifier que PSTN-To-VoIP Gateway Enable: Yes
* Mettre PSTN Ring Thru Line 1: no
* Mettre PSTN CID for VoIP CID: No
Yes si la ligne analogique fait l’identification d’appel
( envoi du n° appelé entre sonneries )
* Mettre PSTN Caller Default DP: 2
=> L'appel entrant va au Dial Plan2
* Ajouter la ligne Dial Plan 2 qui envoie tout immédiatement ( S0 ) à Asterisk: (S0<:@10.0.0.23>)
* Clic sur "Submit all changes"
Dans l'onglet Voice > PSTN Line, section Audio Configuration du SPA3102
* Mettre DTMF Tx Method: INFO
( sinon les codes DTMF des téléphones publics ne passent pas en SIP )
- Revenir à la CLI du serveur Asterisk dans le SSH puis appeler depuis le téléphone public notre installation.
Q3) Relever la ligne qui contient la commande Dial. Expliquer ce qu'elle signifie.
- Mettre en attente ( bouton hold sur Xlite ), l'appelant entend la musique d'attente. ( MOH Music on hold )
J. Millet
Asterisk sur Raspberry Pi
4/9
TP TL53
- Changer l'extension de destination de Inbound Route en 101 ( Submit, Apply Config )
Vérifier que l'appel change de destinataire.
V) Analyse du fonctionnement
Le téléphone interne SIP xlite n° 100 appelle le poste externe public 4100: Sur le 100, on compose le numéro 0 4100.
Le téléphone est programmé pour envoyer la requête SIP d'appel au serveur qu'on lui a défini.
Il envoie un message sur le port SIP défini lors de l'enregistrement avec le serveur.
Q4) Avec la commande CLI sip show peers, indiquer le port qui sera utilisé par Asterisk pour lui répondre en SIP.
Le serveur voit une requête SIP de demande d'appel ( INVITE ) venant du poste 100. Il cherche comment traiter l'appel en
cherchant dans le contexte du poste une règle pour le numéro demandé.
Q5) Dans Freepbx ( GUI Asterisk ), dans la page de création du poste 100, indiquer le nom du contexte affecté au poste SIP par Freepbx.
Le contexte indique à Asterisk le traitement d'appel à réaliser pour le n° appelé.
Taper en CLI dialplan show nom_contexte (remplacer nom_contexte) => On voit les traitements définis pour celui-ci.
Pour voir la ligne spécifique aux numéros commençant par 0, taper dialplan show 0.@nom_contexte
Q6) Relever la ligne de ce contexte qui contient le mot Dial ( commande pour appeler )
Remarque: Cela représente la traduction dans Asterisk de ce qui a été créé avec l'interface graphique Freepbx ( Trunk, Route ).
Q7) Quel est le canal utilisé pour poursuivre l'appel ( reconnaître le nom dans la ligne ) ?
Q8) A qui va la requête partant d'Asterisk ? Quels sont @IP et port SIP de ce destinataire pour appeler l'extérieur ?
Quel est le numéro appelé ? ( signification de 0|. programmé dans Freepbx/Outbound Route )
La requête SIP d'appel envoyé par Asterisk arrive à la passerelle. Pour savoir comment elle doit traiter l'appel SIP entrant, elle
regarde lequel de ses 2 composants est concerné: téléphone 101 ou ligne téléphonique.
Q9) Qu'est ce qui permet à la SPA3102 de savoir qu'un appel SIP entrant va au téléphone 101 ( config SIP dans l'onglet Line ) ? qu'un
appel SIP entrant va aux sorties de lignes SIP ou FXO ( config SIP de l'onglet PSTN Line )
Dans l'onglet Voice > PSTN Line de la passerelle SPA3102, on a défini comment traiter un appel SIP vers ligne externe:
VoIP-To-PSTN Gateway Setup
Q10) Rappeler le Dial Plan qui a été choisi ( DP ). Rappeler la ligne configurée. A l'aide de l'annexe, expliquer le traitement réalisé.
L'appel est routé par l'interface de la passerelle SPA3102 vers le réseau public ( pabx ici ) qui appelle le téléphone 4100.
Q11) Compléter le schéma : Mettre des flèches entre source et destinataire d'un message avec n° indiquant l'ordre des messages,
Indiquer le type de message ( SIP, analogique ), contenu du message: ( appel de n° appelant vers n° appelé )
quels sont les éléments qui décident des traitements et du routage.
LAN
Ethernet
PC LAN
@IP 10.0.0.13
client SIP xlite
compte n° 100
serveur 10.0.0.23
RTC
simulé par
PABX
SPA3102
@IP 10.0.0.3
Line 1 > User ID: n° 101
PSTN Line>Subscriber Info: Abo_ext_SIP
Téléphone "public"
N° 4100
Serveur Asterisk
@IP 10.0.0.23
Comptes 100,101
Trunk Abo_SIP_ext
J. Millet
Asterisk sur Raspberry Pi
5/9
TP TL53
VI) IVR ( Interactive Voice Response ou SVI Serveur Vocal Interactif )
Enregistrement de messages systèmes personnalisés
- En mettant les messages en français ( voir annexe ), on a supprimé un répertoire où seront stockés nos messages.
Récréer ce répertoire via SSH: sudo mkdir /var/lib/asterisk/sounds/custom
cd /var/lib/asterisk
sudo chown -R asterisk:asterisk sounds
On va définir des messages pour expliquer à la personne qui appelle les choix possibles. Il y a 2 méthodes:
-> Soit on téléverse ( upload ) sur le serveur des fichiers sons avec un PC relié à Internet ce qui n'est pas notre cas.
A l'adresse http://www.oddcast.com/home/demos/tts/tts_example.php?sitepa
On tape un message, choisit une voix et un effet, enregistre le son avec audacity par exemple
On téléverse le fichier son dans Asterisk: Admin / System Recordings
-> Soit on crée les messages avec un téléphone
Admin / System Recordings dans les menus Asterisk
Mettre le n° du téléphone que l'on utilise pour enregistrer, cliquer sur Go,
Attendre que l'affichage change et indique la suite
Sur ce téléphone appeler *77 ( code défini dans les Features Code )
Faire votre message une fois en communication et raccrocher
Appeler *99 pour écouter le message, raccrocher
Revenir à la page web pour enregistrer le fichier: Name this recording, Save
sinon taper *77 pour recommencer
( mettre un nom sans _ )
- Avec Xlite ( le SPA3102 bloque l'enregistrement
pour laisser un message"
), enregistrer une annonce ENRG1: "Taper 1 pour appeler 100, 2 pour appeler 101 ou 3
- Avec Xlite, enregistrer une annonce ENRG2: "Taper 1 pour laisser un message à 100, 2 pour laisser un message à 101"
- Avec Xlite, enregistrer une annonce CONF: "Bienvenue en conférence"
Vérification avec utilisation simple: Conférences: MeetMe
- Aller à Applications/Conferences:
n° pour se connecter: 150,
nom monIVR
Join Message: CONF
User join/leave: yes
Clic sur Submit puis Apply Config
- Tester: Appel du numéro de conférence.
=> On entend le message CONF
=> On donne son nom
=> On tape # ( pound key ).
On est alors en conférence ( la voix indique combien d'autres utilisateurs sont présents )
SVI : Serveur vocal interactif ( Standard automatique / Digital Receptionnist / IVR Interactive Voice Response )
On crée un standard automatique ( "Bonjour, pour une Assistance technique, tapez 1, pour avoir des informations sur votre
abonnement, tapez 2, ..." ). C'est la version simple de l'ACD ( Automatic Call Distribution ) = Call center.
- Programmer l'accueil suivant ( fait de 2 IVR Choix1 et Choix2 qui utilisent les enregistrements ENRG1 et ENRG2 précédents ).
NB: Il faut déjà créer Choix 2 car il est utilisé dans Choix 1
- Programmer l'accueil: Applications / IVR
On fait le premier niveau
J. Millet
add a new IVR:
nom Choix1,
Annoucement ENRG1
Invalid Destination: Terminate call , Hang up
( l'IVR Choix1 n'existe pas encore, on ne peux pas encore reboucler vers lui comme on le veut )
Timeout Destination: Terminate call , Hang up
puis les options selon schéma suivant ( IVR Entries )
appui sur la touche 1 = mettre 1 dans la case Ext (digits pressed), Destination=100
clic sur + en vert
appui sur la touche 2, Destination = 101
clic sur submit et apply en haut
Asterisk sur Raspberry Pi
6/9
TP TL53
Maintenant qu'il est créé, on peut mettre les renvois vers lui dans le cas de non réponse ou réponse invalide
Invalid Destination: IVR, Choix1
( l'IVR Choix1 n'existe pas encore, on ne peux pas encore reboucler vers lui comme on le veut )
On fait le second niveau
Timeout Destination: IVR, Choix1
clic sur submit et apply config en haut
add a new IVR: nom Choix2,
Annoucement ENRG2
Invalid Destination: Terminate call , Hang up
( l'IVR Choix1 n'existe pas encore, on ne peux pas encore reboucler vers lui comme on le veut )
Timeout Destination: Terminate call , Hang up
puis les options selon schéma suivant ( IVR Entries )
appui sur la touche 1 ( digits pressed ), Destination = Voicemail 100 (busy )
clic sur + en vert
appui sur la touche 2 ( digits pressed ), Destination = Voicemail 101 (busy )
appui sur la touche 8 ( digits pressed ), Destination = IVR Choix1
clic sur submit et apply config en haut
Maintenant qu'il est créé, on peut mettre les renvois vers lui dans le cas de non réponse ou réponse invalide
Invalid Destination: IVR, Choix2
( l'IVR Choix1 n'existe pas encore, on ne peux pas encore reboucler vers lui comme on le veut )
On relie le premier niveau au second:
IVR Choix1
Options de Choix 1
Timeout Destination: IVR, Choix2
clic sur submit et apply config en haut
Aller dans la définition de Choix1
Ajouter une etnrée: appui sur la touche 3 Destination = IVR Choix2
clic sur submit et apply config en haut
Annonce ENRG1
( dit que 1 -> 100, 2->101, 3-> Choix 2 )
n° 1,
appel 100
n°2
appel 101
n°3
appel IVR Choix 2
n° i
IVR Choix 1
IVR Choix 2
Annonce ENRG2
( dit que 1 -> Msg à 100, 2-> Msg à 101 )
Options de Choix 2
n° 1,
Voicemail
de 100
n°2,
Voicemail
de 101
n°8 IVR
n° i
Choix1
IVR Choix 2
On veut tester l'IVR en simulant un appel externe depuis un poste interne. Dans Admin > Features Code on voit que c'est le
n° 7777. Mais si on ne fait rien, l'appel simulé n'ayant pas de n° d'appelant ira au context from-pstn non défini.
- Ajouter une Inbound Route pour les numéros d'appelant non définis ( DID number )
Connectivity > Inbound Routes, Add incoming Route à droite en haut
Description: simu 7777
Set Destination: IVR, Choix 1
- Tester en composant le numéro 7777 depuis le poste 101 (simule un appel entrant: voir Feature Codes )
=> On entend le message ENRG1, tester l'IVR en faisant des choix ( 1 -> appel du 100, … ).
- Modifier la destination de l'appel de Inbound Route Op_ext_SIP_entrant = racine de l'IVR = Choix 1.
- Tester depuis le poste externe 4100.
J. Millet
Asterisk sur Raspberry Pi
7/9
TP TL53
VII) Vidéosurveillance avec alerte téléphonique
Mise en place de la vidéosurveillance
- Brancher la webcam usb au raspberry pi. TOURNER LA VERS LE MUR ( qu'elle ne voit pas du mouvement en permanence )
Vérifier qu'elle est reconnue: Taper lsusb qui liste les appareils USB branché
=> on doit voir une ligne avec le nom de la webcam
- Ouvrir le fichier de configuration du logiciel motion sudo nano /etc/motion/motion.conf
S'il est vide, on démarre le logiciel pour qu'il écrive des valeurs par défaut: sudo motion –n puis ctrl C pour arrêter.
- Dans /etc/motion/motion.conf
=> Passer en 768x576:
=> Régler le seuil
ligne width 768 ( chercher "width" avec CTRL W )
ligne height 576
- Calcul du seuil: On a le seuil 1500 pour une image 320x240 = 76800 pixels
On passe à une résolution d'image de 768x576 = 442368 pixels
Calculer le facteur multiplicatif.
Appliquer ce facteur au seuil par défaut
- Réglage du seuil de détection: Ligne threshold mettre la valeur calculée avant
- Attendre du mouvement sur 3 images avant d'agir : Ligne minimum_motion_frames 3
=> Qualité d'image compressée: Ligne "quality" de la partie "Image File Output" à mettre à 100
=> Vérifier le port de streaming: Ligne "webcam_port" de paragraphe "Live Webcam Server": 8081 par défaut
=> Autoriser l'accès au serveur web du RPI depuis un autre PC: Ligne "webcam_localhost" à off
=> Mettre webcam_limit à 120 ( 1 image/s donc 2 minutes puis cela coupe, sinon il y a blocage )
- Sauvegarder et sortir de nano: CTRL O puis enter puis CTRL X
- On démarre le logiciel: sudo motion –n &
Si on n'est pas root, ne pas oublier sudo sinon pas de streaming, le & fait que le programme ne s'arrête pas si on ferme le ssh,
vérifier en fin de démarrage qu'il y a le message "Started stream webcam server in port 8081", rebooter s'il y a une erreur de palette
- Ouvrir
Firefox et se connecter au site de diffusion: http://@IP:8081
( remplacer @IP par la valeur d'adresse IP du raspberry pi obtenue par ifconfig
ou en lisant la ligne avec 8081 des messages lors du démarrage de motion )
NE PAS UTILISER INTERNET EXPLORER OU CHROME ( le flux est en Motion JPEG que seul Firefox traite par
défaut: voir http://www.lavrsen.dk/foswiki/bin/view/Motion/WebcamServer )
- Vérifier que si l'on bouge devant la webcam, on voit qu'il enregistre des images dans /tmp ( messages dans la fenêtre )
( l'image serait de mauvaise qualité si on avait laissé webcam_quality à 50 pour avoir des tailles de fichier plus petites à transférer )
- Arrêter motion en SSH: sudo killall motion
Alerte téléphonique lors de la détection de mouvement
On pourrait sauvegarder les images ou vidéos sur un serveur ftp en installant wput. Pour cela on met dans motion.conf
on_picture_save wput %f ftp://Identifiant:Mot_passe@nom_serveur_ftp/repertoire/%f –t 3
(t pour 3 essais max)
On pourrait aussi envoyer un mél. Mais cela signifie qu'il faudra attendre que l'on aille lire les fichiers pour être averti. Donc
on préfère recevoir un SMS ou un appel téléphonique automatisé grâce à notre serveur Asterisk local.
On va envoyer un appel téléphonique:
- Créer un fichier annonce_intrusion avec le téléphone Xlite. ( Asterisk ajoute l'extension .wav au nom entré )
Localiser le fichier depuis le répertoire /:
sudo find / -name annonce_intrusion.wav
Déplacer le fichier dans /var/lib/asterisk/sounds ( commande sudo mv )
- Configurer motion pour qu'un mouvement détecté appelle un script: sudo nano /etc/motion/motion.conf
Chercher "on_motion_detected" avec CTRL W ),
Enlever la mise en commentaire = le ;
Remplacer value pour avoir: on_motion_detected /usr/local/bin/cam_event.sh
J. Millet
Asterisk sur Raspberry Pi
8/9
TP TL53
Le script cam_event.sh qui est appelé consiste à demander à Asterisk de joindre un numéro téléphonique via l'abonnement SIP
public et d'envoyer le message enregistré. Pour réaliser un appel téléphonique programmé, on copie un fichier .call dans le
répertoire /var/spool/asterisk/outgoing/ ( variable astspooldir dans le fichier asterisk.conf ). Le fichier .call
contient les informations d'appel.
- Créer le script cam_event.sh appelé dans motion.conf qui va déclencher l'appel = copier le fichier .call
cd /usr/local/bin/
sudo nano cam_event.sh
#!/bin/sh
cp ~/intrusion.call /var/spool/asterisk/outgoing/
- Rendre le script exécutable sudo chmod +x cam_event.sh
- Vérifier que Asterisk peut faire un appel automatique: En CLI, taper
=> On doit avoir la ligne pbx_spool.so
module show
- On crée le fichier d'appel d'Asterisk que le script va utiliser: intrusion.call
( Infos sur "Asterisk auto-dial out" à http://www.voip-info.org/wiki/view/Asterisk+auto-dial+out ):
sudo nano ~/intrusion.call
Channel: SIP/Abo_ext_SIP/4100
Callerid: 101
MaxRetries: 2
WaitTime: 20
Context: intrusion
Extension: s
Appel du n° 4100 par canal Abo_SIP
N° Appelant, le Trunk mettra le n° public
Nombre d'essais en cas d'échec
Temps d'attente que cela décroche
Contexte qui va traiter l'appel
Extension appelée dans le contexte
Remarque: La syntaxe de Channel est celle de la commande Dial ( appeler 0 4100 depuis Xlite et regarder en CLI )
sudo chown asterisk:asterisk ~/intrusion.call
Dans Asterisk on n'a pas besoin de créer un abonné SIP interne appelé par le script car on a mis s dans le contexte à utiliser.
- Dans extensions_custom.conf d'Asterisk on fait le contexte utilisé:
( dans raspbx, extensions.conf est autogénéré donc non modifiable directement. Il inclut extensions_custom.conf )
sudo nano /etc/asterisk/extensions_custom.conf
[intrusion]
exten => s,1,Playback(/var/lib/asterisk/sounds/annonce_intrusion)
exten => s,2,Wait(3)
exten => s,3,Playback(/var/lib/asterisk/sounds/annonce_intrusion)
exten => s,4,Wait(20)
exten => s,5,Playback(/var/lib/asterisk/sounds/annonce_intrusion)
exten => s,6, Hangup()
* On diffuse le message quand cela
décroche: annonce_intrusion.wav,
* On attend
* On rediffuse le message
* On attend plus pour répondeur GSM
* On rediffuse le message
* On raccroche
Source: http://www.voip-info.org/wiki/view/How+to+implement+an+alarm+system+with+Asterisk+and+a+webcam
- Dans la CLI Asterisk, taper reload pour que les modifications soient prises en compte.
SI CELA NE MARCHE PAS ET QUE VOUS MODIFIEZ extensions_custom.conf par la suite, penser à faire reload en
CLI pour prendre en compte vos modifications.
- Vérifier que le fichier existe dans le répertoire: ls /var/lib/asterisk/sounds
=> On doit voir annonce_intrusion.wav
- Se connecter en SSH dans une seconde fenêtre sur la CLI d'Asterisk pour vérifier le déroulement de l'appel.
- Vérifier que l'appel automatisé fonctionne: Appeler le script dans la première fenêtre SSH
/usr/local/bin/cam_event.sh
- Quand l'appel automatique fonctionne, démarrer motion si ce n'est pas fait sudo motion –n &
- Vérifier que du mouvement devant votre caméra déclenche l'appel d'alerte.
Remarque: Pour bien faire les choses, il faut aussi prévoir un moyen d'arrêter le script en cas de fausse détection ou quand on veut réagir ( éviter une forme de
DOS Deny Of Service car les détections relanceraient des appels )
Forme d'IVR ( on appelle notre numéro public = racine de l'IVR => Asterisk demande un choix => selon le code on appelle un script )
Sinon au lieu d'utiliser on_motion_detected dans motion.conf, on peut utiliser on_motion_start qui ne fera un appel qu'en début de détection.
J. Millet
Asterisk sur Raspberry Pi
9/9
TP TL53
Annexe: Présentation du Raspberry Pi modèle B
Le raspberry pi est une platine qui intègre un SOC ( System On a Chip ) = Circuit Intégré qui intègre dans un même boitier
(chip) les composants d'un ordinateur ( µP, contrôleur vidéo GPU , mémoire, contrôleur ethernet, contrôleur USB ).
Le SoC du raspberry pi est un circuit Broadcom BCM2835
-> µC: CPU Central Processing Unit = ARM1176JZFS, ( floating point, 700Mhz )
RAM 512 Mo pour Raspberry pi modèle B ( non modifiable, ni extensible )
-> Contrôleur vidéo ( GPU Graphical Processung Unit ): Videocore 4 GPU
-> 2 ports USB2
Sur le port USB2 du SoC, on branche un contrôleur Ethernet => Débit limité
On peut démarrer l'OS ( booter ) qui gère les composants électroniques
soit en le mettant sur la carte flash
soit en le mettant sur un disque USB
source: http://raspberrypi.wikispaces.com/Hardware
Annexe: Graver l'OS sur carte mémoire flash
Sur le PC LAN on a branché un lecteur de carte flash. On veut graver l'OS ( Debian adaptée pour le Raspberry Pi = Raspbian “wheezy” )
- Mettre la carte flash du RPI ( On notera RPI pour Raspberry Pi dans la suite de l'énoncé ) dans le graveur.
On a téléchargé une image de la distribution (http://www.raspberry-asterisk.org/downloads/ ), élargi la partition puis
ajouté des logiciels pour la fin de tp ( usbutils, motion ). Cela donne l'image OS_RPI_raspbx.img
Pour écrire l'image dans la carte flash on a différentes méthodes:
On installe win32diskImager, on charge la distribution pour raspberry ( http://www.raspberrypi.org/downloads )
Sous windows
Sous Linux
On coche MD5 et on écrit sur la carte flash
Voir http://lea-linux.org/documentations/Installation_de_la_carte_SD_du_Raspberry_Pi
- Sur le PC qui a le lecteur de carte flash et le fichier image, démarrer le logiciel win32diskImager.
Indiquer l'image à graver,
Cocher MD5Hash et attendre qu'il calcule les valeurs de vérification
Graver la carte ( Write ).
J. Millet
Annexe Asterisk sur Raspberry Pi
1/2
TP TL53
Annexe: Configuration réseau du Raspberry Pi sans clavier et écran
- Démarrer le logiciel Tftpd32 sur le PC LAN, vérifier que le serveur DHCP est activé. Il doit donner une adresse 10.0.0.x
- Mettre la carte flash dans le RPI, relier l'Ethernet du RPI au port Internet bleu du SPA3102 qui est en bridge, l'alimenter pour qu'il boote.
- Regarder l'adresse IP que le serveur DHCP a attribuée au RPI dans la fenêtre de Tftpd32.
- Se connecter depuis votre PC en SSH sur le RPI:
Connexion: login = root pour cette distribution ( pi d'habitude )
password = raspberry
Config réseau: Il est en DHCP par défaut
Config clavier: en ssh pour azerty ( si pc en azerty ) / qwerty avec clavier usb
- Modifier l'adresse IP du RPI qui sera votre serveur SIP Asterisk, rebooter ensuite.
IP fixe au démarrage
sudo nano /etc/network/interfaces
On remplace la ligne "iface eth0 inet dhcp"
auto eth0
iface eth0 inet static
address 10.0.0.23
netmask 255.255.255.0
gateway 10.0.0.1
dns-nameservers 8.8.8.8
-> NE PAS METTRE 2 FOIS LA LIGNE auto eth0 DANS LE FICHIER
-> VÉRIFIER LES 2 D dans ADDRESS
Remarque: Pour le DNS on ne modifie pas /etc/resolv.conf car il est écrit dynamiquement
voir https://wiki.debian.org/NetworkConfiguration
Annexe: Plan de numérotation de la passerelle SPA3102
Le plan de numérotation reprend la syntaxe du protocole MGCP et est proche de celle d’Asterisk. Extrait de la documentation:
Le plan de numérotation est de la forme:
(<a1:b1>c1<:@gwX1>|<a2:b2>c2<:@gwX2>|...)
-> | juxtapose plusieurs éléments
-> <a:b> indique que si un numéro commence par a, on remplace par b
Ex: <8:1415> = On numérote avec 8 au début, on envoie 1415
On numérote 84286511 qui devient 14154286511).
-> <:b1> ajoute b1 au numéro composé
-> <a1,:> après a1 relance la tonalité d'attente jusqu'à numérotation,
a1 est supprimé du n° et on envoie le reste.
-> <a1:> supprime a1 du numéro compose et envoie le reste.
c est une chaîne de caractères qui définit les numéros:
*
#
x signifie un caractère entre 0 et 9
[x-y] signifie un caractère de x à y compris.
[xy] signifie les caractères x ou y
. signifie le choix du nombre de caractères
x. signifie 0 caractère ou plus,
xx. signifie 1 caractère ou plus
S0 signifie appel immediat dès que cela correspond.
! signifie blocage et rejet de l'appel vers le numéro demandé.
<:@gwX> est spécifique au SPA3102, SPA400, SPA3000, SPA9000.
Cela signifie d'appeler par la gateway X.
gw0 = numéroter par la ligne RTC
rien = numéroter par la sortie Internet en SIP
Autres valeurs = à définir dans la section "Gateway
Accounts" de l'onglet "Line 1".
Example:
([2-79]11<:@gw0>|xx.|*xx.|**xx.|<#9,:>xx.<:@gw0>|<#9,:>*xx<:@gw0>)
211, 311, 411, 511, 611, 711 et 911 = Appel par la ligne RTC (gw0).
1 ou plus de caractères entre 0 et 9 = Appel par "Internet" = Line 1
* puis 1 ou plus de caractères entre 0 et 9 = Appel par "Internet" = Line 1
** puis 1 ou plus de caractères entre 0 et 9 = Appel par "Internet" = Line 1
#9 suivi 1 ou plus de caractères entre 0 et 9 = Appel par RTC du n° sans #9
#9 suivi de * et 2 caractères entre 0 et 9 = Appel par RTC du n° sans #9
source:
http://www.cisco.com/en/US/products/ps10033/products_qanda_item0918
6a0080a35a44.shtml
Annexe: Annonces en français
On va utiliser une solution qui écrase les sons anglais si le son français existe = Contenu du répertoire /var/lib/asterisk/sounds
( pas la peine de mettre langage=fr dans les fichiers de conf ).
- Se connecter en SSH et télécharger les fichiers
cd /usr/src
wget http://downloads.digium.com/pub/telephony/sounds/asterisk-core-sounds-fr-wav-current.tar.gz
- On les décompresse ( utiliser l'autocomplétion = tab pour écrire la commande plus facilement )
sudo mkdir soundsfr
sudo mv asterisk-core-sounds-fr-wav-current.tar.gz /usr/src/soundsfr
cd soundsfr
sudo tar xfvz asterisk-core-sounds-fr-wav-current.tar.gz
- On écrase les sons anglais ( soundsfr -> sounds )
sudo mv /var/lib/asterisk/sounds /var/lib/asterisk/soundsen
sudo mkdir /var/lib/asterisk/sounds/
sudo cp -rf * /var/lib/asterisk/sounds/
- Tester avec un test d'écho: Appeler *43 ( ou appeler la boite vocale )
Remarque: Pour être complet il faut recommencer les mêmes manipulations mais pour les sons additionnels.
wget http://downloads.digium.com/pub/telephony/sounds/asterisk-extra-sounds-fr-wav-current.tar.gz
=> Dans la suite du tp on aura encore des messages en anglais car on n'a pas tout fait ici pour raison de temps.
J. Millet
Annexe Asterisk sur Raspberry Pi
2/2

Documents pareils

Asterisk et A2Billing

Asterisk et A2Billing Canonical et une marque déposée par cette même société. Il a été lancé en 2004 par Mark Shuttleworth, il est fondé sur la distribution Debian GNU/Linux. Nous avons choisi la version Long Term Suppo...

Plus en détail