Call signaling messages may be passed in two ways:
The first method is Direct Endpoint Call Signaling, in which case
the call signaling messages are passed directly between the endpoints.
The second method is Gatekeeper Routed Call Signaling. With this method,
the call signaling messages are routed through the gatekeeper.
The choice of which methods is used is made in the gatekeeper configuration.
When Gatekeeper Routed call signaling is used, the gatekeeper may choose
whether to route the H.245 control channel and media channels.
This section defines the gatekeeper routed mode options (case I & II).
The proxy feature is defined in the
next section.
All settings in this section are affected by reloading the configuration at runtime.
GKRouted=1
Default: 0
Whether to enable the gatekeeper routed signaling mode.
H245Routed=1
Default: 0
Whether to route the H.245 control channel through the gatekeeper too.
Only takes effect if GKRouted=1 and H.245 tunneling is disabled
for a call. Even when this option is disabled, if Proxy or ProxyForNAT
takes effect, an H.245 channel is always routed through the gatekeeper
for calls being proxied.
CallSignalPort=0
Default: 1721
The port of call signaling for the gatekeeper.
The default port is 1721. We don't use the well-known port 1720 by default
so you can run an H.323 endpoint or gateway in the same machine as the gatekeeper.
You may set it to 0 to let the gatekeeper choose an arbitrary port.
CallSignalHandlerNumber=10
Default: 5
The number of threads dedicated to handle signaling/H.245 channels (between 1-200).
You may increase this number in a heavy loaded gatekeeper. Each thread
can process one signaling message at time, so increasing this number
will increase call throughput. Under Windows, there exists a default limit
of 64 sockets used by a single signaling thread, so each signaling thread
is able to handle at most 32 calls (with H.245 tunneling enabled).
RtpHandlerNumber=2
Default: 1
The number of RTP proxy handling threads. Increase this value only if you
experience problems with RTP delay or jitter on a heavily loaded gatekeeper.
A special care has to be taken on Windows, at RTP handling threads are subject
of the same limit of 64 sockets as signaling threads. Each RTP thread is
able to handle at most 32 proxied calls (2 sockets per call).
AcceptNeighborsCalls=1
Default: 1
With this feature enabled, the call signaling thread will accept calls
without a pre-existing CallRec found in the CallTable, provided an endpoint
corresponding to the destinationAddress in Setup can be found in the
RegistrationTable, and the calling party is its neighbors or parent GK.
The gatekeeper will also use it's own call signaling address in LCF
in responding to an LRQ. That means, the call signaling will be routed
to GK2 in GK-GK calls.
As a result, the CDRs in GK2 can correctly show the connected
time, instead of 'unconnected'.
AcceptUnregisteredCalls=1
Default: 0
With this feature enabled, the gatekeeper will accept calls
from any unregistered endpoint.
However, it raises security risks. Be careful to use it.
RemoveH245AddressOnTunneling=1
Default: 0
Some endpoints send h245Address in the UUIE of Q.931 even when h245Tunneling
is set to TRUE. This may cause interoperability problems. If the option
is TRUE, the gatekeeper will remove h245Address when h245Tunneling flag
is TRUE. This enforces the remote party to stay in tunneling mode.
RemoveCallOnDRQ=0
Default: 1
With this option turning off, the gatekeeper will not disconnect a call
if it receives a DRQ for it. This avoids potential race conditions when
a DRQ overtakes a Release Complete.
This is only meaningful in routed mode because in direct mode, the only
mechanism to signal end-of-call is a DRQ.
When using call failover this must be set to 0.
DropCallsByReleaseComplete=1
Default: 0
According to Recommendation H.323, the gatekeeper could tear down a call
by sending RAS DisengageRequest to endpoints.
However, some bad endpoints just ignore this command.
With this option turning on, the gatekeeper will send Q.931
Release Complete instead of RAS DRQ to both endpoints to force them
drop the call.
SendReleaseCompleteOnDRQ=1
Default: 0
On hangup, the endpoint sends both Release Complete within H.225/Q.931 and
DRQ within RAS. It may happen that DRQ is processed first, causing the
gatekeeper to close the call signaling channel, thus preventing the
Release Complete from being forwarding to the other endpoint.
Though the gatekeeper closes the TCP channel to the destination,
some endpoints (e.g. Cisco CallManager) don't drop the call even if
the call signaling channel is closed.
This results in phones that keep ringing if the caller hangs up
before the callee pickups.
Setting this parameter to 1 makes the gatekeeper always send
Release Complete to both endpoints before closing the call when
it receives DRQ from one of the parties.
SupportNATedEndpoints=1
Default: 0
Whether to allow an endpoint behind an NAT box register to the gatekeeper.
If yes, the gatekeeper will translate the IP address in Q.931 and H.245
channel into the IP of NAT box.
GnuGk supports NAT outbound calls (from an endpoint behind NAT
to public networks) directly without any necessary modification
of endpoints or NAT box. Just register the endpoint with the GnuGk
and you can make call now.
SupportCallingNATedEndpoints=0
Default: 1
Whether to allow an endpoint behind an NAT box that support GnuGk Nat Traversal
technique to receive calls. Use this to block errant gateways that do not support
GnuGk Nat Traversal technique properly from causing one way audio problems when
trying to call to the gateway. Calls to the gateways return caller unreachable.
To be effective SupportNATedEndpoints must be set to 1.
TreatUnregisteredNAT=1
Default: 0
Used in conjunction with AcceptUnregisteredCalls and SupportNATedEndpoints will
automatically treat all unregistered calls which cannot be determined as
being NAT are treated as being NAT.
Not all Endpoints send sourceSignalAddress in the setup message which can
be used to determine whether a caller is NAT. This adds support to those that
don't.
ScreenDisplayIE=MyID
Default: N/A
Modify the DisplayIE of Q.931 to the specified value.
ScreenCallingPartyNumberIE=0965123456
Default: N/A
Modify the CallingPartyNumberIE of Q.931 to the specified value.
ScreenSourceAddress=MyID
Default: N/A
Modify the sourceAddress field of UUIE element from Q.931 Setup message.
ForwardOnFacility=1
Default: 0
If yes, on receiving Q.931 Facility with reason callForwarded,
the gatekeeper will forwards call Setup directly to the forwarded endpoint,
instead of passing the message back to the caller.
If you have broken endpoints that can't handle Q.931 Facility with reason
callForwarded, turn on this option. Note that this feature
may not always work correctly, as it does not provide any means
of capability renegotiation and media channel reopening.
ShowForwarderNumber=0
Default: 0
Whether to rewrite the calling party number to the number of forwarder.
It's usually used for billing purpose.
Only valid if ForwardOnFacility=1.
Q931PortRange=20000-20999
Default: N/A (let the OS allocate ports)
Specify the range of TCP port number for Q.931 signaling channels.
Note the range size may limit the number of concurrent calls.
Make sure this range is wide enough to take into account TIME_WAIT
TCP socket timeout before a socket can be reused after closed.
TIME_WAIT may vary from 15 seconds to a few minutes, depending on an OS.
So if your range is 2000-2001 and you made two calls, next two can be
made after TIME_WAIT timeout elapses and the sockets can be reused.
The same applies to H245PortRange and T120PortRange. TIME_WAIT
can be usually tuned down on most OSes.
H245PortRange=30000-30999
Default: N/A (let the OS allocate ports)
Specify the range of TCP port number for H.245 control channels.
Note the range size may limit the number of concurrent calls.
See remarks about TIME_WAIT socket state timeout in the Q931PortRange
description.
SetupTimeout=4000
Default: 8000
A timeout value (in milliseconds) to wait for a first message (Setup)
to be received after a signaling TCP channel has been opened.
SignalTimeout=10000
Default: 30000
A timeout value (in milliseconds) to wait for a signaling channel
to be opened after an ACF message is sent or to wait for an Alerting
message after a signaling channel has been opened. This option
can be thought as a maximum allowed PDD (Post Dial Delay) value.
AlertingTimeout=60000
Default: 180000
A timeout value (in milliseconds) to wait for a Connect message
after a call entered Alerting state. This option can be thought
as a maximum "ringing time".
TcpKeepAlive=0
Default: 1
Enable/disable keepalive feature on TCP signaling sockets. This can
help to detect inactive signaling channels and prevent dead calls from hanging
in the call table. For this option to work, you also need to tweak system
settings to adjust keep alive timeout. See docs/keepalive.txt for more details.
TranslateFacility=1
Default: 0
Enable this option if you have interoperability problems between H.323v4
and non-H.323v4 endpoints. It converts Facility messages with reason = transportedInformation
into Facility messages with an empty body, because some endpoints do not
process tunneled H.245 messages inside Facility, if the body is not empty.
The conversion is performed only when necessary - if both endpoints are v4
or both endpoints are pre-v4, nothing is changed.
SocketCleanupTimeout=1000
Default: 5000
Define time to wait before an unused socket is closed (if it is not yet closed)
and deleted (its memory is released). If you use very small port ranges, like
a few ports (e.g. RTPPortRange=2000-2009), you may want to decrease this value
to get sockets reusable faster.
ActivateFailover=1
Default: 0
Activate call failover: When activated, GnuGk will try to find
other possible routes to a destination if the call fails on the
first route. Currently only routes available via the 'internal'
routing policy can be used as alternatives routes.
For accounting of calls using failover, see the SingleFailoverCDR
switch in the
[CallTable] section.
FailoverCauses=1-15,21-127
Default: 1-15,21-127
Define which cause codes in a ReleaseComplete will trigger
call failover.
DisableRetryChecks=1
Default: 0
This will disable all checks if a failed call has already received
FastStart or H.245 messages. Caution: Using this switch enables you
to retry more calls, but you run the risk that some of the retried
calls will fail because the caller is already in a state where he
can't talkt to a new partner.
CalledTypeOfNumber=1
Default: N/A
Sets Called-Party-Number type of number to the specified value
for all calls
(0 - UnknownType, 1 - InternationalType, 2 - NationalType,
3 - NetworkSpecificType, 4 - SubscriberType, 6 - AbbreviatedType, 7 - ReservedType).
CallingTypeOfNumber=1
Default: N/A
Sets Calling-Party-Number type of number to the specified value
for all calls
(0 - UnknownType, 1 - InternationalType, 2 - NationalType,
3 - NetworkSpecificType, 4 - SubscriberType, 6 - AbbreviatedType, 7 - ReservedType).
ENUMservers=e164.org,e164.arpa
Default: N/A
Sets the eum server list in priority order seperated by (,) for the enum policy.
This overrides the PWLIB_ENUM_PATH environmental variable.
RDSServers=myvirtualhost.com
Default: N/A
Use this to set RDS server to query for rds routing policy.
This set the domains to use to resolve URI's which do not have SRV records and
maybe virtually hosted or SRV records are stored in another host.
This overrides the PWLIB_RDS_PATH environmental variable.
CpsLimit=10
Default: 0
Limit the rate of incomming calls to n calls per second. If more calls are received they are
rejected on TCP level without H.323 error messages and they won't show up in CDRs.
A value of zero (default) disables the feature.
The limit only applies if the calls in the check interval are greater than check-interval * CPS-rate. This allows small call spikes on a machine without much load, but will apply strict limits when the overall load is high.
This feature is meant to shield the gatekeeper from overload and to avoid as much resource usage a possible in an overload situation.
Currently the calls are blocked when the first message comes in on the signalling port. This makes it
very effective for unregistered calls. But so far ARQs are not blocked, so it will be less effective with
registered calls.
CpsCheckInterval=1
Default: 5
Define the check interval in seconds before the CpsLimit is applied.
GenerateCallProceeding=1
Default: 0
WARNING: This is an experimental feature and may not work in all configurations.
When set, GnuGk will generate a CallProceeding for each Setup message it receives.
This can be helpfull to avoid a timeout in calling endpoints if the destination takes
a long time to answer or the call is processed in a virtual queue. Without setting
UseProvisionalRespToH245Tunneling=1 this will disable H.245 tunneling.
CallProceeding messages sent by endpoints or gateways will be translated into Facility
or Progress messages.
UseProvisionalRespToH245Tunneling=1
Default: 0
WARNING: This is an experimental feature and may not work in all configurations.
If you only use H.323 equipment that supports provisionalRespToH245Tunneling,
you can set this switch to keep H.245 tunneling enabled when using gatekeeper
generated CallProceeding.
EnableH450.2=1
Default: 0
When set, GnuGk will intercept H.450.2 call transfer messages and if possible transfer
the call on behalf of the endpoint. This allows the endpoint initiated transfering of
calls where the remote endpoint may not support H.450 and the gatekeeper initiates the
call transfer.
The section defines the H.323 proxy features. It means the gatekeeper will
route all the traffic between the calling and called endpoints, so there
is no traffic between the two endpoints directly. Thus it is very useful
if you have some endpoints using private IP behind an NAT box and some
endpoints using public IP outside the box.
The gatekeeper can do proxy for logical channels of RTP/RTCP (audio and video)
and T.120 (data). Logical channels opened by fast-connect procedures
or H.245 tunneling are also supported.