![]() Ian Cahoon $Id: discovery.html,v 1.2 2000/05/22 09:06:45 icahoon Exp $ |
Discovery Request - GRQ |
||
|
|||
Discovery Policy Design |
Introduction The H.323 Gatekeeper (H323GK) portion of Vovida's SIP - H.323 Call Signalling Gateway will receive and process discovery requests (GRQ) from other addressable H.323 endpoints (clients). The H323GK will support both manual and automatic discovery. Administered data needed The H323GK will be administered with it's gatekeeper identifier. Which response to send For a manual GRQ, the H323GK will respond to the client by default with a gatekeeper confirm (GCF). If the gatekeeperIdentifier is specified and does not match the H323GK, it will send a GRJ. For multicast GRQs, the H323GK will respond to the client by default with a gatekeeper confirm (GCF). If the gatekeeperIdentifier is specified and does not match the H323GK, it will remain silent. GRQ details The following fields from the GRQ will be remembered and used: GatekeeperRequest { requestSeqNum := [used for the response, then forgotten] rasAddress := [response will be sent here, then forgotten] gatekeeperIdentifier := [will be verified] }GCF details If a GCF is sent the following will be sent: GatekeeperConfirm { requestSeqNum := [from GRQ] protocolIdentifier := [from openh323] gatekeeperIdentifier := [from administration] rasAddress := [local transport address for ras] }GRJ details If a GRJ is sent the following will be sent: GatekeeperReject { requestSeqNum := [from GRQ] protocolIdentifier := [from openh323] gatekeeperIdentifier := [from administration] rejectReason := [resourceUnavailable | undefindReason] } |
||
---|---|---|---|
Discovery description, from H.323 (2/98), Section 7.2.1 |
7.2.1 Gatekeeper discovery
Gatekeeper discovery is the process an endpoint uses to determine which Gatekeeper to register with. This may be done manually or automatically. Manual discovery relies on methods outside the scope of this Recommendation to determine which Gatekeeper an endpoint is associated with. The endpoint is configured with the Transport Address of the associated Gatekeeper. For example, it may be entered at endpoint configuration, or it may be entered into an initialization file. In this way, the endpoint knows a priori which Gatekeeper it is associated with. The endpoint can now register with that Gatekeeper. The Automatic method allows the endpoint-Gatekeeper association to change over time. The endpoint may not know who its Gatekeeper is, or may need to identify another Gatekeeper due to a failure. This may be done through auto discovery. Auto discovery allows for lower administrative overhead in configuring individual endpoints and additionally allows replacement of an existing Gatekeeper without manually reconfiguring all of the affected endpoints. The endpoint may multicast (or use other methods as described in Appendix IV/H.225.0) a Gatekeeper Request (GRQ) message, asking "Who is my Gatekeeper?". This is sent to the Gatekeeper's well-known Discovery Multicast Address. One or more Gatekeepers may respond with the Gatekeeper Confirmation (GCF) message indicating "I can be your Gatekeeper.", and returns the Transport Address of the Gatekeeper's RAS Channel. If a Gatekeeper does not want the endpoint to register to it, it shall return Gatekeeper Reject (GRJ). See Figure 7. If more than one Gatekeeper responds, the endpoint may choose the Gatekeeper it wants to use. At this point, the endpoint knows which Gatekeeper to register with. The endpoint can now register with that Gatekeeper. In the event that the endpoint knows the location of the Gatekeeper by some a priori means, the endpoint may still choose to unicast the GRQ to the Gatekeeper for the purpose of H.225.0 cryptological exchange. In order to provide redundancy in systems which use a Gatekeeper, the Gatekeeper may indicate alternate Gatekeepers that may be used in the event of a primary Gatekeeper failure. This list of alternate Gatekeepers is provided in the alternateGatekeeper field of the GCF and RCF messages. If no Gatekeeper responds within a timeout, the endpoint may retry the GRQ. An endpoint shall not send a GRQ within 5 s after sending a previous one. If no response is received, the endpoint may use the manual discovery method. If at any time an endpoint determines it has an invalid registration with its Gatekeeper, it must rediscover its Gatekeeper. The invalid registration may be detected by either receiving an RRJ message from a Gatekeeper in response to an RRQ from the endpoint, or not receiving any response to an RRQ from the endpoint within a timeout. The GRQ may be repeated periodically (i.e. at endpoint power-up), so the Gatekeeper shall be able to handle multiple requests from the same endpoint. |
||
Semantic description of GRQ, GCF and GRJ, from H.225.0 (2/98), Section 7.8 |
7.8 Terminal and Gateway Discovery messages
The GRQ message requests that any gatekeeper receiving it respond with a GCF granting it permission to register. The GRJ is a rejection of this request indicating that the requesting endpoint should seek another gatekeeper. 7.8.1 GatekeeperRequest (GRQ) Note that one GRQ is sent per logical endpoint; thus an MCU or a Gateway might send many. The GRQ message includes the following: requestSeqNum - This is a monotonically increasing number unique to the sender. It shall be returned by the receiver in any messages associated with this specific message. protocolIdentifier – Identifies the H.225.0 vintage of the sending endpoint. nonStandardData - Carries information not defined in this Recommendation (for example, proprietary data). rasAddress - This is the transport address that this endpoint uses for registration and status messages. endpointType - This specifies the type(s) of the endpoint that is registering (the MC bit shall not be set by itself). gatekeeperIdentifier - String to identify the gatekeeper from which the terminal would like to receive permission to register. A missing or null string gatekeeperIdentifier indicates that the terminal is interested in any available gatekeeper. callServices - Provides information on support of optional Q-series protocols to gatekeeper and called terminal. endpointAlias - A list of alias addresses, by which other terminals may identify this terminal. alternateEndpoints – A sequence of prioritized endpoint alternatives for rasAddress, endpointType, or endpointAlias. tokens - This is some data which may be required to allow the operation. The data shall be inserted into the message if available. cryptoTokens - Encrypted tokens. authenticationCapability - This indicates the authentication mechanisms supported by the endpoint. algorithmOIDs - integrity - Indicates to the recipient which integrity mechanism is to be applied on the RAS messages. integrityCheckValue - Provides improved message integrity/message authentication of the RAS messages. The cryptographically based integrity check value is computed by the sender applying a negotiated integrity algorithm and the secret key upon the entire message. Prior to integrityCheckValue computation, this field shall be ignored and shall be empty. After computation, the sender puts the computed integrity check value in the integrityCheckValue field and transmits the message. 7.8.2 GatekeeperConfirm (GCF) The GCF message includes the following: requestSeqNum - This shall be the same value that was passed in the GRQ. protocolIdentifier - Identifies the vintage of the accepting gatekeeper. nonStandardData - Carries information not defined in this Recommendation (for example, proprietary data). gatekeeperIdentifier - String to identify gatekeeper that is sending the GCF. rasAddress - This is the transport address that the gatekeeper uses for registration and status messages. alternateGatekeeper - Sequence of prioritized alternatives for gatekeeperIdentifier and rasAddress. The client should use these alternatives in the future, should a request to the gatekeeper not respond or return a reject without redirect. authenticationMode - This indicates the authentication mechanism to be used. The gatekeeper must choose authenticationMode from authenticationCapability provided by the endpoint in GRQ. tokens - This is some data which may be required to allow the operation. The data shall be inserted into the message if available. cryptoTokens - Encrypted tokens. algorithmOID - integrity - Indicates to the recipient which integrity mechanism is to be applied on the RAS messages. integrityCheckValue - Provides improved message integrity/message authentication of the RAS messages. The cryptographically based integrity check value is computed by the sender applying a negotiated integrity algorithm and the secret key upon the entire message. Prior to integrityCheckValue computation, this field shall be ignored and shall be empty. After computation, the sender puts the computed integrity check value in the integrityCheckValue field and transmits the message. 7.8.3 GatekeeperReject (GRJ) The GRJ message includes the following: requestSeqNum - This shall be the same value that was passed in the GRQ. protocolIdentifier - Identifies the vintage of the accepting gatekeeper. nonStandardData - Carries information not defined in this Recommendation (for example, proprietary data). gatekeeperIdentifier - String to identify gatekeeper that is sending the GCF. rasAddress - This is the transport address that the gatekeeper uses for registration and status messages. alternateGatekeeper - Sequence of prioritized alternatives for gatekeeperIdentifier and rasAddress. The client should use these alternatives in the future, should a request to the gatekeeper not respond or return a reject without redirect. authenticationMode - This indicates the authentication mechanism to be used. The gatekeeper must choose authenticationMode from authenticationCapability provided by the endpoint in GRQ. tokens - This is some data which may be required to allow the operation. The data shall be inserted into the message if available. cryptoTokens - Encrypted tokens. algorithmOID - integrity - Indicates to the recipient which integrity mechanism is to be applied on the RAS messages. integrityCheckValue - Provides improved message integrity/message authentication of the RAS messages. The cryptographically based integrity check value is computed by the sender applying a negotiated integrity algorithm and the secret key upon the entire message. Prior to integrityCheckValue computation, this field shall be ignored and shall be empty. After computation, the sender puts the computed integrity check value in the integrityCheckValue field and transmits the message. |
||
ASN.1 Definition of GRQ, GCF and GRJ, from H.225.0 (2/98), Annex H |
GatekeeperRequest ::= SEQUENCE --(GRQ) { requestSeqNum RequestSeqNum, protocolIdentifier ProtocolIdentifier, nonStandardData NonStandardParameter OPTIONAL, rasAddress TransportAddress, endpointType EndpointType, gatekeeperIdentifier GatekeeperIdentifier OPTIONAL, callServices QseriesOptions OPTIONAL, endpointAlias SEQUENCE OF AliasAddress OPTIONAL, ..., alternateEndpoints SEQUENCE OF Endpoint OPTIONAL, tokens SEQUENCE OF ClearToken OPTIONAL, cryptoTokens SEQUENCE OF CryptoH323Token OPTIONAL, authenticationCapability SEQUENCE OF AuthenticationMechanism OPTIONAL, algorithmOIDs SEQUENCE OF OBJECT IDENTIFIER OPTIONAL, integrity SEQUENCE OF IntegrityMechanism OPTIONAL, integrityCheckValue ICV OPTIONAL } GatekeeperConfirm ::= SEQUENCE --(GCF) { requestSeqNum RequestSeqNum, protocolIdentifier ProtocolIdentifier, nonStandardData NonStandardParameter OPTIONAL, gatekeeperIdentifier GatekeeperIdentifier OPTIONAL, rasAddress TransportAddress, ..., alternateGatekeeper SEQUENCE OF AlternateGK OPTIONAL, authenticationMode AuthenticationMechanism OPTIONAL, tokens SEQUENCE OF ClearToken OPTIONAL, cryptoTokens SEQUENCE OF CryptoH323Token OPTIONAL, algorithmOID OBJECT IDENTIFIER OPTIONAL, integrity SEQUENCE OF IntegrityMechanism OPTIONAL, integrityCheckValue ICV OPTIONAL } GatekeeperReject ::= SEQUENCE --(GRJ) { requestSeqNum RequestSeqNum, protocolIdentifier ProtocolIdentifier, nonStandardData NonStandardParameter OPTIONAL, gatekeeperIdentifier GatekeeperIdentifier OPTIONAL, rejectReason GatekeeperRejectReason, ..., altGKInfo AltGKInfo OPTIONAL, tokens SEQUENCE OF ClearToken OPTIONAL, cryptoTokens SEQUENCE OF CryptoH323Token OPTIONAL, integrityCheckValue ICV OPTIONAL } GatekeeperRejectReason ::= CHOICE { resourceUnavailable NULL, terminalExcluded NULL, -- permission failure, not a resource failure invalidRevision NULL, undefinedReason NULL, ..., securityDenial NULL } |
||
  |