GNU Gatekeeper Logo

Home
· Download
· Support
· Site Map

Documentation
· English Manual
· French Manual
· Spanish Manual
· Persian Manual
· Portuguese Manual
· Chinese Manual
· FAQ
· Interoperability
· Intro to H.323
· Usage Examples
· Configuration Notes
· GnuGk and SIP

Tools & Addons
· Java GUI
· ISDN Gateway
· CTI / ACD
· GnuGk Addons
· Endpoints
· Gateways
· MCUs
· IVRs
· Billing
· Commercial Addons

Development
· Compiling
· Development Version
· NAT Traversal
· Tools
· Authors

Misc
· Events
· Logos
· Recommended Books
· Success Stories

Ceci est le manuel Français pour GNU Gatekeeper 2.2.1.
Une version plus récente (Anglais) du manuel se trouve dans l'archive téléchargée de GnuGk.

Chapitres: Contenu · Introduction · Installation · Pour commencer · Config basique · Routage · Config RAS · Authentification · Accounting · Voisins · Config par terminal · Config avancée · Surveillance

12. Surveillance du Gatekeeper

12.1 Port d'état

Le port d'état est l'interface externe pour surveiller et contrôler le gatekeeper. Via cette interface, le gatekeeper enverra des messages à propos des appels en cours de tous les clients connectés et recevra des commandes.

Les messages envoyés par le gatekeeper au port d'état sont regroupés en trois niveaux de trace de sortie:

  • Niveau 0
    Notifications de rechargement et réponses directes aux commandes saisies.
  • Niveau 1
    Notifications de rechargement, réponses directes aux commandes saisies, CDRs et Requêtes de Routage.
  • Niveau 2
    Trace tout (notification des rechargement, réponses directes aux commandes saisies, CDRs, Requêtes de Routage, RAS, ...). Il s'agit du niveau de trace par défaut.
Le client connecté au port d'état peut choisir le niveau de trace par lequel il est intéressé.

L'interface est un simple port TCP (par défaut: 7000), vous pouvez vous connecter avec telnet ou un autre client. Une exemple d'autre client est l'IHM Java, connue sous le nom de GnuGk ACD.

Domaines d'Application

Ce que vous faîtes avec les pouvoirs de l'Interface d'Etat dépend de vous, mais voici quelques idées:

  • Surveillance d'Appel
  • Surveillande des terminaux enregistrés
  • Interface Utilisateur Graphique
    Voir GkGUI.
  • Routage d'Appel
    Voir GnuGk ACD.
  • Applications de Facturation
    Analyser les messages CDR et les transmettre à l'application de facturation.
  • Interfacer des extensions externes
    Si vous ne voulez pas publier le code source de ces fonctions supplémentaires, publiez juste le noyau de la fonction et interfacez vous avec au travers de l'interface d'état et conservez les parties externes privées.

Exemples

Supposons que vous êtes juste intéressés par les CDRs (enregistrement des détails des appels) et vous voulez les traiter en lot à intervalles réguliers.

Voici un script Perl simple (gnugk_cdr.pl) qui lance le gatekeeper et un client très simple pour l'Interface d'Etat et écrit juste les CDRs dans un fichier de log. Vous aurez besoin de le modifier un peu pour qu'il corresponde à vos besoins.

#!/usr/bin/perl
# sample program that demonstrates how to write the CDRs to a log file
use strict;
use IO::Socket;
use IO::Handle;

my $logfile = "/home/jan/cdr.log";      # CHANGE THIS
my $gk_host = "localhost";
my $gk_port = 7000;
my $gk_pid;

if ($gk_pid = fork()) {
        # parent will listen to gatekeeper status
        sleep(1);       # wait for gk to start
        my $sock = IO::Socket::INET->new(PeerAddr => $gk_host, PeerPort => $gk_port, Proto => 'tcp');
        if (!defined $sock) {
                die "Can't connect to gatekeeper at $gk_host:$gk_port";
        }
        $SIG{HUP} = sub { kill 1, $gk_pid; };   # pass HUP to gatekeeper
        $SIG{INT} = sub { close (CDRFILE); kill 2, $gk_pid; };  # close file when terminated

        open (CDRFILE, ">>$logfile");
        CDRFILE->autoflush(1);  # don't buffer output
        while (!$sock->eof()) {
                my $msg = $sock->getline();
                $msg = (split(/;/, $msg))[0];   # remove junk at end of line
                my $msgtype = (split(/\|/, $msg))[0];
                if ($msgtype eq "CDR") {
                        print CDRFILE "$msg\n";
                }
        }
        close (CDRFILE);
} else {
        # child starts gatekeeper
        exec("gnugk");
}

