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.
The gatekeeper doesn't route them. The H.245 control channel and media channels are established directly between the endpoints.
The H.245 control channel is routed through the gatekeeper, while the media channels are established directly between the endpoints.
The gatekeeper routes the H.245 control channel, as well as all media channels, including RTP/RTCP for audio and video, and T.120 channel for data. In this case, no traffic is passed directly between the endpoints. This is usually called an H.323 Proxy, which can be regarded as an H.323-H.323 gateway.
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
0
Whether to enable the gatekeeper routed signaling mode.
H245Routed=1
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
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
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
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
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
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
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
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
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
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
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
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
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
N/A
Modify the DisplayIE of Q.931 to the specified value.
ScreenCallingPartyNumberIE=0965123456
N/A
Modify the CallingPartyNumberIE of Q.931 to the specified value.
ScreenSourceAddress=MyID
N/A
Modify the sourceAddress field of UUIE element from Q.931 Setup message.
ForwardOnFacility=1
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
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
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
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
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
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
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
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
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
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
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
1-15,21-127
Define which cause codes in a ReleaseComplete will trigger call failover.
DisableRetryChecks=1
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
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
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
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
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
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
5
Define the check interval in seconds before the CpsLimit is applied.
GenerateCallProceeding=1
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
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
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.
Note to make proxy work, the gatekeeper must have direct connection to both networks of the caller and callee.
Enable=1
0
Whether to enable the proxy function. You have to enable gatekeeper routed mode first (see the previous section). You don't have to specify H.245 routed. It will automatically be used if required.
InternalNetwork=10.0.1.0/24
N/A
Define the networks behind the proxy. Multiple internal networks are allowed. The proxy route channels only the communications between one endpoint in the internal network and one external. If you don't specify it, all calls will be proxied. If using GnuGk behind a NAT and the [Gatekeeper::Main] ExternalIP is set then there is not requirement to set this as it is auto-detected at startup. Using this setting will simply override the default detected settings.
InternalNetwork=network address/netmask[,network address/netmask,...]
The netmask can be expressed in decimal dot notation or CIDR notation (prefix length), as shown in the example.
InternalNetwork=10.0.0.0/255.0.0.0,192.168.0.0/24
T120PortRange=40000-40999
N/A (let the OS allocate ports)
Specify the range of TCP port number for T.120 data channels.
Note the range size may limit the number of concurrent calls.
See remarks about TIME_WAIT socket state timeout in the Q931PortRange
description.
RTPPortRange=50000-59999
1024-65535
Specify the range of UDP port number for RTP/RTCP channels. Note the range size may limit the number of concurrent calls.
ProxyForNAT=1
1
If yes, the gatekeeper will proxy for calls to which one of the endpoints participated is behind an NAT box. This ensure the RTP/RTCP stream can penetrate into the NAT box without modifying it. However, the endpoint behind the NAT box must use the same port to send and receive RTP/RTCP stream. If you have bad or broken endpoints that don't satisfy the precondition, you have better to disable this feature and let the NAT box forward RTP/RTCP stream for you.
ProxyForSameNAT=0
0
Whether to proxy for calls between endpoints from the same NAT box. You do not need to enable this feature in general, since usually endpoints from the same NAT box can communicate with each other.
DisableH235Call=1
0
This setting removes the cryptoTokens and clearTokens off the Setup Message. Use this when working with IP Phones that do not support large Setup messages
DisableH460Call=1
0
This setting removes the H.460 features from the Setup Message. Use this with pre-H.323v4 Endpoints and Gateways which cannot decode these messages.
EnableRTPMute=1
0
This setting allows either call party in media proxy mode to mute the audio/video by sending a * as either string or tone.userinput. The sending of * mutes the audio/video and a subsequent send of * unmutes the audio/video. Only the party who muted the call can unmute. This is designed as a hold function for terminals which do not support H450.4.