Problem:
When you have a gatekeeper configured with zones that contain overlapping dial-plans, you need to be cognizant of your use of dots and asterisks in zone statements. Otherwise, you will create (as Cisco puts it) “ambiguous situations” in which the gatekeeper will not know which zone or gateway it should send a call to.
For example:
gatekeeper
zone local localzone1 dns.au 10.1.1.228zone local localzone2 dns.au
no zone subnet localzone1 default enable
zone subnet localzone1 10.1.1.240/28 enable
no zone subnet localzone2 default enable
zone subnet localzone2 10.99.0.0/16 enable
zone prefix localzone1 0*
zone prefix localzone1 1*
zone prefix localzone1 6*
zone prefix localzone1 8*
zone prefix localzone2 9999931..
Zone prefix localzone2 9999932..
Zone prefix localzone2 9999933..
Zone prefix localzone2 9999934..
Zone prefix localzone2 9999935..
Zone prefix localzone2 9999936..
Zone prefix localzone2 9999937..
Zone prefix localzone2 9999938..
Zone prefix localzone2 9999939..
Zone prefix localzone2 999994…
zone prefix localzone2 999995…
zone prefix localzone1 9*
accounting vsa
gw-type-prefix 1#* default-technology
arq reject-unknown-prefix
lrq reject-unknown-prefix
no use-proxy localzone2 default inbound-to terminal
no use-proxy localzone2 default outbound-from terminal
no shutdown
endpoint ttl 60
Symptoms and Characteristics:
- The local gatekeeper is expected to route calls to more than one local zone or is expected to route calls to gatekeepers in remote zones or both.
- Calls within a local zone can be routed successfully.
- Some, but not all, interzone calls can be routed successfully.
- The interzone calls that are not routed successfully are to called numbers with a specific number of digits. For example, calls to a 10-digit or nine-digit number may succeed, while a call to a three-digit number starting with the same digit reliably fails.
- The gatekeeper configuration makes use of dot wildcards within zone prefixes.
Solution:
When you specify wildcard digits within a zone prefix, avoid using dots where possible. Instead, use the less-specific asterisk wildcard. You can also avoid the problem when you observe these rules:
- If the dial-plan is consistent, you can use a configuration with only dots (or using only asterisks).
- If there is an overlap in the dial-plan, it is best to stick to using configurations with asterisks.
- If there is overlap in the dial-plan, and a configuration with only asterisks is not suitable, study the gatekeeper’s default behavior of prefix guessing (deduce and prepend the local area code) before you configure the gatekeeper.
The third rule requires an understanding of the details of the gatekeeper’s behavior as described in this document.
Debug Examples:
This is debug output from the gatekeeper that shows Registration, Admission, and Status Protocol (RAS) flows and zone prefix processing for:
debug h225 asn1 and debug gatekeeper main 10 – failed call
GK#show debug
gk main debug level = 10
H.225: H.225 ASN1 Messages debugging is on!— This output is from the debug h225 ans1 command issued on the gatekeeper. It shows
!— an incoming RAS ARQ for called number 112. It is important to
!— note that the calling number (source endpoint) comes from the zone localzone2 and,
!— assuming three-digit numbers, its prefix (source endpoint prefix) is 999995.Mar 11 21:48:15: RAS INCOMING PDU ::=
value RasMessage ::= admissionRequest :
{
requestSeqNum 36784
callType pointToPoint : NULL
callModel gatekeeperRouted : NULL
endpointIdentifier {“618FED9800000008″}
destinationInfo
{
e164 : “112″,
e164 : “112″
}
srcInfo
{
h323-ID : {“999995985″},
e164 : “999995985″
}
srcCallSignalAddress ipAddress :
{
ip ’0A14000C’H
port 11309
}
bandWidth 1280
callReferenceValue 31633
conferenceID ’5634343434EF21002B211E5226E91D26′H
activeMC FALSE
answerCall FALSE
canMapAlias FALSE
callIdentifier
{
guid ’5634343434EF20002B211E5226E91D26′H
}
gatekeeperIdentifier {“localzone2″}
willSupplyUUIEs FALSE
}!— This output is from the debug gatekeeper main 10 command
!— issued on the gatekeeper. It
!— shows the gatekeeper zone prefix processing logic (rassrv_get_addrinfo).
!— Comments are inserted throughout.Mar 11 21:48:15: gk_rassrv_arq: arqp=0x61A09EE4, crv=0x7B91, answerCall=0
Mar 11 21:48:15: ARQ Didn’t use GK_AAA_PROC!— Tech-prefix matching occurs first. In this case study, no
!— tech-prefixes are configured so no match is found.Mar 11 21:48:15: rassrv_get_addrinfo(112): Tech-prefix match failed.
!— The next line in the trace is the key to what, in this case study, is unexpected
!— behavior. The expected behavior is for 112 to match with the wildcard “1*” entry
!— in localzone1.!— The local (source) zone of the calling number is localzone2.
!— It has been configured as
!— supporting the prefix “999995…” with three wildcard digits.
!— (Note the configuration line
!— “zone prefix localzone2 999995…”.)!— The gatekeeper, when asked to resolve a three-digit number 112,
!— deduces this to mean “999995-112″ in the local zone because
!— “112″ matches with the specific-length three-dot
!— wildcard configuration for the local zone.!— This behavior is exactly the same as a local area code being assumed when a local
!— call is made.!— If the configuration line “zone prefix localzone2 999995…” was removed from the
!— configuration, or if the line “zone prefix localzone2 999995*” was inserted instead,
!— then the three-digit number “112″ would not match in the local
!— zone but would rather match localzone1 through the
!— configuration line “zone prefix localzone1 1*”.Mar 11 21:48:15: rassrv_get_addrinfo(112): Defaulting to source endpoint’s zone prefix 999995
Mar 11 21:48:15: No tech-prefix
Mar 11 21:48:15: Alias not found
!— The gatekeeper attempts to find a default technology prefix, But although “#1″ is
!— configured, the H.323 endpoints in localzone2 correctly do not register with that. The
!— conclusion drawn is that there is an “unknown address and no default
!— technology defined”:Mar 11 21:48:15: rassrv_get_addrinfo(112): default-tech gateway selection failed, status = 0×805
Mar 11 21:48:15: rassrv_get_addrinfo(112): unknown address and no default technology defined.
Mar 11 21:48:15: rassrv_get_addrinfo(112): Tech-prefix match failed.
Mar 11 21:48:15: rassrv_get_addrinfo(112): Defaulting to source endpoint’s zone prefix 999995
Mar 11 21:48:15: No tech prefixMar 11 21:48:15: Alias not found
!— The gatekeeper indicates that it has failed to find a registered match for the
!— called number in localzone2:Mar 11 21:48:15: rassrv_get_addrinfo(112): default-tech gateway selection failed, status = 0×805
Mar 11 21:48:15: rassrv_get_addrinfo(112): unknown address and no default technology defined.
Mar 11 21:48:15: gk_rassrv_sep_arq(): rassrv_get_addrinfo() failed (return code = 0×103)!— The gatekeeper sends the Admission Reject (ARJ) because the called party is not
!— registered:Mar 11 21:48:15: RAS OUTGOING PDU ::=
value RasMessage ::= admissionReject :
{
requestSeqNum 36784
rejectReason calledPartyNotRegistered : NULL
}
debug gatekeeper main 10 – successful call
This debug is an extract from the output of the debug gatekeeper main 10 command and shows a successful call.
GK#show debug
gk main debug level = 10
H.225: H.225 ASN1 Messages debugging is on!— The four-digit called number 1003 does not match with the three-dot wildcard
!— for localzone2 noted earlier. Instead, it matches with the less-specific
!— asterisk wildcard for localzone1.Feb 19 16:52:19: rassrv_get_addrinfo(1003): Tech-prefix match failed.
Feb 19 16:52:19: rassrv_get_addrinfo(1003): Matched zone prefix 1 and remainder 003
Feb 19 16:52:19: No tech prefix
Feb 19 16:52:19: Alias not found!— The gatekeeper finds a default technology prefix (of #1) since the 5350
!— TGWs register with this prefix as per the show gatekeeper gw-type-prefix command.Feb 19 16:52:19: Technology GW selected
Solution
When you specify wildcard digits within a zone prefix, avoid using dots where possible. Instead, use the less-specific asterisk wildcard. You can also avoid the problem when you observe these rules:
- If the dial-plan is consistent, you can use a configuration with only dots (or using only asterisks).
- If there is an overlap in the dial-plan, it is best to stick to using configurations with asterisks.
- If there is overlap in the dial-plan, and a configuration with only asterisks is not suitable, study the gatekeeper’s default behavior of prefix guessing (deduce and prepend the local area code) before you configure the gatekeeper.
gatekeeper zone local localzone1 dns.au 10.1.1.228 zone local localzone2 dns.au no zone subnet localzone1 default enable zone subnet localzone1 10.1.1.240/28 enable no zone subnet localzone2 default enable zone subnet localzone2 10.99.0.0/16 enable zone prefix localzone1 0* zone prefix localzone1 1* zone prefix localzone1 6* zone prefix localzone1 8* zone prefix localzone2 9999931.. Zone prefix localzone2 9999932.. Zone prefix localzone2 9999933.. Zone prefix localzone2 9999934.. Zone prefix localzone2 9999935.. Zone prefix localzone2 9999936.. Zone prefix localzone2 9999937.. Zone prefix localzone2 9999938.. Zone prefix localzone2 9999939.. Zone prefix localzone2 999994... zone prefix localzone2 999995... zone prefix localzone1 9* accounting vsa gw-type-prefix 1#* default-technology arq reject-unknown-prefix lrq reject-unknown-prefix no use-proxy localzone2 default inbound-to terminal no use-proxy localzone2 default outbound-from terminal no shutgatekeeper zone local localzone1 dns.au 10.1.1.228 zone local localzone2 dns.au no zone subnet localzone1 default enable zone subnet localzone1 10.1.1.240/28 enable no zone subnet localzone2 default enable zone subnet localzone2 10.99.0.0/16 enable zone prefix localzone1 0* zone prefix localzone1 1* zone prefix localzone1 6* zone prefix localzone1 8* zone prefix localzone2 9999931.. Zone prefix localzone2 9999932.. Zone prefix localzone2 9999933.. Zone prefix localzone2 9999934.. Zone prefix localzone2 9999935.. Zone prefix localzone2 9999936.. Zone prefix localzone2 9999937.. Zone prefix localzone2 9999938.. Zone prefix localzone2 9999939.. Zone prefix localzone2 999994... zone prefix localzone2 999995... zone prefix localzone1 9* accounting vsa gw-type-prefix 1#* default-technology arq reject-unknown-prefix lrq reject-unknown-prefix no use-proxy localzone2 default inbound-to terminal no use-proxy localzone2 default outbound-from terminal no shutdown endpoint ttl 60down endpoint ttl 60
