MPLS-6 loop detection 隐藏ttl的回包
LOOP Detection
Ldp 的环路检测机制依赖于IGP协议
如果出现了环路(一般是IGP出了问题,也不是动态路由,而是静态路由配置错误引起的,标签头中的TTL将防止标签无止尽的被转发)
标签头中的TTL与IP头中的TTL是一样的,直接copy自IP头中的TTL值(这需要一个IP包进入一MPLS的网络当中)
如下图所示
数据包进入A,然后被A压入标签,发出去,此时的TTL是复制经过A的TTL(IP包的)
然后再经过一跳设备,MPLS的B,此时减1的是MPLS的TTL,IP包的不变,
此时到了C,这时有意思的事儿发生了,
发数据从MPLS的网络转回到IP网络时,TTL会使用MPLS中的TTL-1,然后复制到IP包中。
看起来没什么,但是,当使用traceroute时,会将整个的MPLS 环境暴露。
为什么traceroute会暴露呢
因为归TTL=0时,会返回一个差错消息给起始端,
向上图所示,经过了三个MPLS域中的设备,一眼就能看出来,那怎么办?
某种情况下我们需要手动的去关闭这个TTL propagation
当关闭掉TTL propagation之后,MPLS将不再复制IP包中的TTL,而是直接=255,最大值
这样一来,就可以关闭traceroute带来的暴露网络架构的风险,隐藏的只有mpls domain的部份。
效果是这样的
原有的traceroute
命令后面有两个关键字,一个是forwarded ,一个是local,
很好理解
Forwarded,是经过本路由器的数据
Local,是本设备产生的数据
但是你如果啥都不加的话,会比较狠,就是爱谁谁,
都不行,都给你干掉,
可以这样测试一下
在R1上,关闭 no mpls ip propagate-ttl forwarded,
看来对本地产生的数据的确是不管用的
那么对于PC而言呢?
很好,
做为R1而言,PC1的请求数据就是forwarded的,所以被隐藏了
同理,关于local的关键字,意思已经很明确了,我就不再多说了。
在R1上关闭 mpls 的ttl propagate-ttl之后
直接将所有的MPLS节点全部隐藏。
-----------------------------------------
CCIE 成长之路 --- 梅利