设为首页收藏本站language→→ 语言切换

鸿鹄论坛

 找回密码
 论坛注册

QQ登录

先注册再绑定QQ

查看: 143|回复: 1
收起左侧

[分享] MPLS对于TTL的处理

[复制链接]
 成长值: 59305
发表于 2024-4-25 13:12:27 | 显示全部楼层 |阅读模式
MPLS标签中包含一个8比特的TTL字段,其含义与IP头中的TTL域相同。MPLS对TTL的处理除了用于防止产生路由环路外,也用于实现Traceroute功能。
RFC3443中定义了两种MPLS对TTL的处理模式:Uniform和Pipe。缺省情况下,MPLS对TTL的处理模式为Uniform。
1)uniform(统一的方式)
@报文在入节点进来的时候有一个IP的TTL,假设是64,进入到MPLS域了,入节点先执行IP的TTL-1,压入标签的时候就把IP的TTL值复制给标签的TTL值;
@在中间执行转发的时候只对lable的TTL值减一;
@离开的时候将lable的TTL减一并弹出标签,并将lable的TTL复制到IP的TTL;

                               
登录/注册后可看大图
2)pipe(管道的):

                               
登录/注册后可看大图
@进来的时候按照常规减一,压标签的时候始终压入255(默认),IP的TTL跟我标签的TTL不关联;
@里面转发的时候只对顶部lable的TTL减一,内层标签TTL不变,IP的TTL也不变;
@出去的时候标签的TTL弹出不用管顶部lable的TTL了,只需要把IP的TTL减一就行;
@就是整个domain就是一跳,进来的时候IP减一,出去的时候IP减一,中间的标签自己玩,跟我IP没关系;
uniform(统一的方式):

                               
登录/注册后可看大图
pipe(管道的):
需要在MPLS domain边界设备上AR2和AR4上敲undo ttl propagate改成pipe模式

                               
登录/注册后可看大图

                               
登录/注册后可看大图
MPLS对TTL的处理:

                               
登录/注册后可看大图
uniform(统一的方式):
R1-R6:icmp request | sip:6.6.6.6 dip:7.7.7.7 ttl=255
R1-R2:icmp request | sip:6.6.6.6 dip:7.7.7.7 ttl=254 内:1031 ttl=254 外:1030 ttl=254
R2-R3:icmp request | sip:6.6.6.6 dip:7.7.7.7 ttl=254 内:1031 ttl=254 外:1030 ttl=253
R3-R4:icmp request | sip:6.6.6.6 dip:7.7.7.7 ttl=254 内:1031 ttl=254 外:1029 ttl=252
R4-R5:icmp request | sip:6.6.6.6 dip:7.7.7.7 ttl=254 内:1031 ttl=251
R5-R7:icmp request | sip:6.6.6.6 dip:7.7.7.7 ttl=250
pipe(管道的):
R1-R6:icmp request | sip:6.6.6.6 dip:7.7.7.7 ttl=255
R1-R2:icmp request | sip:6.6.6.6 dip:7.7.7.7 ttl=254 内:1031 ttl=255 外:1041 ttl=255
R2-R3:icmp request | sip:6.6.6.6 dip:7.7.7.7 ttl=254 内:1031 ttl=255 外:1040 ttl=254
R3-R4:icmp request | sip:6.6.6.6 dip:7.7.7.7 ttl=254 内:1031 ttl=255 外:1040 ttl=253
R4-R5:icmp request | sip:6.6.6.6 dip:7.7.7.7 ttl=254 内:1031 ttl=252
R5-R7:icmp request | sip:6.6.6.6 dip:7.7.7.7 ttl=253
tracert:

                               
登录/注册后可看大图
uniform(统一的方式):
tracert -a 6.6.6.6 7.7.7.7
traceroute to  7.7.7.7(7.7.7.7), max hops: 30 ,packet length: 40,press CTRL_C t
o break
1 1.1.16.1 30 ms  10 ms  20 ms
2 1.1.12.2 50 ms  30 ms  40 ms
3 1.1.23.3 50 ms  40 ms  40 ms
4 1.1.34.4 40 ms  40 ms  40 ms
5 1.1.57.5 40 ms  40 ms  50 ms
6 1.1.57.7 50 ms  50 ms  50 ms
tracert报文基于udp的
第一个报文:
R6-R1:data | sip:6.6.6.6 dip:7.7.7.7 ttl=1
R1-R6:icmp ttl exceeded | sip:1.1.16.1 dip:7.7.7.7
-----------------------------------------------------
第二个报文:
R6-R1:data | sip:6.6.6.6 dip:7.7.7.7 ttl=2
R1-R2:data | sip:6.6.6.6 dip:7.7.7.7 ttl=1 内:1028 ttl=1 外:1027 ttl=1
此时R2发现最外层标签TTL=0了,就会给R6回复一个
icmp ttl exceeded | sip:1.1.12.2 dip:6.6.6.6
但是R2没有6.6.6.6的私网标签,那么这个时候R6不就探测不出R2了么?
此时R2玩了一招移花接木:R2将回复给R6的icmp ttl exceeded 内层标签不动,外层标签正常替换(就是替换成去往5.5.5.5的公网标签)继续朝着R7去发。
R2-R3:icmp ttl exceeded | sip:1.1.12.2 dip:6.6.6.6 内:1028 外:1027
R3-R4:icmp ttl exceeded | sip:1.1.12.2 dip:6.6.6.6 内:1028 外:1027
R4-R5:icmp ttl exceeded | sip:1.1.12.2 dip:6.6.6.6 内:1028
此时数据包到了R5上,R5将内层标签拿掉,去查对应vrf的路由表,发现不是发给我的,打上去往6.6.6.6的私网标签和公网标签往回发。
R5-R4:icmp ttl exceeded | sip:1.1.12.2 dip:6.6.6.6 内:1028 外:1024
R4-R3:icmp ttl exceeded | sip:1.1.12.2 dip:6.6.6.6 内:1028 外:1024
R3-R2:icmp ttl exceeded | sip:1.1.12.2 dip:6.6.6.6 内:1028 外:1024
R2-R1:icmp ttl exceeded | sip:1.1.12.2 dip:6.6.6.6 内:1028
R1-R6:icmp ttl exceeded | sip:1.1.12.2 dip:6.6.6.6
-----------------------------------------------------
后续探测一个套路

