Installation d'un serveur ASTRAD V005

Tests de validation

Created on 110411 by Yannick Vaucher

Switzernet.com

 

 

1.          Introduction

Ce document défini les spécifications de l'installation d'un serveur Astrad [1] dans sa version 005.

Il défini également les tests permettant de valider le bon fonctionnement d'un tel serveur et de sa concordance avec les spécifications.

 

Un serveur Astrad dans sa version 005 nécessite un accès à un serveur de base de données "DB3" [7] étant une réplication des tables d'un serveur Porta-Billing. [6]

 

2.          Prérequis

 

Afin de pouvoir effectuer tous les tests d'une version d'un astrad voici ce qu'il est nécessaire d'avoir en sa possession.

 

o       Un serveur Debian vierge et ses accès roots.

o       L'accès au serveur PuppetMaster. [5]

o       L'accès mysql pour l'utilisateur root sur astrad.

o       2 appareils VOIP qui seront enregistrés sur le serveur astrad.

o       1 appareil VOIP enregistré sur un autre serveur du réseau Switzernet.

o       1 téléphone d'une ligne externe (Swisscom, Orange, VTX, etc)

 

3.          Démarche

 

Les tests doivent être effectués pour valider une version du serveur. Seuls les cas-tests liés aux catégories touchées par les modifications effectuées devront être réalisé.

 

Ceux-ci seront utilisés pour réduire le temps de débogage pour tester la configuration pas par pas.

 

En cas de nouvelle version du serveur et de changement majeur, les specs doivent être adaptées en conséquence et les cas-tests également afin que les specs restent entièrement couvertes par le jeu de cas-test.

 

 

 

 

 

4.          Spécifications

 

A.   Méthode d'installation

Dans l'optique de pouvoir ajouter ou remplacer rapidement des servers SIP, la méthode d'installation se doit d'être facile à suivre voici les conditions à respecter:

  1. La méthode d'installation est documentée.
  2. Astrad s'installe avec le gestionnaire de configuration Puppet. [5]

 

B.   SIP

Ce serveur existant dans le seul but d'acheminer des appels VOIP voici les quelques fonctionnalités de base qu'il est censé fournir pour les appareils ou logiciels SIP configurés avec un compte client valide.

 

  1. Un téléphone SIP peut s'enregistrer le server SIP
  2. Appels vers un compte inscrit sur le même serveur
  3. Appels vers un compte sur un autre serveur du réseau
  4. Appels sur le réseau PSTN.
  5. Réception d'appels

 

 

C.   Codecs

  1. Les codecs disponibles doivent être les suivant :

 

 


 

D.   Databases

 

Pour une meilleure performance, le serveur Astrad possède une réplication locale de la base de données du Master.

  1. La réplication locale se fait indirectement à partir d'une réplication du Master (DB3).
  2. La table locale nommée sippeers existe.
  3. La table locale sippeers contient les nœuds SIP.
  4. La table locale nommée sipusers existe.
  5. La table locale sippusers contient les comptes SIP
  6. Lorsqu'un compte se connecte au serveur Astrad, celui-ci apparaît instantanément dans la table location locale.
  7. Lorsqu'un compte se déconnecte du serveur Astrad, celui-ci disparaît dans l'heure qui suit de la table location locale.

 

E.   Erreurs et messages vocaux

Lorsqu'une tentative d'appel est effectuée, le client doit remplir certaines conditions pour être en mesure d'effectuer son appel. Sinon il devra recevoir un message d'erreur.

Chaque erreur possède son message vocal propre. [4]

 

  1. Le mot de passe d'un compte SIP est vérifié, s'il est incorrect, il est impossible d'appeler.
  2. Un message fait savoir quand le mot de passe est incorrect.
  3. Le crédit de l'utilisateur est vérifié, s'il est en delà de sa limite du client, il est impossible d'appeler.
  4. Un message indique que l'utilisateur n'a plus de crédit, quand celui-ci est en delà de sa limite.
  5. L'état de blocage du client est vérifié, s'il est bloqué, il est impossible d'appeler.
  6. L'état de blocage du compte SIP est vérifié, s'il est bloqué, il est impossible d'appeler.
  7. Un message indique que le compte est bloqué quand le compte ou l'utilisateur est bloqué.
  8. La date d'expiration du compte SIP est vérifiée, si elle est dépassée, il est impossible d'appeler.
  9. Un message indique que le compte est expiré.
  10. Sur les appareils compatibles, un message vocal indique quand l'appel est gratuit.

 

 

