3.1.1 Abstract Data Model
This section specifies a conceptual model of a possible data organization that an implementation maintains to participate in this protocol. The described organization is provided to facilitate the explanation of how the protocol behaves. This document does not mandate that implementations adhere to this model as long as their external behavior is consistent with that described in this document.
Conversation Table: A table of state for synchronization conversations in progress, if any. Each entry has the following state:
Local Endpoint List: The list of network endpoints on which this DRT node is listening for messages for the cloud.
Outstanding Resolves Table: A table of state for resolutions in progress. Each entry has the following state:
Target Key: The key being resolved.
ResolveReasonCode: The resolve reason code (section 188.8.131.52) for this resolve.
ResolvePath: A list of network endpoints of DRT nodes that have already been asked about this request.
NextHopStack: A last-in-first-out stack of entries for nodes that can be consulted to find nearer matches. Each entry contains the following:
RouteEntry: Route entry for the DRT node.
UseCount: A count of the number of times a LOOKUP message has been sent to this node.
BestMatchStack: A last-in-first-out stack of the route entries closest to the target. This maintains a history of route entries stored at CurrentBestMatch.
CurrentBestMatch: The route entry that is the "Best Match" so far.
CurrentNextHop: The entry of the same type as used in the NextHopStack that contains the route entry for the node to which the current LOOKUP message has been sent.
NewNextHop: Temporary storage for a route entry received during AUTHORITY message processing.
SuspiciousCount: A count of hops that returned an AUTHORITY_BUFFER message with the L flag set.
TotalUsefulHops: Total number of nodes that LOOKUP messages are sent to and from that, an AUTHORITY_BUFFER message is received in reply.
LastSentMessageId: The MessageID of the last sent LOOKUP or INQUIRE message sent. Used to match up received AUTHORITY messages.
SecurityModule: A mechanism by which the DRT Protocol can call upon the upper-layer application for activities defined as part of the security profile.
BootstrapModule: A mechanism by which the DRT Protocol can call upon the upper-layer application for activities defined as part of the bootstrap profile.
SecurityMode: The security mode used by nodes participating in this cloud.
VersionMajor: The major version of the DRT Protocol, which is defined by the higher-layer application.
VersionMinor: The minor version of the DRT protocol, which is defined by the higher-layer application.
Pending List: A set of messages that have been sent and are awaiting acknowledgment or retransmission. Each entry in the queue has the following state:
Message: The message buffer.
Retry Count: The number of send attempts remaining for this message before failure is declared.
Message Retransmission Timer: A timer that handles the retransmission of a packet if an acknowledgment is not received within the expiration time. See section 3.1.2.
Pending Route Entry Add List: A list of route entries in the process of being added to the Route Entry Cache. Each entry has the following state:
RouteEntry: The route entry being pended.
NeedCpa: Flag indicating if a CPA is requested.
InquireMessageId:MessageID of the INQUIRE message sent to validate this route entry.
Reassembly List: A list of AUTHORITY_BUFFER messages currently in the process of being reassembled. Each entry has the following state:
Message ID: The MessageID value in the DRT Header for the AUTHORITY messages being reassembled.
Source IP address and port: The IP address and port of the peer from which AUTHORITY_BUFFER message fragments are received.
Size: Expected size of the final buffer.
Buffer: A buffer into which fragments are placed.
Route Entry Cache: A cache of route entries. Each route entry in the cache contains a key and a list of network endpoints.
Note The preceding conceptual data can be implemented by using a variety of techniques. An implementer is at liberty to implement such data in any way.