跳到主要内容

7. 与 RFC 3697 的差异

本文档废止 RFC 3697, 并对 Flow Label 规范引入若干重要变更. 本节总结主要差异.

1. Flow Label 分布要求

RFC 3697: 未规定源节点应如何选择 Flow Label 值, 只说明这些值应 "uniformly distributed".

RFC 6437: 明确要求 Flow Label 值近似离散均匀分布, 并建议使用伪随机函数. 此变更为实现者提供了更清晰的指导.

2. 无状态与有状态场景

RFC 3697: 未清楚区分 Flow Label 的无状态和有状态用法.

RFC 6437: 清楚分离无状态和有状态场景, 并主要聚焦于无状态操作. 这使实现者更容易理解默认行为.

3. 负载分布用例

RFC 3697: 提到负载分布是可能用例, 但未强调它.

RFC 6437: 明确鼓励将 Flow Label 用于 ECMP 和 LAG 路径上的负载分布. 这反映了已经出现的主要实际用例.

4. 安全考虑事项

RFC 3697: 说明 Flow Label "must be delivered unchanged to the destination node(s)", 且没有例外.

RFC 6437: 允许出于 "compelling operational security reasons" 改变 Flow Label, 并提供详细的安全考虑事项. 此变更承认一个现实: 安全要求有时可能必须修改或清除 Flow Label.

5. 源节点行为

RFC 3697: 未就源节点应如何设置 Flow Label 提供具体指导.

RFC 6437: 为源节点提供明确要求, 包括使用伪随机函数, 以及需要为不同流设置不同 Flow Label.

6. 转发节点行为

RFC 3697: 说明转发节点不得改变 Flow Label, 且没有例外.

RFC 6437: 保留此要求, 但增加了出于安全原因的例外, 如第 6.1 节所述.

7. 哈希函数指导

RFC 3697: 说明 "the Flow Label bits alone make poor material for a hash key."

RFC 6437: 澄清 Flow Label 可以作为哈希函数的一部分使用 (不能单独使用), 并在附录 A 中提供示例哈希函数.

8. 术语

RFC 3697: 使用术语 "immutable" 描述 Flow Label.

RFC 6437: 避免使用术语 "immutable", 因为它具有误导性 (Flow Label 未受密码学保护, 可以被改变).

9. RFC 2205 修正

RFC 3697: 未处理与 RSVP (RFC 2205) 的交互.

RFC 6437: 包含对 RFC 2205 关于 Flow Label 与 RSVP 一起使用方式的必要修正.

10. 实践指导

RFC 3697: 主要是规范文档, 实践指导有限.

RFC 6437: 为实现者提供更多实践指导, 包括针对源节点, 转发节点和安全考虑事项的具体建议.

意图小结

从 RFC 3697 到 RFC 6437 的变更旨在:

  1. 澄清原始规范中的歧义
  2. 鼓励实际使用 Flow Label, 特别是用于负载分布
  3. 提供实现者指导, 说明如何生成和使用 Flow Label 值
  4. 以现实方式处理安全关切
  5. 反映 RFC 3697 发布以来获得的操作经验

这些变更保持与 RFC 3697 的向后兼容, 同时使规范更实用, 更易实现.