- Rewrite TLV syntax specifications using IETF Augmented BNF (RFC 5234)
- Require shortest encoding for TLV-TYPE and TLV-LENGTH numbers
- Add
Certificate
specification - Name
- Lift restriction on name component types, allowing types in the range [1, 65535]
- Correct definition of name URI encoding: disallow unescaped encoding of PLUS (
+
) and allow TILDE (~
) - Add well-known special-use component types:
ParametersSha256DigestComponent
(type 2)KeywordNameComponent
(type 32)SegmentNameComponent
(type 50)ByteOffsetNameComponent
(type 52)VersionNameComponent
(type 54)TimestampNameComponent
(type 56)SequenceNumNameComponent
(type 58)
- Interest
- Remove
Selectors
element - Add optional
CanBePrefix
element after Name - Move optional
MustBeFresh
element afterCanBePrefix
- Move optional
ForwardingHint
element afterMustBeFresh
(beforeNonce
) - Redefine the contents of the
ForwardingHint
(remove numerical preference and nesting inside theDelegation
TLV) - Add optional
HopLimit
element - Add optional
ApplicationParameters
element - Define a new specification for Signed Interest using two new elements:
InterestSignatureInfo
andInterestSignatureValue
- Remove
- Data
- Make
MetaInfo
andContent
elements optional - Change semantics of omitted (or set to zero)
FreshnessPeriod
element: it cannot be used to satisfy Interests withMustBeFresh
during content store lookup
- Make
- Signature
- Require all compliant implementations to support the
SignatureSha256WithEcdsa
signature type using NIST curve P-256 - Redefine the signed portion of Data packets to be more future-proof
- Add
SignatureEd25519
signature type
- Require all compliant implementations to support the
- LinkObject
- The content is now just a list of names (remove numerical preference)
- Add definition of Link Object
- Interest
- Add default of leftmost child if
ChildSelector
element not present - Add specification of
ForwardingHint
element
- Add default of leftmost child if
- Data
- Updated Content Store semantics for Data packets that do not carry
FreshnessPeriod
.
- Updated Content Store semantics for Data packets that do not carry
- Name
- Allow zero-length name component
- Require implicit digest to be specified using
ImplicitSha256Digest
name component
- Interest
- Delete deprecated
Scope
guider - Restrict Interest to have name with at least one name component
- Delete deprecated
- Data
- Redirect
ContentType
number assignments to the wiki page
- Redirect
- Signature
- Add spec for
SignatureHmacWithSha256
- Add spec for
- TLV-TYPE
- Reserve range [800, 1000] for link protocol
- Signature
- New
SignatureSha256WithEcdsa
signature type for Elliptic Curve Digital Signature Algorithm (ECDSA). KeyLocatorDigest
renamed toKeyDigest
. The specification now explicitly allows KeyDigest to be a SHA256 of any type of the key.KeyLocator
element is now defined to be optionally present in genericSignatureInfo
element.SignatureSha256WithRsa
andSignatureSha256WithEcdsa
still requireKeyLocator
to be always present.
- New
General
- XML-based ccnb packet encoding is replaced by TLV encoding
Name
- The name encoding is changed from binary XML to TLV format
- The discussions on naming conventions and the use of special markers inside NameComponents are removed from packet specification, and will be covered by a separate technical document
- Deprecated zero-length name component
Interest Packet
Nonce
is changed from optional to requiredPublisherPublicKeyDigest
is replaced byPublisherPublicKeyLocator
AnswerOriginKind
is simplified from 4bits to a 1-bitMustBeFresh
FaceID
has been removedInterestLifetime
changes the unit to the number of millisecondsRemoved Bloom Filter from Exclude
Changed default semantics of staleness
Specifically, NDN-TLV Interest without any selectors will bring any data that matches the name, and only when
MustBeFresh
selector is enabled it will try to honor freshness, specified in Data packets. With Binary XML encoded Interests, the default behavior was to bring "fresh" data and return "stale" data only whenAnswerOriginKind
was set to 3.Application developers must be aware of this change, reexamine the Interest expression code, and enable
MustBeFresh
selector when necessary.
Data Packet
- The structure of Data packet is changed:
Name
,MetaInfo
,Content
,Signature{SignatureInfo, SignatureValue}
SignedInfo
is renamed toMetaInfo
and its content is changedPublisherPublicKeyDigest
andExtOpt
are removed.Timestamp
is removedKeyLocator
is moved to be inside theSignature
(SignatureInfo
) element- Three content types, ENCR, GONE, and NACK are removed
FreshnessSeconds
is renamed toFreshnessPeriod
and is expressed in units of milliseconds
- The structure of Data packet is changed:
Signature
Signature
is moved to the end of Data packet.KeyLocator
is moved to be a part of theSignatureInfo
element, if it is applicable for the specific signature type.The rationale for the move is to make Signature (sequence of
SignatureInfo
andSignatureValue
TLVs) self-contained and self-sufficient.Signature type (or signing method information) is expressed as an assigned integer value (with no assumed default), rather than OID.
Added support for hash-only "signature"
The current specification does not define Merkle Hash Tree Aggregated Signatures, but it is expected that such (or similar) signatures will be defined in future version of this specification