F.    Radius

La comptabilisation des appels étant importante, il est nécessaire que les paquets radius soient transmis correctement au serveur de comptabilité.

 

  1. Le Master reçoit le paquet Radius "STOP" d'une communication.

 

  1. Les champs suivant sont présents dans les paquets Radius Stop envoyé :

 

  1. Les heures sont au format GMT ou UTC

 

 

G.  Daemons

Sur le serveur, 2 daemons doivent fonctionner en permanence.

  1. Une commande permet de voir l'état, de stopper, de démarrer les daemons
  2. La commande indique également quels sont les commandes disponibles
  3. Un daemon gère l'envoi des messages de comptabilisation Radius.
  4. Un daemon essaye à nouveau d'envoyer les paquets Radius qui ont échoués.

 

H.   Indisponibilité Radius - Master Hors-service

En cas de panne du serveur central, le mécanisme d'authentification alternative doit permettre le relai. [2]

 

  1. Les spécifications B sont respectées lorsque le serveur Master est indisponible.
  2. Les spécifications E sont respectées lorsque le serveur Master est indisponible.
  3. Les spécifications F sont respectées au retour à la normale du réseau après une indisponibilité du serveur.

 

I.        Documentation et version

Pour chaque version d'un serveur Astrad, il est nécessaire d'en documenter les points traités.

 

  1. Un listing des modifications est inscrit dans la documentation des versions. [3]
  2. Un fichier zip contenant le module est disponible sur la documentation des versions. [3]
  3. Une documentation plus détaillée est fourni pour chaque implémentation.
  4. Un lien vers la documentation détaillée existe dans le commentaire de version.

 

 

 

 

 

5.          Cas Test

 

CT

Spec

Manipulation

Résultat attendu

Succès

1.1

A.1

Sur le serveur Puppet, ouvrir le module et vérifier le contenu à sa racine

Un readme ou un document how-to d'installation ou un lien est visible à la racine du module.

1.2

A.2

Sur un serveur debian vierge, suivre la procédure d'installation.

 

Lors de l'exécution pour la première fois de la commande :

puppetd --server puppet.switzernet.com --test

 

Aucun message d'erreur (message de couleur jaune) ne s'affiche durant l'installation. Ni aucun message warning de couleur violette.

2.1

B.1

Enregistrer deux téléphones sur le serveur avec des comptes valides.

Le téléphone reconnaît le serveur et n'affiche aucune erreur.

2.2

B.2

Avec le téléphone enregistré, appeler le second téléphone enregistré sur le serveur.

L'appel fait sonner l'appareil de destination et en décrochant le son passe dans les deux sens.

2.3

B.3

Avec le téléphone enregistré, appeler un téléphone enregistré sur un autre serveur SIP du réseau.

L'appel fait sonner l'appareil de destination sonne et en décrochant le son passe dans les deux sens.

2.4

B.4

Avec le téléphone enregistré, appeler un téléphone appartenant à un autre fournisseur (ex. Swisscom, Orange, VTX)

L'appel fait sonner l'appareil de destination et en décrochant le son passe dans les deux sens.

2.5

B.5

Avec un téléphone enregistré sur un autre serveur SIP, appeler un des téléphones enregistré sur l'Astrad que nous testons.

L'appel fait sonner l'appareil de destination et en décrochant le son passe dans les deux sens.

2.6

B.5

Avec la ligne VTX, appeler un des téléphones enregistré sur l'Astrad que nous testons.

L'appel fait sonner l'appareil de destination et en décrochant le son passe dans les deux sens.

3.1

C.1

Sur le serveur Astrad exécuter les commandes suivantes :

astrad:~# asterisk -r

astrad *CLI> show translation

Toutes les colonnes et toutes les lignes doivent être remplies par des valeurs sauf pour ilbc et g722

         g723 gsm ulaw alaw g726aal2 adpcm slin lpc10 g729 speex ilbc g726 g722

    g723   -   3    2    2        2     2    1     3    8    20    -    2    -

     gsm  11   -    2    2        2     2    1     3    8    20    -    2    -

    ulaw  11   3    -    1        2     2    1     3    8    20    -    2    -

    alaw  11   3    1    -        2     2    1     3    8    20    -    2    -

