The syntax of the MA-Hello message is extended as follows (5.1):
MA-Hello: This message MUST be sent only in C-mode to indicate that a
node wishes to keep a messaging association open. It contains the
common header, with a NSLPID of zero, and a message identifier, the
Hello-ID. The R flag MAY be set (R=1); if so, the peer MUST send
another MA-Hello back along the messaging association echoing the
same Hello-ID and with R=0. This allows a node to test the liveness
of the peer.
MA-Hello = Common-Header
Hello-ID
The Hello-ID itself is described in section 5.2.2:
Hello-ID: The Hello-ID is a 32-bit quantity that is used to
correlate messages in an MA-Hello request/response exchange. A
non-zero value MUST be used in a request (messages sent with R=1)
and the same value must be returned in the response (which has
R=0). The value zero MUST be used for all other messages. Nodes
MAY use any algorithm to generate the Hello-ID; a suitable
approach is a local sequence number with a random starting point.
The request/response exchange is essentially a diagnostic, which a node may
invoke whenever it wants (including never). It is up to the node to decide when
to invoke it and how, and what to do with the result. This is indicated in the
text of section 6.4:
At any time in the Connected or Idle states, a node MAY test the
connectivity to its peer and the liveness of the GIST instance at
that peer by sending a MA-Hello request (with R=1). Failure to
receive a response (detected by matching the Hello-ID in the message)
MAY be taken as a reason to trigger er_MAFailure. Note that
er_MAFailure may also be signalled by indications from the underlying
messaging association protocols. |