理论教育 如何避免IP分块导致的问题?

如何避免IP分块导致的问题?

时间:2023-07-01 理论教育 版权反馈
【摘要】:在任何情况下,它可以导致封装的分组超过将要求IP分段的出口接口MTU。不幸的是,PMTUD不被所有的应用或所有的协议所支持。源节点的MTU可以通过手动配置以保证IP分块只在发送端点进行,而在链路的其他地方都不会再进行分块。这就要求更细致地了解链路其他MTU的情况,以避免额外IP分块。可以预见,将存在SEG或BTS栈的IPsec需要执行分段的情况。

如何避免IP分块导致的问题?

隧道模型中应用IPsec意味着明文IP分组被封装到另一个IP分组中,通常使用ESP封装。如果还使用GRE,则进行两个封装。封装开销不仅取决于协议,而且取决于安全服务(加密与完整性保护)、所选择的算法和原始分组大小。在任何情况下,它可以导致封装的分组超过将要求IP分段的出口接口MTU。

一般来说,应该避免IP分片,这会导致接收节点需要重新组装,增加网络负载、分组延迟和延迟变化等。为了做到这一点,PMTUD(路径MTU发现)[21,22]如果被BTS、SEG和端节点支持,则使能。通过使用PMTUD,节点将发现沿着到目的地的路径的最小MTU,并且它们将能够调整要发送到IP的数据的大小,使得分组将不会经过任何进一步分段的路径。

不幸的是,PMTUD不被所有的应用或所有的协议所支持。虽然PMTUD是TCP和SCTP的组成部分,但在UDP本身中却没有支持,而是在由使用UDP的应用程序中实现。

源节点的MTU可以通过手动配置以保证IP分块只在发送端点进行,而在链路的其他地方都不会再进行分块。这种方法可以在大多数情况下使用,但一些系统不支持配置MTU。这就要求更细致地了解链路其他MTU的情况,以避免额外IP分块。

可以预见,将存在SEG或BTS栈的IPsec需要执行分段的情况。当在IPsec栈的明文被期望在封装之后超过接口MTU时,IPsec栈可以在基于预定义的隧道MTU的封装(预分段)之前决定分割分组。或者,可以在转发(分段后)之后由IP层封装和分段分组。每种方法都有其优点和缺点,接下来进行分析。

• 预分段

它具有独特的优点,即VPN终端不需要在解密之前重组数据包。只有最终目的地将执行重新组合。以这种方式,VPN终端无需这个资源消耗任务。如果后面有多个设备,这对SEG来说是很重要的。对于BTS,它不那么重要,因为通常所有的业务由BTS本身消耗,因此它仍然需要进行最终重组。(www.daowen.com)

另一方面,如果在公共链路中发生进一步的分段,则预分段是无效的,因为两种类型(预分段、再分段)将同时发生。为了避免这种额外的分段,需要仔细规划,或者应该使用PMTUD功能(路径MTU发现)。

IPsec协议栈的预分段与IPv6不兼容。这种情况下,如果IPsec协议栈需要数据包分段,就只能采用后分段。

• 后分段

如前面提到的,当公用链路的MTU不能获知或者有路由改变时,数据包可能在经过的路由器上分段,这种情况下,最好只执行后分段,因为预分段不能提供收益。

IPv6只支持后分段。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