A registration load tester for H.323 gatekeepers.
reg-load-test creates a configurable number of H.323 endpoints and registers each of them with a gatekeeper.
The endpoints stay registered (keeping their registrations alive) until the program is stopped, at which point they all unregister cleanly.
Build and install PTLib and H323Plus first, then:
make optnosharedThe Makefile looks for H323Plus in $OPENH323DIR, defaulting to ~/h323plus:
OPENH323DIR=/path/to/h323plus make optnosharedThe binary is placed in the obj_* directory created by the build.
reg-load-test -g <gatekeeper> [options]Run without arguments or with -h to list all options.
| Option | Description | Default |
|---|---|---|
-g, --gatekeeper <addr> |
Gatekeeper address (required) | – |
-c, --count <n> |
Number of endpoints to register (1–1000) | 1 |
-d, --delay <ms> |
Delay between registrations in milliseconds | 100 |
-u, --usernameprefix <prefix> |
Prefix for endpoint aliases | ep |
-s, --servername <name> |
Name identifying this tester instance in aliases | random 20-letter string |
-p, --password <pw> |
Gatekeeper password (H.235) for all endpoints | – |
-i, --interface <ip[:port]> |
Local interface to bind to, optionally with base port | all interfaces |
-b, --baseport <port> |
Base TCP port for the H.323 listeners | random |
-t, --trace |
Enable tracing; repeat for more detail (-ttt) |
off |
-o, --output <file> |
Write trace output to a file | stderr |
--h46018enable |
Enable H.460.18 (only if H323Plus was built with H.460.18 support) | off |
-h, --help |
Print usage information and exit | – |
IPv6 addresses for -i can be given with or without brackets, eg. [2001:db8::1]:20000.
Each endpoint registers with the alias
<usernameprefix>_<servername>_<n>
where n runs from 1 to the endpoint count, eg. ep_loadhost1_1, ep_loadhost1_2, … The server name keeps aliases unique when running several instances against the same gatekeeper; if you don't set one, a random name is generated on each start.
Every endpoint needs its own TCP listener, even though no calls are ever made. Endpoint n listens on base port + n, so make sure that range is free. When running several instances on the same host, give each one a different base port with -b or -i.
Press Ctrl-C (or send SIGTERM / SIGQUIT). All registered endpoints unregister from the gatekeeper before the program exits.
Register 500 endpoints, 50 ms apart:
reg-load-test -g 192.168.1.10 -c 500 -d 50Two instances on the same host, running on different port ranges:
reg-load-test -g gk.example.com -c 1000 -b 20000
reg-load-test -g gk.example.com -c 1000 -b 30000Authenticated registrations with H.460.18 and a trace file:
reg-load-test -g gk.example.com:1719 -c 100 -p secret --h46018enable -ttt -o trace.logGNU General Public License v3.0 – see LICENSE.
Copyright (c) 2026 Jan Willamowius