Rappelez-vous qu'il ne s'agit que d'un exemple pour montrer l'utilisation du port d'état. Vous pouvez utiliser le module FileAcct pour tracer les CDRs dans un système de production.

IHM pour le Gatekeeper

Il y a plusieurs Interfaces Home Machine (IHM - GUI) pour le gatekeeper.

  • Java GUI

    Développé par Jan Willamowius. Vous pouvez surveiller les enregistrements et les appels qui passent par le gatekeeper. Un clic droit sur un bouton vous donne un menu déroulant pour ce terminal.

    Cette IHM fonctionne avec Java 1.0 présent dans la plupart des navigateurs web. Pour des raisons de sécurité l'IHM doit fonctionner comme une application autonome ou être mise à disposition par un serveur web sur le même numéro IP que le gatekeeper (vous ne pouvez pas le lancer en tant qu'applet depuis un fichier local).

    Le programme est disponible à GnuGk Java GUI

  • GkGUI

    Un nouveau programme Java autonome développé par Citron Network Inc. Il nécessite Java 1.4. Les nouvelles fonctions comprennent:

    • Surveillance de plusieurs gatekeeper simultanément.
    • Deux modes d'affichage: Liste de Boutons ou Arbre.
    • Enregistrement des Détails d'Appel (CDR) et statistiques.
    • GK Status Log.
    • Couleurs différentes pour différents types de terminaux.
    • Modification de la configuration du gatekeeper.
    • Désenregistrement forcé de terminaux.
    • Sauvegarde et imprime le log d'état et CDR.

    Le GkGUI est distribué sous GNU General Public License, disponible à GnuGk Development

12.2 Commandes (Référence)

Cette section liste toutes les commandes que vous pouvez émettre sur le port d'état (manuellement ou avec une application externe). Les commandes ne tiennent pas compte de la casse (majuscules / minuscules). Mais certains paramètres peuvent en tenir compte.

