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 的变更旨在:
- 澄清原始规范中的歧义
- 鼓励实际使用 Flow Label, 特别是用于负载分布
- 提供实现者指导, 说明如何生成和使用 Flow Label 值
- 以现实方式处理安全关切
- 反映 RFC 3697 发布以来获得的操作经验
这些变更保持与 RFC 3697 的向后兼容, 同时使规范更实用, 更易实现.