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 > ohphone -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 auto detect 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 > ohphone -u peter jan The second instance of OhPhone registers with the auto detected 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 instance 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 signaling" for all calls. In this mode the gatekeeper all signaling 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 signaling 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 ===================================================== Without using a gateway you can only call other people with an IP phone over the Internet. To reach people with ordinary telephones you must use a gateway. _________________ _____________ | endpoint "jan"| | | | 192.168.88.35 |--------->| Gatekeeper | |_______________| | | _________________ | | | gateway "gw1" | outgoing | | | 192.168.88.37 |<---------|____________| |_______________| The gatekeeper has to know which calls are supposed to be routed over the gateway and what numbers shall be called directly. Use the [RasSvr::GWPrefixes] section of the config file to tell the gatekeeper the prefix of numbers that shall be routed over the gateway. [RasSvr::GWPrefixes] gw1=0 This entry tells the gatekeeper to route all calls to E.164 numbers starting with 0 to the gateway that has registered with the H.323 alias "gw1". If there is no registered gateway with that alias the call will fail. (Note that you must use the gateway alias - you can't just tell the gatekeeper the IP number of the gateway.) Rewriting E.164 numbers ======================= When using a gateway you often have to use different numbers internally and rewrite them before sending them over a gateway into the telephone network. You can use the [RasSvr::RewriteE164] section to configure that. Example: You want to call number 12345 with you IP Phone and would like to reach number 08765 behind a gateway called "gw1". [RasSvr::GWPrefixes] gw1=0 [RasSvr::RewriteE164] 12345=08765