命名数据网络 | NDN 包格式规范版本变更一览
命名数据网络 | NDN 包格式规范版本变更一览
参考文档:https://docs.named-data.net/NDN-packet-spec/current/changelog.html#
Version 0.3
- 使用 IETF 增强的BNF重写 TLV 语法规范(RFC 5234)
- TLV-TYPE 和 TLV-LENGTH 要求最短编码
- 添加 Certificate 规范
Name
-
解除对名称组件类型的限制,允许类型在 [1, 65535] 范围内
-
正确定义名称 URI 编码:禁止PLUS(+)的未转义编码,允许TILDE (~)
-
添加知名的特殊用途组件类型:
- ParametersSha256DigestComponent(类型 2)
- KeywordNameComponent(类型 32)
- SegmentNameComponent(类型 50)
- ByteOffsetNameComponent类型 52)
- VersionNameComponent(类型 54)
- TimestampNameComponent(类型 56)
- SequenceNumNameComponent(类型 58)
Interest
- 移除 Selectors 元素
- 在 Name 之后添加可选的 CanBePrefix 元素
- 将可选的 MustBeFresh 元素移动到 CanBePrefix 之后
- 将可选的 ForwardingHint 元素移动到 MustBeFresh 之后(Nonce 之前)
- 重新定义 ForwardingHint 的内容(删除 Delegation TLV 中的数字优先级和嵌套)
- 添加可选的 HopLimit 元素
- 添加可选的 ApplicationParameters 元素
- 使用 InterestSignatureInfo 和 InterestSignatureValue 两个新元素,为已签名的 Interest 包定义一个新规范
Data
- 使 MetaInfo 和 Content 元素变为可选的
- 更改省略(或设置为零)的 FreshnessPeriod 元素的语义:在内容存储查找期间,它不能用于满足具有 MustBeFresh 的 Interest 包
Signature
- 要求所有兼容的实现支持 SignatureSha256WithEcdsa 签名类型,使用 NIST 曲线 P-256
- 重新定义数据包的签名部分,使其更具前瞻性
- 增加签名类型 SignatureEd25519
LinkObject
- 其内容现在只是一个名称列表(删除数字首选项)
Version 0.2.1
- 添加链接对象(Link Object)的定义
Interest
- 如果 ChildSelector 元素不存在,则添加最左边子元素的默认值
- 添加 ForwardingHint 元素的规范
Data
- 更新了不带 FreshnessPeriod 的数据包的 Content Store 语义。
Version 0.2
Name
- 允许零长度的名称组件
- 要求使用 ImplicitSha256Digest 名称组件指定隐式摘要
Interest
- 删除已弃用的作用域指南
- 将 Interest 包限制为其中具有至少一个名称组件的 Name 元素
Data
- 重定向内容类型编号分配到 wiki/ContentType
Signature
- 增加 SignatureHmacWithSha256 规格
TLV-TYPE
- 链路协议保留范围 [800, 1000]
Version 0.1.1
Signature
- 增加了椭圆曲线数字签名算法(ECDSA)的签名类型 SignatureSha256WithEcdsa。
- KeyLocatorDigest 重命名为 KeyDigest。该规范现在明确地允许 KeyDigest 是任何类型密钥的 SHA256。
- KeyLocator 元素现在被定义为可选地出现在通用的 SignatureInfo 元素中。SignatureSha256WithRsa 和 SignatureSha256WithEcdsa 仍然需要 KeyLocator 始终存在。
Version 0.1
- 基于 XML 的 ccnb 包编码被 TLV 编码取代
Name
- 名称编码从二进制 XML 更改为 TLV 格式
- 关于命名约定和在 NameComponents 中使用特殊标记的讨论已从包规范中删除,并将在单独的技术文档中进行介绍
- 已弃用零长度名称组件
Interest Packet
- Nonce 从可选更改为必需
- PublisherPublicKeyDigest 被 PublisherPublicKeyLocator 取代
- AnswerOriginKind 由 4 位简化为 1 位的 MustBeFresh
- FaceID 已被删除
- InterestLifetime 将单位改为毫秒数
- 从排除中删除了布隆过滤器
- 更改了默认的过时语义
具体来说,没有任何选择器的 NDN-TLV Interest 包将带来任何与名称匹配的数据,并且只有当 MustBeFresh 选择器启用时,它才会尝试尊重数据包中指定的新鲜度。对于二进制 XML 编码的 Interest 包,默认行为是只有当 AnswerOriginKind 设置为 3 时才带来“新鲜”数据并返回“陈旧”数据。
应用程序开发人员必须意识到这种变化,重新检查 Interest 包的表达式代码,并在必要时启用 MustBeFresh 选择器。
Data Packet
- 数据包结构改变:Name、MetaInfo、Content、Signature{SignatureInfo、SignatureValue}
- SignedInfo 重命名为 MetaInfo,并更改其内容
- 删除 PublisherPublicKeyDigest 和 ExtOpt
- 删除 Timestamp
- KeyLocator 被移动到 Signature(SignatureInfo)元素中
- 删除了三种内容类型:ENCR、GONE 和 NACK
- FreshnessSeconds 重命名为 FreshnessPeriod,单位为毫秒
Signature
- Signature 移动到“数据包”的末尾。
- 如果 KeyLocator 适用于特定的签名类型,则将其移动到 SignatureInfo 元素的一部分。
这样做的基本原理是使 Signature(SignatureInfo 和 SignatureValue TLV 的序列)自包含和自给自足。 - 签名类型(或签名方法信息)表示为分配的整数值(没有默认值),而不是 OID。
- 增加了对仅哈希“签名”的支持
- 当前的规范没有定义 Merkle 哈希树聚合签名,但是期望在该规范的未来版本中定义这样的(或类似的)签名