Project

General

Profile

Actions

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:

  1. 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
  2. wait for a Data; if no Data arrives, fail
  3. take note of version in the arriving Data Name
  4. send Interest(s) ndn:/prefix/version/segment to retrieve other segments
  5. repeat step 4 until all segments are retrieved
  6. sort segments in order, concatenate the Content of all segments to obtain the BLOB
  7. parse the BLOB into a series of TLV blocks each represents the status information of an entity

To publish a status dataset, the producer:

  1. listen on prefix ndn:/example/dataset
  2. 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
  3. generate a new version number
  4. collect status TLV blocks, concatenate into the BLOB, and segment it into Data packets
  5. 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 about 10 years ago · 2 revisions