StatusDataset » History » Revision 2
« Previous |
Revision 2/8
(diff)
| Next »
Alex Afanasyev, 03/22/2014 09:54 PM
Status Dataset¶
Status Dataset is a mechanism of NFD Management protocol.
This document defines how status information about a collection of entities is encoded, segmented, and published as Data packets.
Status Dataset is used by:
- FaceManager: to publish the description of all active faces and their counters
- FibManager: to publish FIB entries and nexthop records
Specification¶
Encoding
Status information of each entity is represented by a TLV block.
Those TLV blocks are concatenated into a BLOB.
Segmentation
The BLOB is segmented into one or more Data packets, such that each Data packet does not exceed the size limit.
Segmentation does not consider the boundary between TLV blocks.
Data Naming
A status dataset is publish under a certain Name prefix.
Every Data packet has Name ndn:/prefix/version/segment
The version component is a NameComponent containing a nonNegativeInteger.
The version number is monotonic increasing during the lifetime of the producer;
it could be but is not necessarily a timestamp.
The segment component is a NameComponent containing a nonNegativeInteger.
The first segment has segment number zero.
FinalBlockId field contains the segment component of the last segment.
This field MUST appear in the last segment, and MAY appear in other segments.
Operations¶
To request a status dataset, the consumer:
- send an Interest
ndn:/prefix
, ChildSelector=rightmost, MustBeFresh=yes
- if the consumer has a previous version of this dataset and wish to request a new version, set Exclude=Any..last-known-version
- wait for a Data; if no Data arrives, fail
- take note of version in the arriving Data Name
- send Interest(s) ndn:/prefix/version/segment to retrieve other segments
- repeat step 4 until all segments are retrieved
- sort segments in order, concatenate the Content of all segments to obtain the BLOB
- parse the BLOB into a series of TLV blocks each represents the status information of an entity
To publish a status dataset, the producer:
- listen on prefix
ndn:/example/dataset
- upon receiving an Interest, if the Interest Name is longer than
ndn:/example/dataset
(it contains version and/or segment), don't respond and abort these steps- these Interests should be satisfied by the ContentStore
- generate a new version number
- collect status TLV blocks, concatenate into the BLOB, and segment it into Data packets
- put all Data packets
- the first Data packet (preferably the first segment) satisfies the Interest
- other Data packets are admitted to the ContentStore as unsolicited Data
Updated by Alex Afanasyev almost 11 years ago · 8 revisions