命名数据网络 | 兴趣包(Interest Packet)

命名数据网络 | 兴趣包(Interest Packet)

参考文档:https://docs.named-data.net/NDN-packet-spec/current/interest.html

NDN 的 Interest 包是 TLV,定义如下:

Interest = INTEREST-TYPE TLV-LENGTH
             Name
             [CanBePrefix]
             [MustBeFresh]
             [ForwardingHint]
             [Nonce]
             [InterestLifetime]
             [HopLimit]
             [ApplicationParameters [InterestSignature]]

Name 是 Interest 包中唯一必需的元素。

当 Interest 包通过网络链接传输时,需要 Nonce,也就是说,如果缺少的话,兼容的转发器必须用 Nonce 元素来补充 Interest 包。

CanBePrefix、MustBeFresh、InterestLifetime 和 ForwardingHint 是可选元素,用于指导 Interest 包匹配或转发。

Interest 包还可以包含一个可选的 ApplicationParameters 元素。

如果一个 Interest 包含 InterestSignature,它被认为是一个已签名的 Interest 包。详情请参阅 Signed Interest section

根据 TLV 可演化性指南 的建议,未被识别的非关键 TLV 元素可能出现在 Interest 包中。但是,它们不能出现在 Name 元素之前。

Name

有关详细信息,请参见:Name

可以放在 Interest 包中的 Name 元素被进一步限制为至少有一个 Name 组件。

包含名称 TLV 但没有名称组件的 Interest 包必须被丢弃。

CanBePrefix

CanBePrefix = CAN-BE-PREFIX-TYPE
              TLV-LENGTH ; == 0

当 Interest 包中出现 CanBePrefix 元素时,Interest 包中的 Name 元素是所请求数据包的前缀、确切名称或全名。

当 CanBePrefix 元素不存在时,Name 元素是数据包的确切名称或全名:

  • 如果 Name 的最后一个组件的类型是 ImplicitSha256DigestComponent,那么Interest只能匹配到一个全名包含隐式摘要组件的数据包;

  • 如果最后一个组件有任何其他类型,如果 Interest 包的 Name 元素中的所有名称组件都等于 Data 的 Name 元素中的组件,则 Interest 包与 Data 包匹配,而不考虑隐式摘要组件。

MustBeFresh

MustBeFresh = MUST-BE-FRESH-TYPE
              TLV-LENGTH ; == 0

MustBeFresh 元素的存在与否表明内容存储是否可以用陈旧的数据满足 Interest 包。

有关更多信息,请参阅:FreshnessPeriod

ForwardingHint

ForwardingHint = FORWARDING-HINT-TYPE TLV-LENGTH 1*Name

ForwardingHint 元素包含一个名称列表(“委托”)。转发提示的存在意味着可以通过转发列出的名称所指向的路径上的 Interest 包来检索数据。

使用 ForwardingHint 的 Interest 包的转发逻辑的细节将在一个单独的文档中定义。

Nonce

Nonce = NONCE-TYPE
        TLV-LENGTH ; == 4
        4OCTET

Nonce 携带一个随机生成的 4 字节长的字节串。

Name 和 Nonce 的组合应该唯一地标识一个 Interest 包。

这用于检测循环 Interest 包。

InterestLifetime

InterestLifetime = INTEREST-LIFETIME-TYPE TLV-LENGTH NonNegativeInteger

InterestLifetime 表示 Interest 包超时前剩余的(近似)时间。该值为毫秒数。超时时间是相对于当前节点上 Interest 包的到达时间的。

转发 Interest 包的节点可能会减少生存期,以考虑转发前在节点上花费的时间,但不是必须这样做。建议仅针对相对较大的延迟(以秒为单位)进行这些调整。

是应用程序设置了 InterestLifetime 的值。如果省略了 InterestLifetime 元素,则使用默认值 4000(即 4 秒)。缺失的元素可以在转发之前添加。

HopLimit

HopLimit = HOP-LIMIT-TYPE
           TLV-LENGTH ; == 1
           OCTET

可选的 HopLimit 元素表示允许转发的跳数。该值被编码为 1 字节的无符号整数值,范围为 [0, 255]。

如果 HopLimit 元素存在:

  • 如果 HopLimit 值大于等于 1,则接收报文,并将编码值减 1。
  • 如果 HopLimit 值变为 0,则节点可以在本地满足此 Interest 包(缓存或绑定到本地面的应用程序),但不能将兴趣转发到任何非本地节点。
  • 如果 HopLimit 为 0,则节点必须丢弃该报文。

如果当前 Interest 包没有 HopLimit 元素:

  • 节点应该接受数据包;
  • 如果需要,节点可以向 Interest 包增加 HopLimit 元素。

ApplicationParameters

ApplicationParameters = APPLICATION-PARAMETERS-TYPE TLV-LENGTH *OCTET

ApplicationParameters 元素可以携带任何参数化 data 请求的任意数据。

Interest 包的名称必须包含一个兴趣参数摘要组件,以确保参数化的 Interest 包的唯一性和完整性。

参见 参数摘要组件 了解更多细节。

InterestSignature

参见 Interest Signature.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UestcXiye

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值