摘要

  • IS-IS TLV 的 Length 字段只有一个八位字节,因此单个 TLV 的值最多为 255 个八位字节;较大的编码信息必须出现在多个 TLV 中。
  • RFC 9885 将同一 IIH 或同一层级 LSP 集合中、类型相同且在适用时键相同的 TLV 归为一个 Multi-Part TLV。支持方处理全部出现;不支持方选择一个出现并忽略其余出现。
  • 这项机制不改变 TLV 编码,也不重新定义 TLV 自身规范提供的键。它还规定了接收流程、适用性声明、能力通告、生成限制、部署控制和告警。

机制边界

“同类型”不是充分条件:当该 TLV 定义了键时,接收方必须按同一类型、同一键来识别属于同一对象的部分。不能把不同键的对象拼成一个对象,也不能由 RFC 9885 推导出新的键语义。对于没有适用键的 TLV,仍应依据该 TLV 自身规范以及 RFC 9885 的分组规则处理。编码格式保持不变;变化在于接收方如何把多个出现视为一个完整对象。

不支持 MP-TLV 的接收方并非一定拒绝 LSP。它会选取一个出现来处理并忽略其他出现。因此,一个在语法上有效的 LSP 可以传播,而本地对象只含部分信息。支持 MP-TLV 的接收方则处理全部相关出现。RFC 9885 的事实包不提供厂商实现覆盖率、部署普及度、生产故障率,亦不提供任何特定网络的性能或收敛影响;这些边界不能被协议文字扩大解释。

适用性与能力

部署者需要先确认某一 TLV 是否声明适用 Multi-Part 处理,再检查接收端是否按 RFC 9885 的规则工作。适用性声明让实现知道哪些 TLV 可以采用该处理;能力通告则让邻居知道接收端是否支持。两者不能互相替代:声明某 TLV 可分段,不等于每个邻居都支持重组;通告能力,也不等于任意 TLV 都自动获得新的分组语义。

RFC 9885 还包含生成方面的限制和部署控制。生成超过单个 TLV 上限的信息前,应确认相关接收方具备所需能力;不能把新分段信息无条件发送给未知或不支持的接收方。控制面应能限制生成行为,并在能力不匹配、对象不完整或相关接收处理异常时触发告警。告警是运维可见性的一部分,不是对未知生产事故数量的证明。

精确测试夹具

建立一个只含一个目标对象的 LSP 夹具:把该对象编码为两个同类型、同键的 TLV 出现,第一部分的值长度为 255 个八位字节,第二部分保留剩余值;同时建立一个相同类型但不同键的第二对象。用四个接收配置测试:支持 MP-TLV;不支持 MP-TLV;支持但错误地只按类型合并;支持并按类型及键合并。检查完整对象、被忽略的出现、不同键是否被错误拼接,以及能力通告和告警。再用 IIH 和不同层级的 LSP 集合重复测试,确认分组边界没有跨对象或跨层级扩散。该夹具验证协议行为,不证明任何厂商的普遍支持或某个网络的生产结果。

操作者决策路径

  1. 识别:确认信息是否跨越 255 个八位字节,并记录 TLV 类型、键、所在 IIH 或 L1/L2 LSP 集合。
  2. 声明:查明该 TLV 是否声明适用 Multi-Part;若没有,不要自行假定可以拼接。
  3. 能力:核对邻居的 MP-TLV 能力通告。能力未知或不一致时,将生成限制在所有接收方都能安全处理的范围内。
  4. 验证:用精确夹具观察支持端是否合并全部同类型同键出现,不支持端是否只保留一个,并确认不同键保持分离。
  5. 控制:在证据完整前启用生成限制、监测告警,并把变更纳入回滚计划。
  6. 决定:只有当完整性证据、能力矩阵和告警路径都可审计时,才扩大生成范围;否则维持单一 TLV 可承载的表示或暂停变更。

来源

RFC 9885:Multi-Part TLVs in IS-IS