IPv6 标头中流标签的使用?

网络工程 ip ipv6 协议理论 射频卡
2021-07-14 00:03:14

我一直在阅读IPv6 Flow Label SpecificationRFC 6437),我想问一下设置这个标签的目的。

如果只使用二元组(源地址,目的地址),数据包将到达目的地。

并且由于某些主机不支持流标签字段的功能,因此该标签最终可能具有值 0。

3个回答

上面的答案并不完全正确。流标签不是为数据包排序而设计的——IP 不关心顺序,它是一种不可靠的服务,其唯一目标是在第 3 层交付。

理解流标签的更好方法是它是一个赋予数据包流的值,并且该值在该流中是相同的。因此,没有任何信息实际上有助于对该流的​​排序,它只是将它们标识为该流的一部分。

这里的预期用例是 QoS - 即源可能想要对与特定流相关联的数据包进行特殊处理。

流标签的目的是维护属于通信的数据包的顺序流。

源标记序列以帮助路由器识别特定数据包属于特定信息流。基本上它旨在避免重新排序数据包。

流标签字段的语义和用法

流是从特定源发送到特定(单播或多播)目的地的数据包序列,该源希望中间路由器对其进行特殊处理。这种特殊处理的性质可以通过控制协议(例如资源预留协议)或通过流的数据包本身内的信息(例如,在逐跳选项中)传达给路由器。此类控制协议或选项的详细信息超出了本文档的范围。

从源到目的地可能有多个活动流,以及与任何流都没有关联的流量。流由源地址和非零流标签的组合唯一标识。不属于流的数据包携带的流标签为零。

流标签由流的源节点分配给流。必须从 1 到 FFFFF 十六进制范围内(伪)随机且一致地选择新的流标签。随机分配的目的是使流标签字段内的任何一组比特都适合用作路由器的散列密钥,以查找与流相关联的状态。

属于同一流的所有数据包必须使用相同的源地址、目的地址和流标签发送。如果这些数据包中的任何一个包含 Hop-by-Hop Options 标头,则它们都必须以相同的 Hop-by-Hop Options 标头内容(不包括 Hop-by-Hop Options 标头的 Next Header 字段)发起。如果这些数据包中的任何一个包含路由报头,那么它们都必须在所有扩展报头中以相同的内容发起,直到并包括路由报头(不包括路由报头中的下一个报头字段)。允许但不要求路由器或目的地验证这些条件是否得到满足。如果检测到违规,则应通过 ICMP 参数问题消息(代码 0)将其报告给源,该消息指向流标签字段的高位八位字节(即,IPv6 数据包中的偏移量 1)。沿流路径建立的任何流处理状态的最大生命周期必须作为状态建立机制描述的一部分进行指定,例如,资源预留协议或流设置逐跳选项。在可能为先前使用该流标签而建立的任何流处理状态的最大生命周期内,源不得为新流重新使用流标签。