1. 引言
从网络层的角度看, 流是从特定源发送到特定单播, 任播或组播目的地的一系列分组, 且节点希望将其标记为一个流. 从上层角度看, 流可以由某个特定传输连接或媒体流一个方向上的所有分组组成. 但是, 流不一定与传输连接形成 1:1 映射.
传统上, 流分类器基于源地址, 目的地址, 源端口, 目的端口和传输协议类型组成的 5 元组. 但是, 由于分片或加密, 其中一些字段可能不可用. 或者, 在一串 IPv6 扩展头之后定位这些字段可能效率很低. 此外, 如果分类器只依赖 IP 层头部, 以后引入替代传输层协议会更容易.
使用 Flow Label, Source Address 和 Destination Address 字段组成的 3 元组可以实现高效的 IPv6 流分类, 其中只使用固定位置上的 IPv6 主头部字段.
流标签可以用于无状态和有状态两种场景. 无状态场景是指以任何方式处理流标签的节点, 在处理分组之前或之后都不需要存储关于某个流的任何信息. 有状态场景是指处理流标签值的节点需要存储关于该流的信息, 包括流标签值. 有状态场景还可能需要信令机制来告知下游节点流标签正以某种方式使用, 并在网络中建立流状态. 例如, RSVP [RFC2205] 和 General Internet Signaling Transport (GIST) [RFC5971] 可以通告流标签值.
流标签在无状态场景中使用最为简单. 本规范聚焦于无状态模型以及它如何作为默认机制使用. 有状态模型, 信令, 具体流状态建立方法及其相关服务模型的细节不在本规范范围内. 有状态模型的基本要求见 第 4 节.
IPv6 流支持的最低级别包括为流加标签. 一个具体目标是启用并鼓励将流标签用于各种形式的无状态负载分布, 尤其是在 Equal Cost Multi-Path (ECMP) 和/或 Link Aggregation Group (LAG) 路径上. ECMP 和 LAG 是将多个物理链路绑定在一起的方法, 用来获得承载超过单条物理链路带宽的给定负载所需的容量. 更多细节见单独文档 [RFC6438]. IPv6 源节点 SHOULD 能够标记已知流 (例如 TCP 连接和应用流), 即使节点本身不要求任何特定于流的处理. 无状态流标记的节点要求见 第 3 节.
本文档替代 [RFC3697] 以及 [RFC2460] 的第 6 节和附录 A. 所做变更的理由记录在 [RFC6436] 中. 本文档还包括对 [RFC2205] 中流标签相关内容的修正.
本文档中的关键词 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", 和 "OPTIONAL" 应按照 [RFC2119] 中的描述解释.