La commande help ou h affichera la liste de toutes les commandes disponibles.

  • Reload

    Recharge la configuration.

  • Version, v

    Afficher la version et des informations sur l'OS du gatekeeper.

  • Statistics, s

    Affiche des informations statistiques du gatekeeper.

    Exemple:

    Statistics
    -- Endpoint Statistics --
    Total Endpoints: 21  Terminals: 17  Gateways: 4  NATed: 2
    Cached Endpoints: 1  Terminals: 1  Gateways: 0
    -- Call Statistics --
    Current Calls: 1 Active: 1 From Neighbor: 0 From Parent: 0
    Total Calls: 1539  Successful: 1076  From Neighbor: 60  From Parent: 5
    Startup: Fri, 21 Jun 2002 10:50:22 +0800   Running: 11 days 04:22:59
    ;
    

  • PrintAllRegistrations, r, ?

    Affiche tous les terminaux enregistrés.

    Format:

    AllRegistrations
    RCF|IP:Port|Aliases|Terminal_Type|EndpointID
    ...
    Number of Endpoints: n
    ;
    
    Exemple:

    AllRegistrations
    RCF|10.1.1.10:1720|800:dialedDigits=Wei:h323_ID|terminal|1289_endp
    RCF|10.0.1.43:1720|613:dialedDigits=Jacky Tsai:h323_ID|terminal|1328_endp
    RCF|10.0.1.55:1720|705:dialedDigits=Sherry Liu:h323_ID|terminal|1333_endp
    Number of Endpoints: 3
    ;
    

  • PrintAllRegistrationsVerbose, rv, ??

    Affiche des détails sur tous les terminaux enregistrés.

    Format:

    AllRegistrations
    RCF|IP:Port|Aliases|Terminal_Type|EndpointID
    Registration_Time C(Active_Call/Connected_Call/Total_Call) <r>
    [Prefixes: ##] (gateway only)
    ...
    Number of Endpoints: n
    ;
    
    Exemple:

    AllRegistrations
    RCF|10.0.1.8:1720|Accel-GW2:h323_ID|gateway|1322_endp
    Wed, 26 Jun 2002 16:40:03 +0800 C(1/5/33) <1>
    Prefixes: 09,002
    RCF|10.1.1.10:1720|800:dialedDigits=Wei:h323_ID|terminal|1289_endp
    Wed, 26 Jun 2002 16:40:55 +0800 C(0/32/39) <1>
    RCF|10.0.1.66:1720|716:dialedDigits=Vicky:h323_ID|terminal|1425_endp
    Wed, 26 Jun 2002 16:40:58 +0800 C(1/47/53) <1>
    Number of Endpoints: 2
    ;
    

  • PrintCurrentCalls, c, !

    Affiche tous les appels en cours en utilisant la même syntaxe ACF que lors de l'établissement de l'appel.

    Format:

    CurrentCalls
    Call No. # | CallID | Call_Duration | Left_Time
    Dialed_Number
    ACF|Caller_IP:Port|Caller_EPID|CRV|DestinationInfo|SrcInfo|IsAnswered;
    ACF|Callee_IP:Port|Callee_EPID|CRV|DestinationInfo|SrcInfo|IsAnswered;
    ...
    Number of Calls: Current_Call Active: Active_Call From Neighbor: Call_From_Neighbor \
    From Parent: Call_From_Parent
    ;
    
    Exemple:

    CurrentCalls
    Call No. 29 | CallID bd c6 17 ff aa ea 18 10 85 95 44 45 53 54 77 77 | 109 | 491
    Dial 0953378875:dialedDigits
    ACF|10.0.1.49:1720|4048_CGK1|25263|frank:h323_ID|gunter:h323_ID|false;
    ACF|10.1.1.1:1720|4037_CGK1|25263|gunter:h323_ID|frank:h323_ID|true;
    Call No. 30 | CallID 70 0e dd c0 9a cf 11 5e 00 01 00 05 5d f9 28 4d | 37 | 563
    Dial 0938736860:dialedDigits
    ACF|10.0.1.48:1032|4041_CGK1|11896|sue:h323_ID|peter:h323_ID|false;
    ACF|10.1.1.1:1720|4037_CGK1|11896|peter:h323_ID|sue:h323_ID|true;
    Number of Calls: 2 Active: 2 From Neighbor: 0 From Parent: 0
    ;
    

  • PrintCurrentCallsVerbose, cv, !!

    Affiche des détails sur tous les appels en cours.

    Format:

    CurrentCalls
    Call No. # | CallID | Call_Duration | Left_Time
    Dialed_Number
    ACF|Caller_IP:Port|Caller_EPID|CRV|DestinationInfo|SrcInfo|IsAnswered;
    ACF|Callee_IP:Port|Callee_EPID|CRV|DestinationInfo|SrcInfo|IsAnswered;
    # Caller_Aliases|Callee_Aliases|Bandwidth|Connected_Time <r>
    ...
    Number of Calls: Current_Call Active: Active_Call From NB: Call_From_Neighbor
    ;
    
    Exemple:

    CurrentCalls
    Call No. 48 | CallID 7d 5a f1 0a ad ea 18 10 89 16 00 50 fc 3f 0c f5 | 30 | 570
    Dial 0225067272:dialedDigits
    ACF|10.0.1.200:1720|1448_endp|19618|frank:h323_ID|gunter:h323_ID|false;
    ACF|10.0.1.7:1720|1325_endp|19618|gunter:h323_ID|frank:h323_ID|true;
    # Sherry:h323_ID|Accel-GW1:h323_ID|200000|Wed, 26 Jun 2002 17:29:55 +0800 <2>
    Number of Calls: 1 Active: 1 From NB: 0
    ;
    

  • Find, f

    Trouve un terminal enregistré par un alias ou un préfixe.

    Format:

    Find Alias
    RCF|IP:Port|Aliases|Terminal_Type|EndpointID
    ;
    
    Exemple:

    f 800
    RCF|10.1.1.10:1720|800:dialedDigits=Wei:h323_ID|terminal|1289_endp
    ;
    f 801
    SoftPBX: alias 801 not found!
    

  • FindVerbose, fv

    Trouve des détails d'un terminal enregistré par un alias ou un préfixe.

    Format:

    FindVerbose Alias
    RCF|IP:Port|Aliases|Terminal_Type|EndpointID
    Registration_Time C(Active_Call/Connected_Call/Total_Call) <r>
    [Prefixes: ##] (gateway only)
    ;
    
    Exemple:

    fv 02
    RCF|10.0.1.100:1720|TFN:h323_ID|gateway|4037_CGK1
    Wed, 26 Jun 2002 17:47:29 +0800 C(0/84/120) <1>
    Prefixes: 02,09
    ;
    

  • UnregisterIP

    Force l'annulation de l'enregistrement d'un terminal en fonction de son IP et appelle le port de signalisation.

    Format:

    UnregisterIP IP[:Port]
    
    Exemple:

    UnregisterIP 10.0.1.31:1720
    URQ|10.0.1.31:1032|1326_endp|maintenance;
    SoftPBX: Endpoint 10.0.1.31:1720 unregistered!
    

  • UnregisterAlias

    Force l'annulation de l'enregistrement d'un terminal en fonction d'un de ses alias.

    Format:

    UnregisterAlias Alias
    
    Exemple:

    UnregisterAlias 601
    URQ|10.0.1.31:1032|1326_endp|maintenance;
    SoftPBX: Endpoint 601 unregistered!
    

  • UnregisterAllEndpoints

    Force l'annulation de l'enregistrement de tous les terminaux enregistrés.

    Format:

    
    
    Exemple:

    UnregisterAllEndpoints
    URQ|10.0.1.7:1024|1325_endp|maintenance;
    URQ|10.0.1.8:1024|1322_endp|maintenance;
    URQ|10.0.1.32:1032|1324_endp|maintenance;
    URQ|10.0.1.36:1032|1323_endp|maintenance;
    URQ|10.0.1.42:1032|1318_endp|maintenance;
    Done
    ;
    

  • DisconnectCall

    Déconnecte un appel avec le numéro donné.

    Format:

    DisconnectCall Number
    
    Exemple:

    DisconnectCall 1533
    

  • DisconnectIP

    Déconnecte tous les appels d'un terminal en fonction de son IP et appelle le port de signalisation.

    Format:

    DisconnectIP IP[:Port]
    
    Exemple:

    DisconnectIP 10.0.1.31:1720
    

  • DisconnectAlias

    Déconnecte tous les appels d'un terminal en fonction d'un de ses alias.

    Format:

    DisconnectAlias Alias
    
    Exemple:

    DisconnectAlias 601
    

  • ClearCalls

    Déconnecte tous les appels sur le gatekeeper.

  • GK

    Affiche les informations sur le gatekeeper parent.

  • Trace

    Règle le niveau de trace de sortie de l'interface d'état. Il contrôle quels messages sont envoyés à ce client:

    • trace 0 ou trace min

      Seulement les réponses directes aux commandes et les notifications de rechargement

    • trace 1

      CDRs, réponses directes aux commandes et notifications de rechargement.

    • trace 2 ou trace max

      Affiche tout (RAS, CDRs, réponses directes aux commandes, notifications de rechargement, etc).

  • Debug

    Utilisé uniquement à de buts de debug. Options:

    • trc [+|-|n]

      Affiche/modifie le niveau de trace.

    • cfg SEC PAR

      Lit et imprime un paramètre de configuration dans une section.

    • set SEC PAR VAL

      Ecrit une valeur de paramètre de configuration dans une section.

    • remove SEC PAR

      Supprime une valeur de paramètre de configuration dans une section.

    • remove SEC

      Supprime une section.

    • printrm VERBOSE

      Imprime tous les enregistrements de terminaux supprimès.

    Exemple:

    debug trc 3
    debug set RoutedMode H245Routed 1
    

  • Who

    Affiche toutes les personnes sur le port d'ètat.

  • RouteReject

    Termine cette appel sur une file virtuelle. Cette commande est utilisée comme réponse à un événement RouteRequest (voir ci-dessous).

    Format:

    RouteReject CallingEndpointID CallRef
    
    Exemple:

    RouteReject endp_4711 1234
    

  • RouteToAlias, rta

    Route cet appel sur une file virtuel vers un alias donné. Cette commande est utilisée en réponse à un événement RouteRequest (voir ci-dessous).

    Format:

    RouteToAlias Alias CallingEndpointID CallRef
    
    Exemple:

    RouteToAlias Suzi endp_4711 1234
    

  • RouteToGateway, rtg

    Route cet appel sur une file virtuelle vers l'alias donné et positionne le destinationSignallAddress. Cette commande est utilisée en réponse à un événement RouteRequest (voir ci-dessous). Vous pouvez utiliser cette commande pour router des appels vers des passerelles hors de la zone ou des MCUs non enregistrés auprès du gatekeeper. Assurez-vous que la politique 'vqueue' et 'explicit' est en cours pour ces appels.

    Format:

    RouteToGateway Alias IP:Port CallingEndpointID CallRef
    
    Exemple:

    RouteToGateway Suzi 192.168.0.50 endp_4711 1234
    

  • Exit, q

    Quitte le port d'ètat.

  • TransferCall

    Transfère un appel étable d'un alias A vers un alias B. Quand l'alias A parlait avec l'alias X, alors l'alias A parle avec l'alias B après le TransferCall.

    Actuellement, ceci ne fonctionne qu'avec les terminaux qui supportent correctement les messages du mécanisme Q.931 (il ne fonctionne donc pas avec Netmeeting).

    Format:

    TransferCall Source-Alias New-Destination-Alias
    
    Exemple:

    TransferCall Frank Peter
    

12.3 Messages (Référence)

Cette section décrit la sortie des messages sur l'interface d'état.

  • GCF|IP|Aliases|Endpoint_Type;

    Le gatekeeper reçoit un GatekeeperRequest (GRQ) et répond avec un GatekeeperConfirm (GCF).

  • GRJ|IP|Aliases|Endpoint_Type|RejectReason;

    Le gatekeeper reçoit un GatekeeperRequest (GRQ) et répond avec un GatekeeperReject (GRJ).

  • RCF|IP:Port|Aliases|Endpoint_Type|EndpointID;

    Le gatekeeper reçoit un RegistrationRequest (RRQ) et répond avec un RegistrationConfirm (RCF).

  • RRJ|IP|Aliases|Endpoint_Type|RejectReason;

    Le gatekeeper reçoit un RegistrationRequest (RRQ) et répond avec un RegistrationReject (RRJ).

  • ACF|Caller_IP:Port|Caller_EndpointID|CRV|DestinationInfo|SrcInfo|IsAnswered[|CallID];

    Le gatekeeper reçoit un AdmissionRequest (ARQ) et répond avec un AdmissionConfirm (ACF). Le CallID est envoyé seulement quand SignalCallId=1.

  • ARJ|Caller_IP:Port|DestinationInfo|SrcInfo|IsAnswered|RejectReason[|CallID];

    Le gatekeeper reçoit un AdmissionRequest (ARQ) et répond avec un AdmissionReject (ARJ). Le CallID est envoyé seulement quand SignalCallId=1.

  • DCF|IP|EndpointID|CRV|DisengageReason[|CallID];

    Le gatekeeper reçoit un DisengageRequest (DRQ) et répond avec un DisengageConfirm (DCF). Le CallID est envoyé seulement quand SignalCallId=1.

  • DRJ|IP|EndpointID|CRV|RejectReason[|CallID];

    Le gatekeeper reçoit un DisengageRequest (DRQ) et répond avec un DisengageReject (DRJ). Le CallID est envoyé seulement quand SignalCallId=1.

  • LCF|IP|EndpointID|DestinationInfo|SrcInfo;

    Le gatekeeper reçoit un LocationRequest (LRQ) et répond avec un LocationConfirm (LCF).

  • LRJ|IP|DestinationInfo|SrcInfo|RejectReason;

    Le gatekeeper reçoit un LocationRequest (LRQ) et répond avec un LocationReject (LRJ).

  • BCF|IP|EndpointID|Bandwidth;

    Le gatekeeper reçoit un BandwidthRequest (BRQ) et répond avec un BandwidthConfirm (BCF).

  • BRJ|IP|EndpointID|Bandwidth|RejectReason;

    Le gatekeeper reçoit un BandwidthRequest (BRQ) et répond avec un BandwidthReject (BRJ).

  • UCF|IP|EndpointID;

    Le gatekeeper reçoit un UnregistrationRequest (URQ) et répond avec un UnregistrationConfirm (UCF).

  • URJ|IP|EndpointID|RejectReason;

    Le gatekeeper reçoit un UnregistrationRequest (URQ) et répond avec un UnregistrationReject (URJ).

  • IRQ|IP:Port|EndpointID;

    Le gatekeeper envoie un InfoRequest (IRQ) à un terminal pour lui demander si il est toujours en vie. Le terminal doit répondre avec un InfoRequestResponse (IRR) immédiatement.

  • URQ|IP:Port|EndpointID|Reason;

    Le gatekeeper envoie un UnregistrationRequest (URQ) à un terminal pour annuler son enregistrement. Le terminal doit répondre avec un UnregistrationConfirm (UCF).

  • CDR|CallNo|CallId|Duration|Starttime|Endtime|CallerIP|CallerEndId| \
    CalledIP|CalledEndId|DestinationInfo|SrcInfo|GatekeeperID;

    Après un appel déconnecté, l'enregistrement du détail de l'appel est affiché (sur une ligne).

  • RouteRequest|CallerIP:Port|CallerEndpointId|CallRef|VirtualQueue|CallerAlias[|CallID];

    Demande à une application externe de router un appel arrivant sur une file virtuelle. Ceci peut être fait avec une commande RouteToAlias ou RouteReject. Le CallID est envoyé seulement quand SignalCallId=1.


Page suivante Page précédente Table des matières

Chapitres: Contenu · Introduction · Installation · Pour commencer · Config basique · Routage · Config RAS · Authentification · Accounting · Voisins · Config par terminal · Config avancée · Surveillance



Last updated: 01. Mär 2010
Page maintained by Jan Willamowius