g726aal2  11   3    2    2        -     2    1     3    8    20    -    1    -

   adpcm  11   3    2    2        2     -    1     3    8    20    -    2    -

    slin  10   2    1    1        1     1    -     2    7    19    -    1    -

   lpc10  13   5    4    4        4     4    3     -   10    22    -    4    -

    g729  12   4    3    3        3     3    2     4    -    21    -    3    -

   speex  12   4    3    3        3     3    2     4    9     -    -    3    -

    ilbc   -   -    -    -        -     -    -     -    -     -    -    -    -

    g726  11   3    2    2        1     2    1     3    8    20    -    -    -

    g722   -   -    -    -        -     -    -     -    -     -    -    -    -

 

 

4.1

D.2
D.4

Sur le serveur Astrad, lancer mysql en ouvrant la base de données asterisk puis afficher les tables existantes:

mysql -uroot -p asterisk

mysql> SHOW TABLES;

 

Dans la liste des tables doivent apparaître, les tables sippeers et sipusers.

4.2

D.3

Toujours dans mysql, afficher les 10 premières lignes de la table sippeers et le nombre d'entrée pour vérifier qu'elle n'est pas vide :

mysql> SELECT * FROM sippeers LIMIT 10;

mysql> SELECT count(*) FROM sippeers;

 

Les données de 10 nœuds s'affichent.

Et plusieurs milliers d'enregistrements sont présent dans la table (env. 7000)

4.3

D.5

Toujours dans mysql, afficher les 10 premières lignes de la table sippeers et le nombre d'entrée pour vérifier qu'elle n'est pas vide :

mysql> SELECT * FROM sipusers LIMIT 10;

mysql> SELECT count(*) FROM sipusers;

 

Les données de 10 utilisateurs s'affichent.

Et plusieurs milliers d'enregistrements sont présent dans la table (env. 7000)

4.4

D.4

Faire la requête suivante :

mysql> SELECT * FROM location3 WHERE name="4121550xxxx";

Configurer un appareil avec le numéro 4121550xxxx pour s'enregistrer sur le serveur Astrad.

Tout de suite après, faire la même requête :

mysql> SELECT * FROM location3 WHERE name="4121550xxxx";

 

La première requête ne donne aucun résultat.

La seconde requête donne un seul résultat.

4.5

D.5

Faire la requête suivante :

mysql> SELECT * FROM location3 WHERE name="4121550xxxx";

Débrancher l'appareil enregistré sur le serveur Astrad qui à le numéro 4121550xxxx.

Faire la même requête après 5 minutes:

mysql> SELECT * FROM location3 WHERE name="4121550xxxx";

 

Après manipulation : rebrancher l'appareil

La première requête donne un seul résultat.

La seconde requête ne donne aucun résultat.

5.1

E.1

Configurer un appareil en y spécifiant un mauvais mot de passe.

L'appareil doit indiquer une erreur comme quoi il n'a pas pu s'enregistrer.

5.2

E.3

E.4

Aller sur le porta-billing, dans les données du compte enregistré, changez la limite de crédit pour que celle-ci soit en dessous ou égale au balance.

Faire un appel vers une destination payante.

 

Après manipulation : rétablir la limite de crédit.

Il est impossible d'atteindre la destination et un message vocal spécifique à l'erreur est reçu.

5.3

E.5

E.7

Aller sur le porta-billing, dans les données du compte enregistré, marquer celui-ci comme étant bloqué.

Faire un appel vers une destination existante.

 

Après manipulation : débloquer le compte.

Il est impossible d'atteindre la destination et un message vocal spécifique à l'erreur est reçu.

5.4

E.5

E.7

Aller sur le porta-billing, dans les données de l'utilisateur à qui appartient le compte enregistré, marquer l'utilisateur comme étant bloqué.

Faire un appel vers une destination existante.

 

Après manipulation : débloquer l'utilisateur

Il est impossible d'atteindre la destination et un message vocal spécifique à l'erreur est reçu.

5.5

E.8

E.9

Aller sur le porta-billing, dans les données de l'utilisateur à qui appartient le compte enregistré, marquer l'utilisateur comme étant bloqué.

Faire un appel vers une destination existante.

 

Après manipulation : rétablir la date d'expiration

Il est impossible d'atteindre la destination et un message vocal spécifique à l'erreur est reçu.

5.6

E.10

Enregistrer un compte sur un Linksys SPA 921 et faire un appel vers une destination dans le réseau Switzernet.

Avant l'établissement de l'appel un message vocal indique qu'il s'agit d'un appel gratuit.

