Routage avec ACD pour Armenie-Yerevan

Oussama Hammami, 2009-11-10

Switzernet

 

 

 

Nous avons constaté une mauvaise qualité de la voix pour les appels à destination de l’Armenie – Yerevan (+37410).

Pour l’améliorer on a décidé de router dynamiquement les appels vers le vendeur qui offre une meilleur qualité.

1.               Introduction

Le Billing route les appels vers le vendeur dont la préférence est la plus grande mais ce type de routage n’est pas faible car on envoie les appels vers un vendeur quelque soit son état (chargée, en panne) ce qui provoque parfois des indisponibilités ou problèmes de qualité.

Par contre pour ce nouveau routage, on va tenir compte de l’ACD (Moyenne de durée d'appel) pour un intervalle dynamique ainsi que la préférence pour calculer une probabilité de routage pour chaque vendeur.

 

 


 

 

 

 

 

 

 

 

 

 

 

 

L’algorithme de routage utilisé est décrit dans :

ACD Routing for Fighting Wrong Signal Supervision [091020  ii]

 

2.               Architecture

 

 

La probabilité de routage est le complément à 100 du pourcentage de rejet, c’est la probabilité pour que l’appel passe par le vendeur spécifié au premier lieu en cas de rejet la probabilité passe à 100% pour le second vendeur.

L’appel ne sera rejeté qu’une seul fois par notre système de routage.

Le Billing route toujours les appels vers le vendeur dont la préférence est la plus grande mais cette fois le vendeur n’est qu’une interface réseau de notre serveur Kamailio. Ce dernier va décider selon la probabilité de routage spécifié au vendeur caractérisé par l’interface qui vient de recevoir l’appel s’il l’accepte ou non.

3.               Diagramme

 

 

 

 

 

Un script PHP calcule le pourcentage de rejection et l’ACD pour les X dernières minutes. L’exécution est lancée par CRON chaque 10 minute mais l’intervalle dont lequel on calcule les variables de décision n’est pas fixe.

La durée minimale de cet intervalle est de 20 minutes et le nombre minimal d'appels est de 20 appels, si l'une de ces deux conditions n'est pas satisfaite alors l'intervalle reste ouvert jusqu'au prochain lancement et c’est pour cette cause qu’on remarque que l’intervalle fait toujours un pas de 10 minutes.

Lorsque ces deux conditions sont vraies l'intervalle est fermé, une nouvelle ligne est ajoute à la table « acd_vendors » de la base « acd_armenia » avec des nouveaux valeurs qui vont changer le comportement de serveur de routage selon la qualité offert par les vendeurs pendant ce dernier intervalle.

Enfin, il va uploader un fichier html via FTP aux serveurs web de Switzernet (Switzernet.com et Unappel.ch) qui sert à suivre le comportement du système et pour surveiller son activité ce fichier est mis à jour chaque 5 minute.

À chaque rejet Kamailio incrémente un compteur présent dans la base de données pour la période en cours et à chaque autorisation il incrémente aussi un autre compteur dans la même base ainsi nous avons le nombre totales des appels traitées et rejetées par Kamailio.

Exemple de calcule du pourcentage de rejection

 

 

Pour démonstration, une calculatrice en ligne est fournie. Le fichier Excel joint montre également les implémentations des équations utilisées pour calculer le taux de rejet en fonction de valeurs de l'ACD.

Rejection Calculator [xls]

Exemple d’exécution

 

 

1.               Résultats

 

Les statistiques sont disponibles à cette adresse :

ACD Routing Statistics: Armenia, Yerevan [091029 ii]

2.               Référence

 

Configuration de Kamailio (OpenSER) [091023]

 

Les Testes de ACD-Routage [091023]

 

Le Protocole SIP [091023]

 

Switzernet © 2009 by O.Hammami