- play_arrow 概述
- play_arrow 基于流的会话
- play_arrow 监控基于流的会话并建立错误处理参数
- play_arrow 基于数据包的转发
- play_arrow 配置语句和操作命令
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 数据包
本主题介绍互联网控制消息协议 (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,“目标不可达”消息用于此目的。 每条消息都包含一个代码,指示导致数据包传递失败的问题的性质。它还包括无法传送的全部或部分数据包,以帮助源设备解决问题。 当流模块遇到嵌入数据包头数据与会话的 5 元组数据匹配的目标不可达 ICMP 数据包时,软件将终止会话。 |
02 数据包太大 | 当流模块收到针对它的 ICMPv6 数据包太大消息时,流模块会将数据包发送到路由引擎上的 ICMP 协议堆栈,以启动路径最大传输单元(路径 MTU)发现过程。 如果数据包太大消息与设备无关,而是传输数据包,则设备会尝试将嵌入的 5 元组数据与会话进行匹配。
注意: 数据包太大消息是唯一会导致流模块修改接口的 ICMPv6 数据包。 |
03 次超出 | 当流模块收到因超出基本逐跳标头字段中指定的跃点计数而无法传送的数据包时,它会发送此消息以通知数据包的源节点该数据包因此而被丢弃。 |
04-参数问题 | 当设备发现 IPv6 报头或扩展报头中的字段存在问题,导致无法处理数据包时,软件会丢弃该字段,并将此 ICMPv6 消息发送到数据包的源节点,指示问题的类型和位置。 |