6.1

F.1

Effectuer un appel.

Aller sur le porta-billing et aller dans Trace Call.

Trouver l'appel avec le numéro de destination sur les 10 dernières minutes.

Cliquer sur  pour afficher les détails de l'appel, puis aller dans

Il y a un message contenant les informations suivantes

 

NAS-IP-Address                   = '<ip_du_serveur_astrad>'

Acct-Status-Type                 = 'Stop'

h323-call-origin                 = 'originate'

 

6.2

F.2

Toujours dans le même log, lire les paramètres du message trouvé en 6.1

Tous les paramètres listés dans la spec F.2 sont présents.

6.3

F.3

Toujours dans le même log, lire les paramètres du message trouvé en 6.1

Les heures de connexion, d'établissement et de déconnexion sont au format GMT

7.1

G.1

Alors que l'astrad est en fonction faire la commande suivante :

/etc/init.d/astrad status

 

Dans le shell est indiqué que asterisk et les deux damons tournent

7.2

G.1

Alors que l'astrad est en fonction faire les commandes suivantes :

/etc/init.d/astrad stop

/etc/init.d/astrad status

 

Dans le shell est indiqué que asterisk et les deux damons ont été stoppés.

Le message de status confrime cet état.

7.3

G.1

Alors que l'astrad est arrêté faire les commandes suivantes :

/etc/init.d/astrad start

/etc/init.d/astrad status

 

Dans le shell est indiqué que asterisk et les deux damons ont été stoppés.

Le message de status confrime cet état.

7.4

G.1

Alors que l'astrad est arrêté refaire la commande:

/etc/init.d/astrad stop

 

Dans le shell, un message indique que tout est stoppé.

7.5

G.1

Alors que l'astrad est en fonction faire la commande suivante :

/etc/init.d/astrad start

 

Dans le shell, un message averti que le système est déjà en fonction. Il ne faut pas qu'astrad redémarre.

7.6

G.2

Faire la commande sans préciser d'argument

/etc/init.d/astrad

 

La liste des mots clef disponible s'affiche

8.0

Préparation:

 

Sur le serveur Astrad, ajouter la règle suivante dans iptables pour bloquer toute communication avec le serveur Master :

iptables -A OUTPUT -d <ip_master> -j DROP

 

Après avoir terminé la série de CT H, faire la commande suivante pour rétablir la liaison avec le serveur Master:

iptables -D OUTPUT -d <ip_master> -j DROP

 

8.1

H.2

Refaire les CTs 2.1 à 2.6

Les résultats sont ceux attendus dans les CTs 2.1 à 2.6

8.2

H.3

Refaire les CTs 5.1 à 5.6

Les résultats sont ceux attendus dans les CTs 5.1 à 5.6

8.3

H.4

Refaire les CTs 6.1 à 6.3

Les résultats sont ceux attendus dans les CTs 6.1 à 6.3

9.1

I.1

Aller sur la page de documentation de version [3]

Aller au chapitre de la version en cours de test.

Le chapitre existe, et les modifications sont expliquées brièvement.

9.2

I.2

Downloader le fichier proposé dans la doc de version. [3]

Utiliser la commande suivante dans cygwin sur le fichier downloadé:

md5sum.exe yymmdd,hhmm,astrad,vvv.zip

Le fichier se télécharge sans problème et le résultat de la commande md5sum est le même que le code md5 du document de version.

9.3

I.3

Obtenir les informations sur la documentation.

Un ou plusieurs documents sont disponibles et détaillent l'implémentation.

9.4

I.4

Regarder dans le document de version les références aux autres documents détaillés.

Toutes les documentations d'implémentations sont répertoriées dans le document de version.

 

 

 

6.          Référence

 

[1] Installation asterisk

http://switzernet.com/public/100520-install-asterisk/

 

 

[2] Authentification alternative en cas de panne Radius

http://www.switzernet.com/3/public/110328-astrad-alternative-radius-auth/

 

 

[3] Astrad versionning

http://switzernet.com/3/public/110126-astrad-versions/

 

 

[4] Gestion des messages vocaux

http://switzernet.com/2/public/100719-asterisk-update/

 

 

[5] Introduction à Puppet

http://switzernet.com/3/public/110127-puppet-introduction/

 

[6] Porta-billing

https://www.intarnetinc.com/

 

[7] Installation du serveur DB3

http://switzernet.com/3/public/110316-db3-setup/