pipe(管道的):
[AR6]tracert -a 6.6.6.6 7.7.7.7
traceroute to  7.7.7.7(7.7.7.7), max hops: 30 ,packet length: 40,press CTRL_C t
o break
1 1.1.16.1 20 ms  20 ms  30 ms
2 1.1.57.5 40 ms  40 ms  40 ms
3 1.1.57.7 50 ms  50 ms  50 ms
tracert报文基于udp的
第一个报文:
R6-R1:data | sip:6.6.6.6 dip:7.7.7.7 ttl=1
R1-R6:icmp ttl exceeded | sip:1.1.16.1 dip:7.7.7.7
-----------------------------------------------------
第二个报文
R6-R1:data | sip:6.6.6.6 dip:7.7.7.7 ttl=2
R1-R2:data | sip:6.6.6.6 dip:7.7.7.7 ttl=1 内:1028 ttl=255 外:1032 ttl=255
R2-R3:data | sip:6.6.6.6 dip:7.7.7.7 ttl=1 内:1028 ttl=255 外:1032 ttl=254
R3-R4:data | sip:6.6.6.6 dip:7.7.7.7 ttl=1 内:1028 ttl=255 外:1032 ttl=253
R4-R5:data | sip:6.6.6.6 dip:7.7.7.7 ttl=1 内:1028 ttl=252
此时R5将内层标签拿掉,发现网络层头部TTL减为0,此时R5就会给R6回复一个
R5-R4:icmp ttl exceeded | sip:1.1.57.5 dip:6.6.6.6 内:1040 外:1029
R4-R3:icmp ttl exceeded | sip:1.1.57.5 dip:6.6.6.6 内:1040 外:1029
R3-R2:icmp ttl exceeded | sip:1.1.57.5 dip:6.6.6.6 内:1040 外:1029
R2-R1:icmp ttl exceeded | sip:1.1.57.5 dip:6.6.6.6 内:1040
R1-R6:icmp ttl exceeded | sip:1.1.57.5 dip:6.6.6.6
总结:icmp ttl exceeded的TTL无需过多关注,因为TTL肯定是最大255,管道模式运营商可以隐藏自己内部的设备

您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2024-5-5 11:45 , Processed in 0.059548 second(s), 9 queries , Redis On.  

  Powered by Discuz!

  © 2001-2024 HH010.COM

快速回复 返回顶部 返回列表