CCIE V5.0 TS 之 MPLS VPN网络Traceroute问题分析
更新时间:2024-06-06 21:59:01 阅读量: 综合文库 文档下载
- ccie推荐度:
- 相关推荐
CCIE V5.0 TS
MPLS VPN网络Traceroute问题分析
一、 实验背景
在CCIE V5.0的TS中,第8题关于MPLS VPN的题目中,当HUB网络(如R7)没有发布默认路由给SPOKE(如R9)的时候,仅发布172.16.0.0/16路由,SPOKE网络(如R9)通过该路由也可以和HUB网络中相应的网段通信,但是在Traceroute的时候会出现一个现象,如下所示,第3跳显示的是星号;
R9# traceroute 172.16.0.1
Type escape sequence to abort. Tracing the route to 172.16.0.1
VRF info: (vrf in name/id, vrf out name/id) 1 123.45.67.29 9 msec 9 msec 9 msec
2 123.45.67.17 [MPLS: Labels 19/17 Exp 0] 9 msec 10 msec 9 msec 3 * * *
4 123.45.67.22 9 msec * 9 msec 当HUB网络(如R7)发布默认路由给SPOKE(如R9)的时候,则Traceroute的结果中,不会显示星号,原因是什么?
二、 实验目的
本实验目的旨在模拟TS中的MPLS VPN网络,解答上述提到的疑问,并分析遇到的新问题。网络拓扑如下,其中R1和R5为CE,R2和R4为PE,R3为P;使用GNS3进行模拟实验。
骨干网运行在ospf area0中,PE和CE之间运行EBGP;PE上的VRF配置也模拟TS网络中的情况,R2和R4的VRF配置如下所示: R2
ip vrf A rd 1:1
route-target export 1:3 route-target import 3:1 R4
ip vrf B rd 2:2
route-target export 3:1 !
ip vrf C rd 3:3
route-target import 1:3
完成配置后,可以重现TS网络中出现的问题,如下所示:
R1#traceroute 5.5.5.5 sou 1.1.1.1
Type escape sequence to abort. Tracing the route to 5.5.5.5
1 12.1.1.2 28 msec 44 msec 28 msec
2 23.1.1.3 [MPLS: Labels 17/19 Exp 0] 104 msec 120 msec 128 msec 3 * * *
4 45.1.1.5 [AS 3] 136 msec 104 msec 140 msec
以下将针对遇到的问题,逐个阐述和分析
三、 ping包的标签层数和标签值
在R1上以1.1.1.1为源地址ping 5.5.5.5,在R2和R3之间抓包,request和reply数据包的如下所示:
request(R1-->R5)的mpls标签有两层,外层标签值为17,内层标签值为19; reply(R5-->R1)的mpls标签只有一层,标签值为19;
如果仅仅从抓包软件界面上看,可能会感觉疑惑,为何来回数据包的mpls标签层数会不同,但只要观察网络拓扑上,不难发现reply(R5-->R1)数据包,R3是其在mpls网络中的倒数第二跳,所以R3上默认弹出外层标签,仅剩下内层标签,所以导致reply数据包只有一层标签,也就是说标签值为19,这个标签应该是bgp所分配的;而request数据包的外层标签值17是mpls分配的,内层标签值19是bgp分配的,下面通过命令来进行验证。
R2上去往PE R4(4.4.4.4)的mpls出标签为17,去往CE R5(5.5.5.5)的出标签为19(bgp),如下所示:
R2#sho mpls forwarding-table
Local Outgoing Prefix Bytes tag Outgoing Next Hop tag tag or VC or Tunnel Id switched interface 16 Pop tag 3.3.3.3/32 0 Fa0/1 23.1.1.3 17 Pop tag 34.1.1.0/24 0 Fa0/1 23.1.1.3 18 17 4.4.4.4/32 0 Fa0/1 23.1.1.3 19 Untagged 1.1.1.1/32[V] 3246 Fa0/0 12.1.1.1 R2#sho bgp vpnv4 uni all label
Network Next Hop In label/Out label Route Distinguisher: 1:1 (A)
1.1.1.1/32 12.1.1.1 19/nolabel 5.5.5.5/32 4.4.4.4 nolabel/19 Route Distinguisher: 2:2
5.5.5.5/32 4.4.4.4 nolabel/19
R3是P路由器,所以只交换mpls标签,不改变bgp标签(内层标签),而针对reply(R5-->R1)数据包,R3上的下一跳是4.4.4.4,其出标签为Pop,即弹出标签,所以数据包离开R3时,仅剩下bgp标签;针对request(R1-->R5)数据包也执行标签弹出。
R3#sho mpls forwarding-table
Local Outgoing Prefix Bytes tag Outgoing Next Hop tag tag or VC or Tunnel Id switched interface 16 Pop tag 2.2.2.2/32 16184 Fa0/1 23.1.1.2 17 Pop tag 4.4.4.4/32 18406 Fa0/0 34.1.1.4
R4上去往PE R2(2.2.2.2)的mpls出标签为16,去往CE R1(1.1.1.1)的出标签为19(bgp),如下所示:
R4#sho mpls forwarding-table
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface 16 Pop tag 23.1.1.0/24 0 Fa0/0 34.1.1.3 17 16 2.2.2.2/32 0 Fa0/0 34.1.1.3 18 Pop tag 3.3.3.3/32 0 Fa0/0 34.1.1.3 19 Untagged 5.5.5.5/32[V] 4956 Fa0/1.1 45.1.1.5 22 Untagged 5.5.5.5/32[V] 0 Fa0/1.2 45.2.2.5 R4#sho bgp vpnv4 uni all label
Network Next Hop In label/Out label Route Distinguisher: 1:1
1.1.1.1/32 2.2.2.2 nolabel/19 Route Distinguisher: 2:2 (B)
5.5.5.5/32 45.1.1.5 19/nolabel Route Distinguisher: 3:3 (C)
1.1.1.1/32 2.2.2.2 nolabel/19 5.5.5.5/32 45.2.2.5 22/nolabel
所以,从以上命令结果的分析,与抓包结果显示的标签值是一致的。
如果在PE上增加一条命令:mpls ldp explicit-null,执行显示空标签模式,则R3不会将reply(R5-->R1)数据包的外层标签弹出,而继续保留,标签值为0,数据包仍然有两层mpls标签,如下抓包结果所示,数据包的长度均为122byte,reply包比原来多了一层mpls标签。
四、 R5发布默认路由前后的差异
在CCIE TS网络中,当HUB网络(如R7)发布默认路由给SPOKE(如R9)的时候,则Traceroute的结果中,不会显示星号;在本实验网络中,也模拟该情况,在CE R5上,通过bgp通告一条默认路由,配置如下:
R5(config)#router bgp 3
R5(config-router)#neighbor 45.1.1.4 default-originate R5(config-router)#exit
配置后,在R1上可以收到一条通过bgp学习来的默认路由,
R1#sho ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route o - ODR, P - periodic downloaded static route
Gateway of last resort is 12.1.1.2 to network 0.0.0.0
1.0.0.0/32 is subnetted, 1 subnets
C 1.1.1.1 is directly connected, Loopback0 5.0.0.0/32 is subnetted, 1 subnets
B 5.5.5.5 [20/0] via 12.1.1.2, 02:33:12 12.0.0.0/24 is subnetted, 1 subnets
C 12.1.1.0 is directly connected, FastEthernet0/0 B* 0.0.0.0/0 [20/0] via 12.1.1.2, 00:00:23
这时候,在R1再执行traceroute的时候,结果如下,不再出现星号,
R1#traceroute 5.5.5.5 source 1.1.1.1
Type escape sequence to abort. Tracing the route to 5.5.5.5
1 12.1.1.2 [AS 3] 20 msec 72 msec 32 msec
2 23.1.1.3 [AS 3] [MPLS: Labels 17/19 Exp 0] 124 msec 120 msec 148 msec 3 45.1.1.4 [AS 3] [MPLS: Labels 0/19 Exp 0] 132 msec 120 msec 124 msec 4 45.1.1.5 [AS 3] 124 msec 124 msec 140 msec R1#
设置traceroute的probe为1,抓包结果如下:
R5为发布默认路由时,traceroute出现星号,抓包结果如下:
对比以上两种抓包结果,则可以初步判断traceroute出现星号的情况里面,是R4没有回应TTL exceeded数据包。更具体的原因是什么?需要进一步分析。
五、 Traceroute数据包分析
在分析前,必须了解traceroute数据包交互的基本原理,R1对R5启动traceroute时,发送的icmp数据包,其IP层的TTL值设置为1,R1到R5路径上的第一跳路由器R2,收到该数据包,由于TTL值为1,将丢弃该数据包,并向R1返回一个TTL超时报错数据包,R1根据该报错数据包的源地址(即R2的接口地址12.1.1.2),打印显示出来,即我们可以看到traceroute的输出第一跳R2的IP地址为12.1.1.2,如果一定时间内,R1没有收到回应,即回应超时,则R1上traceroute的输出显示为星号,表示响应超时;然后再发送一个icmp数据包,其IP层的TTL值设置为2,重复上述的过程,直到该icmp数据包发送到了R5上,由于数据包已经到达目的地,R5不会将该数据包丢弃,而是送往icmp数据包指定的udp端口处理,由于traceroute程序中指定的目的端口号,在R5上是不存在的,所以R5将向R1返
回一个端口不可达的报错,R1收到该报错信息后,在traceroute的输出结果中显示R5的接口IP地址45.1.1.5。Traceroute详细原理建议参考其他资料。
为了确认traceroute的时候,数据包在各个路由器之间是如何交互的,需要在各个路由器之间进行抓包,分析数据包的特征,最终定位原因。
当R5发布默认路由后,在R1上traceroute R5(注:参数probe设置为1),可以输出中间各跳的IP地址信息,这时,在R1至R5之间的每个网段上进行抓包,收到的数据包截图如下所示, R1-R2
R2-R3
R3-R4
R4-R5
从以上抓包结果来看,网段R1-R2和R2-R3的抓包结果,直观上来说,应该是比较符合预期的,而网段R3-R4和R4-R5的抓包结果,则有点出乎意料,为什么23.1.1.3回应1.1.1.1的数据包会出现在这两个网段呢?同样,45.1.1.4回应1.1.1.1的数据包为什么会出现在网段R4-R5之间?
经过对数据包的观察,发现可以基于每个数据包的TTL值,分析每个数据包的在每台路由器上的转发行为,进而梳理出以下表格,来表示每个数据包会出现在哪些网段上,以及在每个网段上的TTL值信息。
说明:IP表示IP报头的TTL值,L1表示MPLS外层标签的TTL值,L2表示MPLS内层标签的TTL值,冒号后面的数字表示TTL值。
在整个traceroute过程中,实际上总产生了8个数据包,下面结合以上表格,描述每个数据包转发过程:
1、1.1.1.1-->5.5.5.5:R1产生,IP层TTL值为1,转发到R2上,R2丢弃该数据包; 2、12.1.1.2-->1.1.1.1:R2产生,对上一个数据包的回应,IP层TTL值为255;
3、1.1.1.1-->5.5.5.5:R1产生,IP层TTL值为2,转发到R2上;R2对其进行转发,IP层TTL值变为1;由于进入MPLS域,数据链路层有外层、内层MPLS标签,TTL值均为1;R3收到该数据包,执行丢弃;
4、23.1.1.3-->1.1.1.1:R3产生,往R3-R4网段转发,MPLS内层标签值不变,外层标签变为0(显式倒数第二条弹出),三个TTL值均为255;R4收到后,执行IP转发,查看路由表(vrf B路由表),往R5方向纯IP转发,IP层TTL值为254;R5收到后,根据路由表,再转发给R4,IP层TTL值为253;R4收到后,往R3方向执行标签转发,IP层、MPLS内层标签、MPLS外层标签的TTL值均为252;R3收到后,往R2方向执行标签交换,IP层、MPLS内层标签的TTL值不变,均为252,MPLS外层标签变为251;R2收到后,往R1方向执行纯IP转发,IP层TTL值变为250;R1正常收到该数据包;
5、1.1.1.1-->5.5.5.5:R1产生,IP层TTL值为3,往R2方向转发;R2收到后,往R3方向执行标签转发,IP层、MPLS内层标签、MPLS外层标签的TTL值均为2;R3收到后,往R4方向执行标签交换,IP层、MPLS内层标签的TTL值不变,均为2,MPLS外层标签变为1;R4收到后,由于TTL值为1,执行丢弃;
6、45.1.1.4-->1.1.1.1:R4产生,目的IP为1.1.1.1,执行IP转发,查看路由表(vrf B路由表),往R5方向纯IP转发,IP层TTL值为255;R5收到后,根据路由表,再转发给R4,IP层TTL值为254;R4收到后,往R3方向执行标签转发,IP层、MPLS内层标签、MPLS外层标签的TTL值均为253;R3收到后,往R2方向执行标签交换,IP层、MPLS内层标签的TTL值不变,均为253,MPLS外层标签变为252;R2收到后,往R1方向执行纯IP转发,IP层TTL值变为251;R1正常收到该数据包;
7、1.1.1.1-->5.5.5.5:R1产生,IP层TTL值为4,往R2方向转发;R2收到后,往R3方向执行标签转发,IP层、MPLS内层标签、MPLS外层标签的TTL值均为3;R3收到后,往R4方向执行标签交换,IP层、MPLS内层标签的TTL值不变,均为3,MPLS外层标签变为2;R4收到后,执行IP转发,查看路由表(vrf B路由表),往R5方向纯IP转发,IP层TTL值为1;数据包正常到达R5;
8、45.1.1.5-->1.1.1.1:R5产生,目的IP为1.1.1.1,执行IP转发,查看路由表,往R4方向纯IP转发,IP层TTL值为255;R4收到后,往R3方向执行标签转发,IP层、MPLS内层标签、MPLS外层标签的TTL值均为254;R3收到后,往R2方向执行标签交换,IP层、MPLS内层标签的TTL值不变,均为254,MPLS外层标签变为253;R2收到后,往R1方向执行纯IP转发,IP层TTL值变为252;R1正常收到该数据包;
表格的最后一行“每个网段通过的数据包数量”和抓包截图的包数量进行对比,可以确认包数量一致。
六、 问题原因和解决
回到R5没有发布默认路由,R1 traceroute R5第三跳为星号的情况,观察各个网段的数据包情况,如下截图所示:
R1-R2
R2-R3
R3-R4
R4-R5
对比R5发布默认路由时,各网段经过的数据包的情况,可以发现区别在于:R5没有发布默认路由时,少了数据包6(即:45.1.1.4到1.1.1.1),即上面表格中,红色字体部分数据包,其他数据包不变;那么,也就可以认为,R4收到数据包5之后,没有成功发出数据包6,这是为什么?
首先想到的是,R4上有没有去往1.1.1.1的路由呢?
R4上有三个路由表,全局路由表、vrf B路由表和vrf C路由表,那么R4应该依照哪个路由表来转发呢?数据包6是用于对数据包5的回应,那么数据包5属于哪个VRF?数据包5源于1.1.1.1,目的为5.5.5.5,在R4上之后VRF B Export了路由,所以数据包5属于VRF B,数据包6也应该依据VRF B路由表来转发。
查看数据包5的MPLS内层标签,为19;
查看R4上bgp分配的标签,VRF B为5.5.5.5/32分配的标签是19,而VRF C为5.5.5.5/32分配的标签是20,证明了数据包5属于VRF B。
R4#show bgp vpnv4 uni all labels
Network Next Hop In label/Out label Route Distinguisher: 1:1
1.1.1.1/32 2.2.2.2 nolabel/19 Route Distinguisher: 2:2 (B)
5.5.5.5/32 45.1.1.5 19/nolabel Route Distinguisher: 3:3 (C)
1.1.1.1/32 2.2.2.2 nolabel/19 5.5.5.5/32 45.2.2.5 20/nolabel
既然确定数据包6要按照VRF B路由表来转发,那么查看一下该路由表,如下所示,VRF B路由表中,并没有1.1.1.1的路由,这就是数据包6没有正常发送的原因。
R4#show ip route vrf B
Routing Table: B
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route o - ODR, P - periodic downloaded static route
Gateway of last resort is not set
5.0.0.0/32 is subnetted, 1 subnets
B 5.5.5.5 [20/0] via 45.1.1.5, 05:28:20 45.0.0.0/24 is subnetted, 1 subnets
C 45.1.1.0 is directly connected, FastEthernet0/1.1
为何VRF B路由表没有1.1.1.1的路由?这是VRF规划的原因,VRF B只执行Export路由,VRF C只执行Import路由,所以VRF B无法直接从vpnv4邻居学习到路由,只能通过CE侧R5学习路由。
解决方案一:CE侧R5发布默认路由,R4上VRF B路由表中,可增加一条默认路由指向R5,所以数据包6就可以正常转发,这也是CCIE TS中使用的解决方案。路由表如下所示:
R4#show ip route vrf B
Routing Table: B
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route o - ODR, P - periodic downloaded static route
Gateway of last resort is 45.1.1.5 to network 0.0.0.0
5.0.0.0/32 is subnetted, 1 subnets
B 5.5.5.5 [20/0] via 45.1.1.5, 05:34:40 45.0.0.0/24 is subnetted, 1 subnets
C 45.1.1.0 is directly connected, FastEthernet0/1.1 B* 0.0.0.0/0 [20/0] via 45.1.1.5, 00:01:12
解决方案二:在R4的VRF B中增加一条静态路由,如下所示,同样可以使R4正常转发数据包6;这个方案不具备可扩展性,只是再一次证明数据包6需要通过VRF B的路由表在转发。
R4(config)#ip route vrf B 1.1.1.1 255.255.255.255 45.1.1.5
Routing Table: B
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route o - ODR, P - periodic downloaded static route
Gateway of last resort is not set
1.0.0.0/32 is subnetted, 1 subnets S 1.1.1.1 [1/0] via 45.1.1.5
5.0.0.0/32 is subnetted, 1 subnets
B 5.5.5.5 [20/0] via 45.1.1.5, 00:01:09 45.0.0.0/24 is subnetted, 1 subnets
C 45.1.1.0 is directly connected, FastEthernet0/1.1
解决方案三:如果R4上,不分开两个VRF,分别执行Export和Import路由,而是在一个VRF中同时Export和Import路由,也不会出现本文所述的问题;当然,分开两个VRF,应该也是因特殊需求而规划的。
正在阅读:
CCIE V5.0 TS 之 MPLS VPN网络Traceroute问题分析06-06
2020年国家安全日主题教育活动心得总结03-17
市发改委2018年度干部选拔任用工作报告11-06
初中数学辅导2013全国数学中考冲刺押题训练2.3方程组06-03
小升初练习题01-17
(完整word)小学四年级《原地侧向投掷垒球》教学设计.doc04-10
五马小学九月份教学工作总结01-14
数学建模中常用的思想、方法和软件11-08
浙江2017年专利事业发展战略推进工作组织实施方案 - 图文04-12
母亲的信阅读答案04-10
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- Traceroute
- 分析
- 问题
- 网络
- CCIE
- MPLS
- 5.0
- VPN
- TS
- 加快农业产业化发展的几点建议
- 岩石力学题库(5)
- 行政管理学简答题
- 青山区首届青少年科技节活动手册
- 芥子园画传
- 2015春《学前教育专题》作业
- 关于第32届大连青少年科技创新大赛获奖-大连科学技术协会
- 钢结构吊装方案 - 图文
- 青钱柳基地扩建项目可行性研究报告
- 蔡雯新闻编辑学考试要点
- 企业管理概论复习题
- 2012年全国各地中考数学解析汇编20 二次函数的应用
- 生物化学练习题(201012)-复习及问题与答案
- 山西省猪牛羊屠宰企业名录137家
- 古典名著和现代生活中体现的人力资源管理问题浅析
- 学校的基本情况、师资条件、中高级职称、教学、办学理念、管理、
- 社会冷漠现象原因及对策探讨
- 物流成本管理大型作业指导书2014版
- 如何理解碧桂园提前采用新收入会计准则对财务报表的影响-会计实
- ZXONM E300 Installation Manual