WOLF-LAB沃尔夫网络实验室中国网络精英的发源地!
24小时咨询热线:173-1636-2402

技术文档

Technical documentation

您当前位置: 首页 > 技术文档 > 详情

MPLS对于TTL的处理-HCIE Datacom直通车高级课程学习考试文档

发布日期:2022-04-26 浏览次数:2666 来源:崔志鹏

MPLS对于TTL的处理-HCIE Datacom直通车高级课程学习考试文档

HCIE技术文档编写:WOLF-LAB 崔志鹏  CCIE#64969;HCIE#15621


      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;

1650962839882084.png

2)pipe(管道的):

1650962895492580.png

@进来的时候按照常规减一,压标签的时候始终压入255(默认),IP的TTL跟我标签的TTL不关联;

@里面转发的时候只对顶部lable的TTL减一,内层标签TTL不变,IP的TTL也不变;

@出去的时候标签的TTL弹出不用管顶部lable的TTL了,只需要把IP的TTL减一就行;

@就是整个domain就是一跳,进来的时候IP减一,出去的时候IP减一,中间的标签自己玩,跟我IP没关系;

 

uniform(统一的方式):

1650962925972052.png

pipe(管道的):

需要在MPLS domain边界设备上AR2和AR4上敲undo ttl propagate改成pipe模式

1650962948649068.png

1650962968138921.png

MPLS对TTL的处理:

1650962993203672.png

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:

1650963034271274.png

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,管道模式运营商可以隐藏自己内部的设备

 

HCIE Datacom免费试听,

联系在线客服预约直播 在线客服

返回目录
在线咨询