基于 IPv6 流的处理概述
了解 SRX 系列设备如何处理 IPv6 数据包、IPv6 扩展标头和 ICMPv6 数据包。
IPv6 数据包标头和 SRX 系列概述
每个 IPv6 数据包都有一个至少 40 个字节(320 位)长的基本数据包标头。IPv6 数据包标头可选择具有扩展标头,其中包含有关网络设备的补充信息。
对于 IPv6 数据包,流处理将使用以下方式解析扩展标头和传输层标头:
如果软件遇到 TCP、UDP、ESP、AH 或 ICMPv6 报头,它会解析该标头并假定数据包有效负载与指定的协议类型相对应。
如果软件遇到逐跳标头、路由和目标标头或分片标头,它会继续解析下一个扩展标头。
如果遇到无下一个标头的扩展标头,软件会检测到该数据包是未知协议(协议等于 0)的数据包。
对于其他扩展标头,软件会解析报头,并将该数据包识别为属于扩展标头指示的协议。
了解 IPv6 数据包标头扩展
IPv6 扩展标头包含网络设备(如路由器、交换机和端点主机)用于决定如何定向或处理 IPv6 数据包的补充信息。每个分机头的长度为 8 个八位位组的整数倍。这允许后续扩展标头使用 8 八位位位结构。
任何后跟分机头的报头都包含一个“下一个报头”值,用于识别扩展标头类型。扩展标头可以放置在 IPv6 标头和数据包中的上层标头之间。 图 1 显示了带有逐跳选项标头的 IPv6 数据包。同样,一个 IPv6 报头可以携带零个、一个或多个扩展标头,每个扩展标头均由前一个标头的“下一个报头”字段标识。扩展标头始终遵循基本 IPv6 报头的顺序 ,如表 1 所示:
标题名称 |
目的 |
下一个标头值 |
---|---|---|
逐跳选项 |
指定目标主机路径上每个跃点的传递参数。 逐跳选项仅在 IPv6 基本报头之后出现。如果使用了,它应该是第一个扩展标头。它不能出现在其他扩展标头之后。 |
0 |
目标选项 |
为中间目标设备或最终目标主机指定数据包交付参数。当数据包使用此标头时。 |
60 |
路由 |
定义数据包的严格源路由和松散源路由。(使用严格的源路由,每个中间目标设备都必须远离一个跃点。借助松散源路由,中间目标设备可以远离一个或多个跃点) |
43 |
片段 |
指定如何执行 IPv6 分片和重组服务。 源节点使用分片扩展标头告诉目标节点已分片的数据包的大小,以便目标节点可以重组数据包。 |
44 |
认证 |
提供身份验证、数据完整性和防重放保护。 |
51 |
封装安全有效负载 |
为封装安全有效负载 (ESP) 数据包提供数据机密性、数据身份验证和反重放保护。 |
50 |
目标 IP 地址 |
标识 IPv6 数据包要发送到的主机设备或节点上的接口。 目标地址可能出现两次,第一个实例在源 IP 地址之后的跃点限制之后,第二个实例在最终扩展标头之后。 |
60 |
有关 IPv6 的信息,请参阅 RFC2460。
另请参阅
了解 SRX 系列设备如何处理 ICMPv6 数据包
本主题介绍 Internet 控制消息协议 (ICMP)、ICMP 消息,以及适用于 SRX 系列服务网关的 Junos OS 如何使用它们。
ICMP 提供了一个报告数据包处理错误的框架,用于诊断目的并用于特定于实施的功能。ICMP 错误消息使一个节点可以通知另一个节点在数据传输过程中出了问题。在定义 IP 版本 6 (IPv6) 时,IP 版本 4 (IPv4) 之间的差异足以显著,需要新版本的 ICMP。
每个 ICMPv6 消息前面都会有一个 IPv6 报头和零个或多个 IPv6 扩展报头。ICMPv6 报头由紧邻上一个报头中的下一个报头值 58 标识。这与用于识别 IPv4 ICMP 的值不同。所有 ICMPv6 错误消息都有 32 位特定于类型的数据,以帮助数据包接收方找到嵌入的调用数据包。
大多数 ICMPv6 数据包具有与普通 IPv6 数据包相同的特性和行为,而 Junos OS 流模块通过第一个路径处理它们,而快速路径处理的方式与处理普通 IPv6 数据包的方式相同。 表 2 显示了流模块处理与普通 ICMPv6 数据包不同的 ICMPv6 嵌入式数据包类型。
对于这些数据包,流模块使用它从嵌入式 ICMPv6 数据包创建的元组来搜索匹配会话。它会继续处理数据包,无需修改最大传输单元 (MTU),直到找到匹配的会话,除非它收到接口的 ICMPv6 数据包过大消息。在这种情况下,它会修改该接口的 MTU 大小。如果流模块未找到匹配的会话,或者无法从嵌入式有效负载获取有效的 IPv6 报头,则会丢弃数据包。
数据包过大消息是唯一一种会使流模块修改接口的 ICMPv6 数据包。
消息 |
意义 |
---|---|
01 目的地无法访问 |
当数据包的发送方式出现问题而无法交付时,有一种反馈机制可以让问题的来源知道,包括数据包交付失败的原因,这一点很有用。对于 IPv6,目标无法访问的消息用于此目的。 每条消息都包含一个代码,用于指示导致数据包交付失败的问题性质。它还包含无法交付的全部或部分数据包,以帮助源设备解决问题。 当流模块遇到目标无法访问的 ICMP 数据包时,其嵌入式数据包标头数据与某个会话的 5 元数据匹配,软件将终止该会话。 |
02 数据包过大 |
当流模块收到用于它的 ICMPv6 数据包过大的消息时,流模块将数据包发送至路由引擎上的 ICMP 协议堆栈,以执行路径最大传输单元(路径 MTU)发现进程。 如果“数据包过大”消息与设备无关,而是与传输数据包有关,则设备将尝试将嵌入式 5 元数据与会话匹配。
注意:
数据包过大消息是唯一一种会使流模块修改接口的 ICMPv6 数据包。 |
超过 03 次 |
当流模块收到因已超过基本标头逐跳字段指定的跃点计数而无法传递的数据包时,它会发送此消息以通知数据包的源节点因此原因被丢弃。 |
04 参数问题 |
当设备在 IPv6 报头或扩展标头中的字段发现问题,使其无法处理数据包时,软件会丢弃该数据包,并将此 ICMPv6 消息发送至数据包的源节点,指示问题的类型和位置。 |