小乔 发表于 2024-4-25 13:12:27

MPLS对于TTL的处理

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;https://www.wolf-lab.com/Uploads/image/20220426/1650962839882084.png2)pipe(管道的):https://www.wolf-lab.com/Uploads/image/20220426/1650962895492580.png@进来的时候按照常规减一,压标签的时候始终压入255(默认),IP的TTL跟我标签的TTL不关联;@里面转发的时候只对顶部lable的TTL减一,内层标签TTL不变,IP的TTL也不变;@出去的时候标签的TTL弹出不用管顶部lable的TTL了,只需要把IP的TTL减一就行;@就是整个domain就是一跳,进来的时候IP减一,出去的时候IP减一,中间的标签自己玩,跟我IP没关系; uniform(统一的方式):https://www.wolf-lab.com/Uploads/image/20220426/1650962925972052.pngpipe(管道的):需要在MPLS domain边界设备上AR2和AR4上敲undo ttl propagate改成pipe模式https://www.wolf-lab.com/Uploads/image/20220426/1650962948649068.pnghttps://www.wolf-lab.com/Uploads/image/20220426/1650962968138921.pngMPLS对TTL的处理:https://www.wolf-lab.com/Uploads/image/20220426/1650962993203672.pnguniform(统一的方式):R1-R6:icmp request | sip:6.6.6.6 dip:7.7.7.7 ttl=255R1-R2:icmp request | sip:6.6.6.6 dip:7.7.7.7 ttl=254 内:1031 ttl=254 外:1030 ttl=254R2-R3:icmp request | sip:6.6.6.6 dip:7.7.7.7 ttl=254 内:1031 ttl=254 外:1030 ttl=253R3-R4:icmp request | sip:6.6.6.6 dip:7.7.7.7 ttl=254 内:1031 ttl=254 外:1029 ttl=252R4-R5:icmp request | sip:6.6.6.6 dip:7.7.7.7 ttl=254 内:1031 ttl=251R5-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=255R1-R2:icmp request | sip:6.6.6.6 dip:7.7.7.7 ttl=254 内:1031 ttl=255 外:1041 ttl=255R2-R3:icmp request | sip:6.6.6.6 dip:7.7.7.7 ttl=254 内:1031 ttl=255 外:1040 ttl=254R3-R4:icmp request | sip:6.6.6.6 dip:7.7.7.7 ttl=254 内:1031 ttl=255 外:1040 ttl=253R4-R5:icmp request | sip:6.6.6.6 dip:7.7.7.7 ttl=254 内:1031 ttl=252R5-R7:icmp request | sip:6.6.6.6 dip:7.7.7.7 ttl=253 tracert:https://www.wolf-lab.com/Uploads/image/20220426/1650963034271274.pnguniform(统一的方式):tracert -a 6.6.6.6 7.7.7.7 traceroute to7.7.7.7(7.7.7.7), max hops: 30 ,packet length: 40,press CTRL_C to break 1 1.1.16.1 30 ms10 ms20 ms 2 1.1.12.2 50 ms30 ms40 ms 3 1.1.23.3 50 ms40 ms40 ms 4 1.1.34.4 40 ms40 ms40 ms 5 1.1.57.5 40 ms40 ms50 ms 6 1.1.57.7 50 ms50 ms50 ms tracert报文基于udp的第一个报文:R6-R1:data | sip:6.6.6.6 dip:7.7.7.7 ttl=1R1-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=2R1-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 外:1027R3-R4:icmp ttl exceeded | sip:1.1.12.2 dip:6.6.6.6 内:1028 外:1027R4-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 外:1024R4-R3:icmp ttl exceeded | sip:1.1.12.2 dip:6.6.6.6 内:1028 外:1024R3-R2:icmp ttl exceeded | sip:1.1.12.2 dip:6.6.6.6 内:1028 外:1024R2-R1:icmp ttl exceeded | sip:1.1.12.2 dip:6.6.6.6 内:1028R1-R6:icmp ttl exceeded | sip:1.1.12.2 dip:6.6.6.6-----------------------------------------------------后续探测一个套路
pipe(管道的):tracert -a 6.6.6.6 7.7.7.7 traceroute to7.7.7.7(7.7.7.7), max hops: 30 ,packet length: 40,press CTRL_C to break 1 1.1.16.1 20 ms20 ms30 ms 2 1.1.57.5 40 ms40 ms40 ms 3 1.1.57.7 50 ms50 ms50 ms tracert报文基于udp的第一个报文:R6-R1:data | sip:6.6.6.6 dip:7.7.7.7 ttl=1R1-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=2R1-R2:data | sip:6.6.6.6 dip:7.7.7.7 ttl=1 内:1028 ttl=255 外:1032 ttl=255R2-R3:data | sip:6.6.6.6 dip:7.7.7.7 ttl=1 内:1028 ttl=255 外:1032 ttl=254R3-R4:data | sip:6.6.6.6 dip:7.7.7.7 ttl=1 内:1028 ttl=255 外:1032 ttl=253R4-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 外:1029R4-R3:icmp ttl exceeded | sip:1.1.57.5 dip:6.6.6.6 内:1040 外:1029R3-R2:icmp ttl exceeded | sip:1.1.57.5 dip:6.6.6.6 内:1040 外:1029R2-R1:icmp ttl exceeded | sip:1.1.57.5 dip:6.6.6.6 内:1040R1-R6:icmp ttl exceeded | sip:1.1.57.5 dip:6.6.6.6 总结:icmp ttl exceeded的TTL无需过多关注,因为TTL肯定是最大255,管道模式运营商可以隐藏自己内部的设备

mawr1985 发表于 2024-4-25 13:36:06

{:6_267:}
页: [1]
查看完整版本: MPLS对于TTL的处理