Project

General

Profile

Packet03Transition » History » Version 5

Junxiao Shi, 04/03/2018 06:44 PM

1 2 Junxiao Shi
2 1 Junxiao Shi
# NDN Packet Format v0.3 Transition Plan
3
4
This page documents how to adopt NDN Packet Format v0.3 in the implementation. This page shall be updated to indicate implementation progress.
5
6 2 Junxiao Shi
## 3-to-2 Interpretation
7 1 Junxiao Shi
8 2 Junxiao Shi
In this step, NDN entities (forwarders and libraries) shall be able to receive v0.3 packets. A received v0.3 packet is interpreted as the closest v0.2 packet. Specifically:
9 1 Junxiao Shi
10
* Typed name components are inserted into v0.2 Name or FinalBlockId element. This could cause packet drops in v0.2-only node, but since they are not exposed to applications, there won't be many such packets.
11
* Interest sub-elements are rearranged into v0.2 order.
12
* CanBePrefix=0 is converted to MaxSuffixComponents=1; this is set only if the decoder can conclusively identify the Interest packet as v0.3
13
* If Nonce is omitted, a random nonce is added automatically.
14
* HopLimit and Parameters are ignored.
15
* If MetaInfo or Content is omitted, an empty element is added automatically. This breaks signature but permits transport.
16
17 2 Junxiao Shi
Packets shall be encoded as v0.2 format and processed with v0.2 semantics.
18
Received v0.3 packets may be forwarded as-is and re-encoding is not required (but permitted).
19 1 Junxiao Shi
20 2 Junxiao Shi
Library APIs shall allow applications to access CanBePrefix and MustBeFresh elements, which will be mapped into their v0.2 counterparts. Functions that depend on v0.2-only elements are deprecated. Typed name components, HopLimit, and Parameters are not yet exposed to applications (they may appear in the library but are not recommended for application use).
21 1 Junxiao Shi
22 2 Junxiao Shi
This step prepares NDN entities so that they can receive v0.3 packets. It is backwards compatible from application point of view, but requires backbone network deployment before any application can enter the next step. It does not give applications new functions.
23 1 Junxiao Shi
24 5 Junxiao Shi
Major issues: #4526 #4527 #4568 #4517 #4518
25 1 Junxiao Shi
26
## Application Adoption
27
28
In this step, all application must stop using deprecated library APIs. Specifically, they cannot use:
29
30
* MinSuffixComponents
31
* MaxSuffixComponents, except via CanBePrefix functions
32
* PublisherPublicKeyLocator
33
* Exclude
34
* ChildSelector
35
36
Library API shall provide a per-application setting to set the initial value of CanBePrefix. The default setting is CanBePrefix=1. The application must explicitly declare whether they want CanBePrefix to be initialized to 0 or 1. If an application did not invoke this function, the Interest class constructor shall log a warning message indicating that the default will change in the future.
37
38
This step prepares NDN applications so that they do not rely on v0.2-only features, which will disappear in the next step.
39
40 5 Junxiao Shi
Major issues: #4555 #4556 #4571
41 1 Junxiao Shi
42 2 Junxiao Shi
## 2-to-3 Interpretation
43 1 Junxiao Shi
44 2 Junxiao Shi
In this step, NDN entities shall transmit v0.3 packets, and process all packets with v0.3 semantics. A received v0.2 packet is interpreted as the closest v0.3 packet. Specifically:
45 1 Junxiao Shi
46
* MinSuffixComponents, PublisherPublicKeyLocator, Exclude, and ChildSelector are ignored.
47
* MaxSuffixComponents>0 becomes CanBePrefix=0. Otherwise, CanBePrefix=1.
48
* HopLimit and Parameters are accepted and processed.
49
50 2 Junxiao Shi
Packets shall be encoded as v0.3 format and processed with v0.3 semantics.
51
Received v0.2 packets may be forwarded as-is and re-encoding is not required (but permitted).
52
53 1 Junxiao Shi
Library API shall enable access to typed name components, HopLimit, and Parameters.
54
55
This step transforms the network to use v0.3 format and semantics. It will break applications that have not completed the "application adoption" step.
56
57 4 Junxiao Shi
Major issues: #4567
58 1 Junxiao Shi
59
## CanBePrefix Switchover
60
61
Library's default setting for the initial value of CanBePrefix becomes CanBePrefix=0. This change does not affect applications that have explicitly declared their preference in "application adoption" step. This setting is expected to remain in the library for long term.
62
63 2 Junxiao Shi
This step discourages the use of CanBePrefix=1 to improve network performance. It will potentially break applications that did not explicitly declare their preference.
64 1 Junxiao Shi
65
Major issues:
66
67
## Pure v0.3
68
69 2 Junxiao Shi
In this step, NDN entities stop accepting v0.2 packets. It will break entities that have not completed the "2-to-3 interpretation" step.
70 1 Junxiao Shi
71
Major issues: