IPv6扩展头(三)——路由头

文章探讨了IPv6路由头部(RoutingHeader)中的不同类型,特别是已弃用的类型0(RH0),其存在安全风险导致DoS攻击。文章还解释了路由头部在数据包转发中的作用,并强调了弃用RH0的原因和替代方案。
摘要由CSDN通过智能技术生成

IPv6路由头部(Routing Header)为发送方提供了一种IPv6数据报控制机制,以控制(至少部分控制)数据报通过网络的路径。

IPv6 源使用路由头列出在到达数据包目的地的途中要“访问”的一个或多个中间节点。该 EH 在[ RFC8200 ]中指定。路由类型 0 最初在[ RFC2460 ]中指定,后来被[ RFC5095 ]废弃;因此,它已从[ RFC8200 ]中删除。

截至 2022 年 5 月,已指定以下路由类型:

  • 类型 0:源路由(已弃用)[ RFC2460 ] [ RFC5095 ]
  • 类型 1:Nimrod(已弃用)
  • 类型 2:类型 2 路由头[ RFC6275 ]
  • 类型 3:RPL 源路由标头[ RFC6554 ]
  • 类型 4:分段路由标头 (SRH) [RFC8754 ]
  • 类型 5-252:未分配
  • 类型 253:RFC3692 式实验 1 [ RFC4727 ]
  • 类型 254:RFC3692 式实验 2 [ RFC4727 ]
  • 类型 255:保留

路由类型 0 的路由标头的安全含义已在[ Biondi-2007 ]和[ RFC5095 ]中详细讨论。路由类型 1 从未得到广泛实施。路由类型 2、路由类型 3 和路由类型 4 (SRH) 的路由标头的安全含义分别在[ RFC6275 ]、 [ RFC6554 ]和[ RFC8754 ]中讨论。

阻止包含路由类型 0 或路由类型 1 的路由标头的数据包不会产生任何操作影响,因为两者均已被弃用。阻止包含路由类型 2 的路由标头的数据包将破坏移动 IPv6。包含路由类型 3 的路由标头的数据包可以在 RPL 域边界安全地被阻止,因为此类标头是在单个 RPL 域内使用的。如果对在 SR 域内转发的数据包强制执行过滤策略,则阻止包含路由类型 4 (SRH) 的路由头的数据包将破坏分段路由 (SR) 部署。

[RFC9288]建议中间系统应丢弃包含路由类型 0、路由类型 1 或路由类型 3 的路由标头的数据包。按照[ RFC7045 ]的要求,应允许其他路由类型。

为了更好地理解路由头部,本文先讲述RH0,然后研究它被放弃的原因,以及它和RH2的不同之处。

RH0规定了数据包转发时可“访问”的一个或多个IPv6节点。下图显示了这个头部。
在这里插入图片描述

这个头部包含一个8位的路由类型标识符和一个8位的剩余部分字段。对于RH0,IPv6地址类型标识符为0;对于RH2,该标识符为2; 剩余部分字段指出还有多少段路由需要处理,也就是说,在到达目的地之前仍需访问的中间结点数。紧接着是32位的保留字段开始的地址块,由发送方设置为0,并由接收方忽略。在数据报转发时,这些地址并非可访问的组播IPv6地址。

IPv6路由头部在转发过程中不会处理,直至目的IP地址字段中包含的地址所在的节点。这时,剩余部分字段用于确定来自地址向量的下一跳地址,并将该地址与IPv6头部中的目的IP地址交换。因此,在这个数据报转发过程中,剩余部分字段将会变得越来越小,头部中的地址列表反映转发数据报的节点地址。这个转发过程可以借助下图这个栗子更好的理解。
在这里插入图片描述

在上图中,我们可看到中间节点如何处理路由头部。发送方(S) 使用一个目的地址R1以及一个包含地址R2、R3和D的路由头部(类型0 RH0)来构造数据报。数据报的最终目的是列表中的最后一个地址D。剩余部分字段(图中的Left字段)从3开始。数据报由S和R0 自动向R1转发。由于R0的地址在数据报中不存在,因此R0没有修改路由头部或地址。当数据报到达R1时,将基本头部的目的地址和路由头部的第一个地址交换,并将剩余部分字段递减1.

当数据报被转发时,重复上述将目的地址与路由头部地址列表中下一个地址交换的过程,直至路由头部中的最后一个目的地址为止。

IPv6路由头部在转发过程中不会处理,直至目的IP地址字段中包含的地址所在的节点。这个过程中,剩余部分字段用于确定来自地址向量的下一跳地址,并将该地址与IPv6头部中的目的地址字段交换。因此,在这个数据报转发过程中,剩余部分字段将会变得越来越小。

路由头部有下面的几个字段:

  • Next header: 指出路由头部后面的头部类型,这里是icmpv6.
  • Length : 指的是当前路由头部的总长度,单位8字节,这里显示是2,16字节,实际计算要加1,即24字节。因为会有0值,有一点需要注意,扩展头部一般都是8字节对齐的。
  • Type : 路由类型标识,这里是0,即RH0,现在已经不用这个值,改用RH2。
  • Left Segments : 剩余字段。
  • 保留字段 : 4字节全0
  • Address: 地址。IPv6地址,长度16个字节。

算一下总长: Next header(1字节) + Length(1字节) + Left Segments(1字节) + Type(1字节) + 保留字段32位(4字节) + IPv6地址(16字节)= 24字节,正好和length字段相等。

出于安全原因,RH0被丢弃[RFC5095]。因为RH0可用于增加DoS攻击效果,RH0的问题是允许在路由头部中的多个位置指定相同地址。这可能导致流量在一条特定路径上的两台或多台路由器或主机之间重复转发。大量的流量负载可能在网络走会难过沿着特定路径创建,与相同路径上的其他流量竞争带宽而造成干扰。因此,RH0目前已过时。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

达分柒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值