Project

General

Profile

StatusDataset » History » Version 1

Junxiao Shi, 03/17/2014 11:59 PM

1 1 Junxiao Shi
# Status Dataset
2
3
4
**Status Dataset** is a mechanism of [[Management|NFD Management protocol]].
5
This document defines how status information about a collection of entities is encoded, segmented, and published as Data packets.
6
7
**Status Dataset** is used by:
8
9
* [[FaceMgmt|FaceManager]]: to publish the description of all active faces and their counters
10
* [[FibMgmt|FibManager]]: to publish FIB entries and nexthop records
11
12
## Specification
13
14
**Encoding**
15
16
Status information of each entity is represented by a TLV block.
17
Those TLV blocks are concatenated into a BLOB.
18
19
**Segmentation**
20
21
The BLOB is segmented into one or more Data packets, such that each Data packet does not exceed the size limit.
22
Segmentation does not consider the boundary between TLV blocks.
23
24
**Data Naming**
25
26
A status dataset is publish under a certain Name prefix.
27
Every Data packet has Name ndn:/*prefix*/*version*/*segment*
28
29
The *version* component is a NameComponent containing a nonNegativeInteger.
30
The version number is monotonic increasing during the lifetime of the producer;
31
it could be but is not necessarily a timestamp.
32
33
The *segment* component is a NameComponent containing a nonNegativeInteger.
34
The first segment has segment number zero.
35
36
*FinalBlockId* field contains the *segment* component of the last segment.
37
This field MUST appear in the last segment, and MAY appear in other segments.
38
39
## Operations
40
41
To request a status dataset, the consumer:
42
43
1. send an Interest ndn:/*prefix*, ChildSelector=rightmost, MustBeFresh=yes  
44
    * if the consumer has a previous version of this dataset and wish to request a new version,
45
      set Exclude=Any..*last-known-version*
46
2. wait for a Data; if no Data arrives, fail
47
3. take note of *version* in the arriving Data Name
48
4. send Interest(s) ndn:/*prefix*/*version*/*segment* to retrieve other segments
49
5. repeat step 4 until all segments are retrieved
50
6. sort segments in order, concatenate the Content of all segments to obtain the BLOB
51
7. parse the BLOB into a series of TLV blocks each represents the status information of an entity
52
53
To publish a status dataset, the producer:
54
55
1. listen on prefix `ndn:/example/dataset`
56
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
57
    * these Interests should be satisfied by the ContentStore
58
3. generate a new version number
59
4. collect status TLV blocks, concatenate into the BLOB, and segment it into Data packets
60
5. put all Data packets
61
    * the first Data packet (preferably the first segment) satisfies the Interest
62
    * other Data packets are admitted to the ContentStore as unsolicited Data