Project

General

Profile

Packet03Transition » History » Version 16

Junxiao Shi, 03/08/2019 04:57 PM

1 1 Junxiao Shi
# NDN Packet Format v0.3 Transition Plan
2
3
This page documents how to adopt NDN Packet Format v0.3 in the implementation. This page shall be updated to indicate implementation progress.
4
5 2 Junxiao Shi
## 3-to-2 Interpretation
6 1 Junxiao Shi
7 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:
8 1 Junxiao Shi
9
* 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.
10
* Interest sub-elements are rearranged into v0.2 order.
11
* CanBePrefix=0 is converted to MaxSuffixComponents=1; this is set only if the decoder can conclusively identify the Interest packet as v0.3
12
* If Nonce is omitted, a random nonce is added automatically.
13
* HopLimit and Parameters are ignored.
14
* If MetaInfo or Content is omitted, an empty element is added automatically. This breaks signature but permits transport.
15
16 2 Junxiao Shi
Packets shall be encoded as v0.2 format and processed with v0.2 semantics.
17
Received v0.3 packets may be forwarded as-is and re-encoding is not required (but permitted).
18 1 Junxiao Shi
19 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).
20 1 Junxiao Shi
21 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.
22 1 Junxiao Shi
23 5 Junxiao Shi
Major issues: #4526 #4527 #4568 #4517 #4518
24 1 Junxiao Shi
25
## Application Adoption
26
27
In this step, all application must stop using deprecated library APIs. Specifically, they cannot use:
28
29
* MinSuffixComponents
30
* MaxSuffixComponents, except via CanBePrefix functions
31
* PublisherPublicKeyLocator
32
* Exclude
33
* ChildSelector
34
35
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.
36
37
This step prepares NDN applications so that they do not rely on v0.2-only features, which will disappear in the next step.
38
39 16 Junxiao Shi
Major issues: #4522 #4555 #4556 #4571 #4581 #4589 #4660 #4664 #4665 #4684 #4807 [~~ndn-traffic-generator#9~~](https://github.com/named-data/ndn-traffic-generator/issues/9) [~~ndnfs-port#10~~](https://github.com/remap/ndnfs-port/issues/10)
40 1 Junxiao Shi
41 2 Junxiao Shi
## 2-to-3 Interpretation
42 1 Junxiao Shi
43 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:
44 1 Junxiao Shi
45
* MinSuffixComponents, PublisherPublicKeyLocator, Exclude, and ChildSelector are ignored.
46
* MaxSuffixComponents>0 becomes CanBePrefix=0. Otherwise, CanBePrefix=1.
47
* HopLimit and Parameters are accepted and processed.
48
49 2 Junxiao Shi
Packets shall be encoded as v0.3 format and processed with v0.3 semantics.
50
Received v0.2 packets may be forwarded as-is and re-encoding is not required (but permitted).
51
52 1 Junxiao Shi
Library API shall enable access to typed name components, HopLimit, and Parameters.
53
54
This step transforms the network to use v0.3 format and semantics. It will break applications that have not completed the "application adoption" step.
55
56 13 Junxiao Shi
Major issues: #4567 #4658 #4805 #4806
57 1 Junxiao Shi
58
## CanBePrefix Switchover
59
60
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.
61
62 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.
63 1 Junxiao Shi
64 6 Junxiao Shi
Major issues: #4582
65 1 Junxiao Shi
66
## Pure v0.3
67
68 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.
69 1 Junxiao Shi
70
Major issues: