3.1.1 Abstract Data Model

This section describes 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.

  • Cloud Table: A set of state for each cloud in which the node can perform resolutions. Each entry in the cloud table has the following state:

    • Open Count: The number of times an application or higher-layer protocol has opened this cloud.

    • Conversation Table: A table of state for synchronization conversations in progress, if any. Each entry has the following state:

      • Nonce: The nonce being used in the current synchronization conversation in progress, if any.

      • SolicitMessageId: Message ID of the SOLICIT message sent.

    • Local Endpoint List: The list of network endpoints on which this PNRP node is listening for messages for this cloud.

    • Outstanding Resolves Table: A table of state for resolutions in progress. Each entry has the following state:

      • Target PNRP ID: The PNRP ID being resolved.

      • ResolveReasonCode: The resolve reason code (as specified in section for this resolve.

      • ResolvePath: A list of network endpoints of PNRP 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 closer matches. Each entry contains the following:

        • RouteEntry: Route entry for the PNRP 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 that were previously stored at CurrentBestMatch.

      • CurrentBestMatch: The route entry that is the Best Match so far.

      • CurrentNextHop: The entry of the same type as used in 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 were sent LOOKUP messages (both to and from) and from which an AUTHORITY_BUFFER message was received in reply.

      • LastSentMessageId: The Message ID of the last sent LOOKUP or INQUIRE message sent. Used to match up received AUTHORITY messages.

    • Pending List: A set of messages that have been sent and are awaiting acknowledgment or retransmission. Each entry in the queue has the message, a Retry Count, and a Message Retransmission Timer, as specified in 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 whether a CPA was requested.

      • InquireMessageId: Message ID of the INQUIRE message sent to validate this route entry.

      • AlreadyFloodedAddressList: If the route entry is being added because it was received via a FLOOD (section message, then this list is a copy of the AlreadyFloodedList contained in the message.

    • Reassembly List: A list of AUTHORITY_BUFFER messages currently in the process of being reassembled. Each entry has the following state:

      • Message ID: The Message ID value in the PNRP 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 were 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 PNRP ID and a list of network endpoints.

    • CurrentSeedServerAddressIndex: Index into a list of addresses for seed server nodes.

    • CloudDiscoveryMode: Current discovery method being used. The modes are defined as SeedServer, Simple Service Discovery Protocol (as specified in [UPNPARCH1], section 1), and LocalOOB.

    • CloudDiscoverySSDPTargetCount: The number of SSDP nodes to which the node has sent a SOLICIT message. SSDP is specified in [UPNPARCH1], section 1.

    • SSDPResponseRequestIdentifier: A unique URI used to match SSDP responses to requests. SSDP is specified in [UPNPARCH1], section 1.

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 manner as required.