高级隧道问题与点对点协议详解
1. 嵌套隧道与隧道环路
隧道技术在网络通信中有着广泛应用,但也可能出现一些潜在问题,其中隧道环路就是一个可能导致严重后果的问题。
1.1 隧道环路引发的网络崩溃
正常的路由环路危害相对较小,数据包会在环路中传输,直到其生存时间(IPv4 的 TTL)或跳数限制(IPv6 的 Hop Limit)计数器归零,随后会向发送者返回 ICMPv6 错误。若该错误陷入同一或其他环路,当 TTL 或跳数限制到期时会被丢弃。
然而,隧道环境下情况不同。当数据包进入隧道时,会添加一个新的带有“重新充电”的 TTL 或跳数限制的头部。若隧道数据包在未解封装的情况下返回隧道入口,它将再次通过隧道,TTL 或跳数限制也会再次重置。在这个过程中,每次新的封装都会使数据包变大,最终可能因超过隧道的最大传输单元(MTU)而无法通过。此时,根据外部头部的 IP 版本,隧道入口点会有不同行为:IPv4 可能对数据包进行分片并分别传输,再次进入环路;IPv6 以及设置了不分片标志的 IPv4 数据包,会向发送者发送 ICMPv6 “太大”消息,发送者再对数据包进行分片并重新发送。无论哪种情况,最终都会导致网络崩溃,即初始的单个数据包产生的流量会使网络饱和。
在 Debian Sarge 系统中,如果未明确设置 TTL 或跳数限制,Linux 内核会从内部数据包复制该值。虽然在某些情况下这很有用,但通常建议明确设置 TTL。
1.2 隧道环路的原因
最简单的情况下,隧道环路可能由新隧道的错误配置或静态路由的更改引起。这种情况下,配置者通常能很快发现问题并解决,恢复网络正常运行。
超级会员免费看
订阅专栏 解锁全文
99

被折叠的 条评论
为什么被折叠?



