A first simple experiment with the gatekeeper
=============================================

To see that all components are up and running, get
2 Linux workstations, both connected to the LAN.
Make sure you have at least version 1.1 of OpenH323 and OhPhone installed.
On the first machine run the gatekeeper and ohphone (on
different consoles):

jan@machine1 > gk -ttt

Now the gatekeeper is running in non-routed mode with a bandwidth
limit of 100MBit. The "-ttt" option tells the gatekeeper to do a lot of debug output
on the console (you can direct that output to a file with "-o logfile").

jan@machine1 > ohpone -l -a -u jan

Now this OhPhone is listening (-l) for calls and will automatically accept them (-a). It has registered as user jan with the gatekeeper that it will automatically detect. (If the autodetect fails for some reason use "-g 1.2.3.4" to specify the IP number the gatekeeper is running on.)

On the second machine run ohphone only:

peter@machine2 > ohpone -u peter jan

The second instance of OhPhone registers with the autodetected gatekeeper as user peter and tries to call user jan.
The gatekeeper will resolve the username to the IP number from where user jan has registered (machine1 in this case) and OhPhone will call the other ionstance of OhPhone on machine one.

The first instance of OhPhone will accept that call and Peter and Jan can chat.


Using the Status interface to spy on the gatekeeper
===================================================

Now we try to see which messages are handled by the gatekeeper.
On a new console on machine1 we use telnet to connect to the gatekeeper:

jan@machine1 > telnet machine1 7000

Most probably we'll get an "Access forbidden!" message, because
not everybody is allowed to spy.

Now we create a file called gatekeeper.ini and put it in the
directory where we start the gatekeeper.
gatekeeper.ini only contains 4 lines:

[Gatekeeper::Main]
Fourtytwo=42
[GkStatus::Auth]
rule=allow
 
Stop the gatekeeper with Ctrl-C and restart it.
When we do the telnet again, we stay connected with the gatekeeper.
Now repeat the first experiment where Peter calls Jan and see which
messages are handled by the gatekeeper in non-routed mode.
There is a number of commands that can be issued in this telnet session:
Type "help" to see them.
To end the telnet session with the gatekeeper type "quit" and hit Enter.


Starting the gatekeeper in routed mode
======================================

Starting the gatekeeper in routed mode means that the gatekeeper
uses "gatekeeper routed signalling" for all calls. In this
mode the gatekeeper all signalling messages go through the gatekeeper and it has much greater control over the calls.

jan@machine1 > gk -r

Now the gatekeeper is running in routed mode. Telnet to the status port
and make a call to see what messages are now handled by the gatekeeper.

Note that all media packets (audio and video) are still sent
directly between the endpoints (the 2 instances of ohphone).

Since gatekeeper routed signalling is much more complicated you are
much more likely to hit a bug n the gatekeeper in this mode.
But if it breaks, you get to keep the pieces. ;-)


A virtual PBX: Disconnecting calls via the gatekeeper
=====================================================

Until now the gatekeeper has only acted as a mechanism
to resolve symbolic names to IP addresses. Thats an important
function but hardly exciting.

Since the gatekeeper has a lot of control over the calls,
it can terminate them for example. When we are
connected to the status port, we can list all active calls
with "PrintCurrentCalls". To terminate a call, we can
say "Disconnect 1.2.3.4" for one of its endpoints.

One could for example write a simple script that connects to
the status port and listens for all ongoing calls and terminates them after 5 minutes, so no user can over use system resources.

This mechanism could also be used to call transfers between users
or call forwarding. (But thats not yet implemented in the gatekeeper.)


Routing calls over a gateway to reach external users
====================================================


