一、内容
1.配置拓扑中的网络设备,Internet区域配置公网地址,LAN1和LAN2 为两个同一公司的两个私网,LAN1中R4-R5的网段为10.1.1.0/24,LAN2中R6-R7的网段为192.168.1.0/24。拓扑中其余网段IP地址采用课堂上常用IP地址分配方式分配。采用MPLS/VPN连通两个分离的私网LAN1和LAN2,使其组成一个大私网。
2.说明MPLS/VPN的工作原理,抓包辅助说明。
3.在R5上ping通R7,结合MPLS/VPN工作原理说明数据包的传输过程,抓包说明。
二、实现方法
(1) 配置拓扑中的网络设备,Internet区域配置公网地址,LAN1和LAN2 为两个同一公司的两个私网,LAN1中R4-R5的网段为10.1.1.0/24,LAN2中R6-R7的网段为192.168.1.0/24。拓扑中其余网段IP地址采用课堂上常用IP地址分配方式分配。采用MPLS/VPN连通两个分离的私网LAN1和LAN2,使其组成一个大私网。
1)按照课堂常用地址分配规则,配置各路由器的接口ip地址,以及路由器的环回地址,其中R4-R5的网段为10.1.1.0/24,R6-R7的网段为192.168.1.0/24。
1、R1
R1#conf t
Enter configuration commands, one perline. End with CNTL/Z.
R1(config)#int f0/0
R1(config-if)#ip add 12.12.12.1255.255.255.0
R1(config-if)#no shut
*Mar 1 00:03:52.551: %LINK-3-UPDOWN: InterfaceFastEthernet0/0, changed state to up
*Mar 1 00:03:53.551: %LINEPROTO-5-UPDOWN: Line protocolon Interface FastEthernet0/0, changed state to up
R1(config-if)#int f1/0
R1(config-if)#ip add 14.14.14.1255.255.255.0
R1(config-if)#no shut
*Mar 1 00:04:25.807: %LINK-3-UPDOWN: InterfaceFastEthernet1/0, changed state to up
*Mar 1 00:04:26.807: %LINEPROTO-5-UPDOWN: Lineprotocol on Interface FastEthernet1/0, changed state to up
R1(config-if)#int loopback 0
*Mar 1 00:04:49.151: %LINEPROTO-5-UPDOWN: Lineprotocol on Interface Loopback0, changed state to up
R1(config-if)#ip add 1.1.1.1 255.255.255.255
R1(config-if)#no shut
R1(config-if)#exit
2、R2
R2#conf t
Enter configuration commands, one perline. End with CNTL/Z.
R2(config)#int f0/0
R2(config-if)#ip add 12.12.12.2255.255.255.0
R2(config-if)#no shut
*Mar 1 00:07:05.727: %LINK-3-UPDOWN: InterfaceFastEthernet0/0, changed state to up
*Mar 1 00:07:06.727: %LINEPROTO-5-UPDOWN: Lineprotocol on Interface FastEthernet0/0, changed state to up
R2(config-if)#int f1/0
R2(config-if)#ip add 23.23.23.2255.255.255.0
R2(config-if)#no shut
*Mar 1 00:07:33.419: %LINK-3-UPDOWN: InterfaceFastEthernet1/0, changed state to up
*Mar 1 00:07:34.419: %LINEPROTO-5-UPDOWN: Lineprotocol on Interface FastEthernet1/0, changed state to up
R2(config-if)#int loopback 0
*Mar 1 00:07:43.143: %LINEPROTO-5-UPDOWN: Lineprotocol on Interface Loopback0, changed state to up
R2(config-if)#ip add 2.2.2.2255.255.255.255
R2(config-if)#no shut
R2(config-if)#exit
3、R3
R3#conf t
Enter configuration commands, one perline. End with CNTL/Z.
R3(config)#int f1/0
R3(config-if)#ip add 23.23.23.3255.255.255.0
R3(config-if)#no shut
*Mar 1 00:09:35.339: %LINK-3-UPDOWN: InterfaceFastEthernet1/0, changed state to up
*Mar 1 00:09:36.339: %LINEPROTO-5-UPDOWN: Lineprotocol on Interface FastEthernet1/0, changed state to up
R3(config-if)#int f0/0
R3(config-if)#ip add 36.36.36.3255.255.255.0
R3(config-if)#no shut
*Mar 1 00:10:39.443: %LINK-3-UPDOWN: InterfaceFastEthernet0/0, changed state to up
*Mar 1 00:10:40.443: %LINEPROTO-5-UPDOWN: Lineprotocol on Interface FastEthernet0/0, changed state to up
R3(config-if)#int loopback 0
*Mar 1 00:11:02.407: %LINEPROTO-5-UPDOWN: Lineprotocol on Interface Loopback0, changed state to up
R3(config-if)#ip add 3.3.3.3255.255.255.255
R3(config-if)#no shut
R3(config-if)#exit
4、R4
R4#conf t
Enter configuration commands, one perline. End with CNTL/Z.
R4(config)#int f1/0
R4(config-if)#ip add 14.14.14.4255.255.255.0
R4(config-if)#no shut
*Mar 1 00:26:35.359: %LINK-3-UPDOWN: InterfaceFastEthernet1/0, changed state to up
*Mar 1 00:26:36.359: %LINEPROTO-5-UPDOWN: Lineprotocol on Interface FastEthernet1/0, changed state to up
R4(config-if)#int f0/0
R4(config-if)#ip add 10.1.1.4 255.255.255.0
R4(config-if)# no shut
*Mar 1 00:27:01.127: %LINK-3-UPDOWN: InterfaceFastEthernet0/0, changed state to up
*Mar 1 00:27:02.127: %LINEPROTO-5-UPDOWN: Lineprotocol on Interface FastEthernet0/0, changed state to up
R4(config-if)#int loopback 0
*Mar 1 00:27:11.419: %LINEPROTO-5-UPDOWN: Lineprotocol on Interface Loopback0, changed state to up
R4(config-if)#ip add 4.4.4.4255.255.255.255
R4(config-if)#no shut
R4(config-if)#exit
5、R5
R5#conf t
Enter configuration commands, one perline. End with CNTL/Z.
R5(config)#int f0/0
R5(config-if)#ip add 10.1.1.5 255.255.255.0
R5(config-if)#no shut
*Mar 1 00:29:21.459: %LINK-3-UPDOWN: InterfaceFastEthernet0/0, changed state to up
*Mar 1 00:29:22.459: %LINEPROTO-5-UPDOWN: Lineprotocol on Interface FastEthernet0/0, changed state to up
R5(config-if)#int loopback 0
*Mar 1 00:28:50.803: %LINEPROTO-5-UPDOWN: Lineprotocol on Interface Loopback0, changed state to up
R5(config-if)#ip add 5.5.5.5255.255.255.255
R5(config-if)#no shut
R5(config-if)#exit
6、R6
R6#conf t
Enter configuration commands, one perline. End with CNTL/Z.
R6(config)#int f0/0
R6(config-if)#ip add 36.36.36.6255.255.255.0
R6(config-if)#no shut
*Mar 1 00:31:02.671: %LINK-3-UPDOWN: InterfaceFastEthernet0/0, changed state to up
*Mar 1 00:31:03.671: %LINEPROTO-5-UPDOWN: Lineprotocol on Interface FastEthernet0/0, changed state to up
R6(config-if)#int f1/0
R6(config-if)#ip add 192.168.1.6255.255.255.0
R6(config-if)#no shut
*Mar 1 00:31:30.227: %LINK-3-UPDOWN: InterfaceFastEthernet1/0, changed state to up
*Mar 1 00:31:31.227: %LINEPROTO-5-UPDOWN: Lineprotocol on Interface FastEthernet1/0, changed state to up
R6(config-if)#int loopback 0
*Mar 1 00:31:44.831: %LINEPROTO-5-UPDOWN: Lineprotocol on Interface Loopback0, changed state to up
R6(config-if)#ip add 6.6.6.6255.255.255.255
R6(config-if)#no shut
R6(config-if)#exit
7、R7
R7#conf t
Enter configuration commands, one perline. End with CNTL/Z.
R7(config)#int f0/0
R7(config-if)#ip add 192.168.1.7255.255.255.0
R7(config-if)#no shut
*Mar 1 00:33:36.443: %LINK-3-UPDOWN: InterfaceFastEthernet0/0, changed state to up
*Mar 1 00:33:37.443: %LINEPROTO-5-UPDOWN: Lineprotocol on Interface FastEthernet0/0, changed state to up
R7(config-if)#int loopback 0
*Mar 1 00:33:47.483: %LINEPROTO-5-UPDOWN: Lineprotocol on Interface Loopback0, changed state to up
R7(config-if)#ip add 7.7.7.7255.255.255.255
R7(config-if)#no shut
R7(config-if)#exit
2)配置公网各路由器的动态路由协议(ospf)。
1、R1
R1(config)#router os 1
R1(config-router)#net 12.12.12.0 0.0.0.255a 0
R1(config-router)#net 1.1.1.1 0.0.0.0 a 0
R1(config-router)#router-id 1.1.1.1
2、R2
R2(config)#router os 1
R2(config-router)#net 0.0.0.0 0.0.0.0 a 0
*Mar 1 00:41:52.199: %OSPF-5-ADJCHG: Process 1,Nbr 1.1.1.1 on FastEthernet0/0 from LOADING to FULL, Loading Done
R2(config-router)#router-id 2.2.2.2
3、R3
R3(config)#router os 1
R3(config-router)#net 23.23.23.0 0.0.0.255a 0
*Mar 1 00:43:29.099: %OSPF-5-ADJCHG: Process 1,Nbr 2.2.2.2 on FastEthernet1/0 from LOADING to FULL, Loading Done
R3(config-router)#net 3.3.3.3 0.0.0.0 a 0
R3(config-router)#router-id 3.3.3.3
3)配置公网中路由器的mpls协议,标签协议采用ldp协议。
1、R1
R1(config)#int f0/0
R1(config-if)#mpls label protocol ldp
R1(config-if)#mpls ip
R1(config-if)#exit
2、R2
R2(config)#mpls label protocol ldp
R2(config)#int f0/0
R2(config-if)#mpls ip
*Mar 1 01:22:24.155: %LDP-5-NBRCHG: LDP Neighbor1.1.1.1:0 (1) is UP
R2(config-if)#int f1/0
R2(config-if)#mpls ip
R2(config-if)#exit
3、R3
R3(config)#int f1/0
R3(config-if)#mpls label protocol ldp
R3(config-if)#mpls ip
R3(config-if)#exit
4)配置私网各路由器的动态路由协议(rip)。
1、R4
R4(config)#router rip
R4(config-router)#v 2
R4(config-router)#no au
R4(config-router)#net 10.1.1.0
R4(config-router)#net 4.4.4.4
R4(config-router)#exit
2、R5
R5(config)#router rip
R5(config-router)#v 2
R5(config-router)#no au
R5(config-router)#net 0.0.0.0
R5(config-router)#exit
3、R6
R6(config)#router rip
R6(config-router)#v 2
R6(config-router)#no au
R6(config-router)#net 0.0.0.0
R6(config-router)#exit
4、R7
R7(config)#router rip
R7(config-router)# v 2
R7(config-router)#no au
R7(config-router)#net 0.0.0.0
R7(config-router)#exit
5)创建VRF。
1、R1
R1(config)#ip vrf vpn1
R1(config-vrf)#rd 100:1
R1(config-vrf)#exit
R1(config)#int f1/0
R1(config-if)#ip vrf forwarding vpn1
% Interface FastEthernet1/0 IPaddress 14.14.14.1 removed due to enabling VRF vpn1
R1(config-if)#ip add 14.14.14.1255.255.255.0
R1(config-if)#no shut
R1(config-if)#exit
R1(config)#ip vrf vpn1
R1(config-vrf)#route-target both 100:1
R1(config-vrf)#exit
2、R3
R3(config)#ip vrf vpn1
R3(config-vrf)#rd 100:1
R3(config-vrf)#route-target both 100:1
R3(config-vrf)#exit
R3(config)#int f0/0
R3(config-if)#ip vrf forwarding vpn1
% Interface FastEthernet0/0 IPaddress 36.36.36.3 removed due to enabling VRF vpn1
R3(config-if)#ip add 36.36.36.3255.255.255.0
R3(config-if)#no shut
R3(config-if)#exit
6)PE和CE路由器之间配置动态路由协议(ospf、rip)。
1、R1
R1(config)#router os 2 vrf vpn1
R1(config-router)#net 14.14.14.0 0.0.0.255a 0
R1(config-router)#exit
2、R3
R3(config)#router rip
R3(config-router)#address-family ip vrfvpn1
R3(config-router-af)#version 2
R3(config-router-af)#no au
R3(config-router-af)#net 36.36.36.0
R3(config-router-af)#exit
7)配置BGP协议。
1、R1
R1(config)#router bgp 100
R1(config-router)#nei 3.3.3.3 remote-as 100
R1(config-router)#nei 3.3.3.3 update-sourceloopback 0
R1(config-router)#nei 3.3.3.3 next-hop-self
R1(config-router)#address-family vpnv4
R1(config-router-af)#nei 3.3.3.3 activate
R1(config-router-af)#nei 3.3.3.3send-community both
R1(config-router-af)#exit
2、R3
R3(config)#router bgp 100
R3(config-router)#nei 1.1.1.1 remote-as 100
R3(config-router)#nei 1.1.1.1 update-sourceloopback 0
*Mar 1 01:59:08.039: %BGP-5-ADJCHANGE: neighbor 1.1.1.1 Up
R3(config-router)#nei 1.1.1.1 next-hop-self
R3(config-router)#address-family vpnv4
R3(config-router-af)#nei 1.1.1.1 activate
*Mar 1 01:59:57.419: %BGP-5-ADJCHANGE: neighbor1.1.1.1 Down Address family activated
*Mar 1 01:59:59.583: %BGP-5-ADJCHANGE: neighbor 1.1.1.1 Up
R3(config-router-af)#nei 1.1.1.1send-community both
R3(config-router-af)#exit
8)私网路由条目重分布进公网。
1、R4
R4(config)#router os 2
R4(config-router)#net 14.14.14.0 0.0.0.255a 0
*Mar 1 02:29:31.707: %OSPF-5-ADJCHG: Process 2,Nbr 14.14.14.1 on FastEthernet1/0 from LOADING to FULL, Loading Done
R4(config-router)#redistribute rip
% Only classful networks will beredistributed
R4(config-router)#redistribute rip subnets
R4(config-router)#exit
2、R1
R1#conf t
Enter configuration commands, one perline. End with CNTL/Z.
R1(config)#router bgp 100
R1(config-router)#address-family ipv4 vrfvpn1
R1(config-router-af)#redistributeospf 2 vrf vpn1 match internal external 1 external 2
R1(config-router-af)#exit
3、R3
R3#conf t
Enter configuration commands, one perline. End with CNTL/Z.
R3(config)#router bgp 100
R3(config-router)#address-family ipv4 vrfvpn1
R3(config-router-af)#redistribute rip
R3(config-router-af)#exit
9)公网路由条目重分布进私网。
1、R1
R1(config)#router os 2
R1(config-router)#redistribute bgp 100subnets
R1(config-router)#exit
2、R3
R3#conf t
Enter configuration commands, one perline. End with CNTL/Z.
R3(config)#router rip
R3(config-router)#address-family ipv4 vrfvpn1
R3(config-router-af)#redistribute bgp 100metric 10
R3(config-router-af)#exit
3、R4
R4#conf t
Enter configuration commands, one perline. End with CNTL/Z.
R4(config)#router rip
R4(config-router)#redistribute ospf 2metric 10
R4(config-router)#exit
10) 查看路由表。
(2) 说明MPLS/VPN的工作原理,抓包辅助说明。
1)MPLS/VPN的工作原理。
MPLS/VPN是一种三层VPN,也是实施最为广泛的一种MPLS技术。MPLS/VPN是指采用MPLS(多协议标记转换)技术在骨干的宽带IP网络上构建企业IP专网,实现跨地域、安全、高速、可靠的数据、语音、图像多业务通信,并结合差别服务、流量工程等相关技术,将公众网可靠的性能、良好的扩展性、丰富的功能与专用网的安全 、灵活、高效结合在一起。
MPLS/VPN网络主要由CE、PE和P等3部分组成:
CE(Customer Edge Router)用户网络边缘路由器设备,直接与服务提供商网络相连,它“感知”不到VPN的存在;
PE(Provider Edge Router)服务提供商边缘路由器设备,与用户的CE直接相连,负责VPN业务接入,处理VPN-IPv4路由,是MPLS三层VPN的主要实现者;
P(Provider Router)服务提供商核心路由器设备,负责快速转发数据,不与CE直接相连。
在整个MPLS/VPN中,P、PE设备需要支持MPLS的基本功能,CE设备不必支持MPLS。
MPLS/VPN的网络采用标签交换,一个标签对应一个用户数据流,非常易于用户间数据的隔离,利用区分服务体系可以轻易地解决困扰传统IP网络的QoS/CoS问题,MPLS自身提供流量工程的能力,可以最大限度地优化配置网络资源,自动快速修复网络故障,提供高可用性和高可靠性。
1、虚拟路由转发VRF(virtual routing forwarding)
VRF是一种VPN路由和转发的实例。包括三部分:与私网(用户)相关的路由表、CE与PE相连的PE端口和CE与PE间的动态路由协议。每一个独立的VRF都有一张独立的路由表。因为在PE路由器上的路由需要被相互隔离,以确保对每一个用户VPN的私有性,这张私有路由表就被称为VRF路由表。在PE路由器上,存在有多个VRF表,这些VRF表是和PE路由器上的一个或多个子接口相对应的,用于存放这些子接口所属VPN的路由信息。通常情况下,VRF表中只包含一个VPN的路由信息,但是当子接口属于多个VPN时,其所对应的VRF表中就包含了子接口所属的所有VPN的路由信息。VRF路由表和ciscoIOS的全局路由表是没有什么区别的,只不过这个路由表仅仅是对某一个VRF有效,并且和其他的路由表之间是完全隔离开的。不同的VRF就像把路由器从逻辑上划分成了不同的子路由器一样的概念,一个实际的物理路由器成为了多个虚拟逻辑路由器。
对于每一个VRF,都具有路由区分符(Route Distinguisher:RD)和路由目标(Route Target:RT)两大属性。
2、路由区分符RD(route distinguish)
RD是VRF路由区分符,RD具有全局唯一性,解决地址冲突问题,VPNV4前缀=RD+IPv4前缀。RD是一个64比特的字段,用于在MP-BGP运载VRF前缀时,确保这些前缀的唯一性。VPN-IPv4地址对客户端设备来说是不可见的,它只用于骨干网络上路由信息的分发。RD并不会说明该前缀属于哪个VRF,RD的功能并不是VPN标示符,因为在一些更为复杂得环境中,可能一个VPN存在多个RD。在PE路由器上的每个VRF实例必须要分配一个RD,格式为:ASN:nn或者IP address:NN,nn代表数字。
理论上可以为每个VPN实例配置一个RD。通常建议为每个VPN都配置相同的RD,不同的VPN配置不同的RD。但是实际上只要保证存在相同地址的两个VPN实例的RD不同即可,不同的VPN可以配置相同的RD,相同的VPN也可以配置不同的RD。
如果两个VPN实例中存在相同的地址,则一定要配置不同的RD,而且两个VPN实例一定不能互访,间接互访也不成。
RD并不会影响不同VPN实例之间的路由选择以及VPN的形成,这些事情由RT搞定。
PE从CE接收的标准的路由是IPv4路由,如果需要发布给其他的PE路由器,此时需要为这条路由附加一个RD。
3、路由目标RT(Route target)
对于VRF的唯一标识符是用的RD,而核心网PE到PE的路由传输则用的是Route Target。一个RT是一个BGP扩展团体,说明了哪些路由需要从MP-BGP中注入到VRF,它决定VPN路由的收发和过滤,PE依靠RT属性区分不同VPN之间路由。RT分为Routetarget export和Route target import。Route target export表示输出的VPNv4路由收到了额外的BGP扩展团体,在一个VPN实例中,在发布路由时应给路由条目带上什么RD;Route target import从MP-BGP那里收到的Vpnv4路由核查可以匹配的扩展团体。如果最终找到了匹配的RT,这个前缀会以IPv4路由的身份被添加到VRF路由表中,否则该前缀会被拒绝。
4、MPLS-BGP
对于使用了扩展属性MP_REACH_NLRI和扩展团体属性RT的BGP,我们称之为MP-BGP协议。
BGP-4仅仅支持IPv4,MP-BGP是为了让BGP可以用于传输更多协议(IPv6,IPX,...)的路由信息而进行的扩展。
为了保持兼容性,MP-BGP仅仅添加了两个BGP属性:MP_REACH_NLRI( MP_UNREACH_NLRI )和扩展团体属性。
MP_REACH_NLRI(MP_UNREACH_NLRI )可以用在BGP Update消息中用于通告或废止网络可达性信息。
5、MPLS/VPN的工作原理
前提是PE路由器的各个VPN实例上都配置了RT规则,在发布路由时应给路由条目带上什么RD;带有什么RD的路由条目可以进到哪个VPN里。
a) 标签分配:
PE和P路由器通过骨干网具有到bgp下一跳的可达性;通过运行IGP和LDP,分配标签,建立LSP,获得到BGP下一跳的LSP通道。PE知道自己的直连网段,将此网段视为FEC,并为此FEC分配了本地标签,然后将本地标签与FEC关联起来,形成一个映射关系(本地标签:FEC),此映射关系用来指导自己对此网段为目的IP的数据包进行操作。PE将这个映射关系发送给自己的上游路由器。上游路由器收到消息后,将此网段视为FEC,并为此FEC分配了本地标签,然后将本地标签与FEC关联起来,形成一个映射关系(本地标签:FEC),此映射关系用来指导自己对此网段为目的IP的数据包进行操作——将我的本地标签交换为下游路由器标签。以此类推,建立LSP。
b) 传递路由条目:
PE和CE路由器交换路由信息,CE运行标准路由协议。PE维护独立的路由表:公网路由表和VPN实例的私网路由表。PE知道路由条目是从哪个端口进来的,因为这个端口对应某一个VPN,所以PE查询对应VPN实例的路由表,将路由条目学习进去。PE要将此路由条目通过MPLS/VPN骨干网发布本地的VPN路由信息发送给MP-BGP邻居,发送端 PE通过使用 MP-iBGP 将VPN实例路由利用export-target属性,让路由条目携带上RD和标签,从本地发布出去。接受PE 收到VPN-IPv4的MP-iBGPupdates 时,判断收到的export是否与本地的VPN实例的import相等(带有什么RD的路由条目可以进到哪个VPN里),相等就加入到相应的VPN实例路由表中,否则丢弃。VPN-v4 路由变为IPV4路由。私网标签保留,留做转发时使用。再由本VPN实例的路由协议引入并转发给相应的CE。
c) 发送数据包:
入口PE收到CE的普通IP报文后,PE根据入接口所属的VPN实例查看相应的VPN转发表,查找下一跳和标签。为报文打上外层标签(用来指示如何到达BGP下一跳)和内层标签(表示报文的出接口或者属于哪个VPN实例(属于哪个VPN)),形成标签栈。倒数第二跳路由器弹出外层标签,根据下一跳发送至出口PE,出口PE路由器根据内层标签判断报文是去向哪个CE,弹出内层标签,用普通IP报文向目的CE进行转发。
2)抓包辅助说明MPLS/VPN的工作原理。
1、RD和RT(截图以R1发给R3的BGP update报文为例,R3发给R1的BGP update报文同理)
BGP update报文的拓展属性中可看到RD=100:1。
BGP update报文的拓展属性中可看到RT为100:1。
2 、MPLS-BGP(以R5 ping R7环回为例)
R4将源IP为10.1.1.5,目标IP为7.7.7.7的ping(request)包转发给R1,IP层TTL减一,request数据包从R1出去后,被添加了两层标签,有两层MPLS层。顶层MPLS层标签号为17,是MPLS的标签;底层MPLS层标签号为20,是BGP的标签。(数据包过来后,R1查去LAN2中的7.7.7.7的标签,查到出标签是20,添加底层标签,又查vrf路由表,发现去往7.7.7.7的下一跳为3.3.3.3,查mpls转发表,查到mpls域中去往3.3.3.3的数据包应打上编号为17的标签,添加顶层标签。)两个MPLS层的TTL直接与IP层的TTL相等,均为253。
通过show ip bgp vpnv4 all labels命令,可以查看bgp标签表,当目标地址为7.7.7.7时,R1会给数据包打上编号为20的底层标签。
也可以通过R1在发ping(request)包前,R3发送给R1的BGP update数据包中得到去往7.7.7.7应该打上什么底层标签。
通过show ip route vrf vpn1命令,可以查看R1的vrf路由表,当目标地址为7.7.7.7时,可知下一跳为3.3.3.3。
也可以通过R1在发ping(request)包前,R3发送给R1的BGP update数据包中得到去往7.7.7.7的下一跳为3.3.3.3。
通过show mpls forwarding-table命令,可以查看R1的mpls转发表LFIB,当目标地址为3.3.3.3时,R1会给数据包打上编号为17的顶层标签。
(3) 在R5上ping通R7,结合MPLS/VPN工作原理说明数据包的传输过程,抓包说明。(R5 ping通R7环回)
1)R5给R4发送源IP为10.1.1.5,目标IP为7.7.7.7的ping(request)包,且IP层TTL为255。
2)R4将源IP为10.1.1.5,目标IP为7.7.7.7的ping(request)包转发给R1,在进入MPLS域之前,request数据包只有IP层,没有MPLS层,且IP层TTL为254。
3)R4将源IP为10.1.1.5,目标IP为7.7.7.7的ping(request)包转发给R1,IP层TTL减一,request数据包从R1出去后,被添加了两层标签,有两层MPLS层。顶层MPLS层标签号为17,是MPLS的标签;底层MPLS层标签号为20,是BGP的标签。(数据包过来后,R1查去LAN2中的7.7.7.7的标签,查到出标签是20,添加底层标签,又查vrf路由表,发现去往7.7.7.7的下一跳为3.3.3.3,查mpls转发表,查到mpls域中去往3.3.3.3的数据包应打上编号为17的标签,添加顶层标签。)两个MPLS层的TTL直接与IP层的TTL相等,均为253。
通过show ip bgp vpnv4 all labels命令,可以查看bgp标签表,当目标地址为7.7.7.7时,R1会给数据包打上编号为20的底层标签。
也可以通过R1在发ping(request)包前,R3发送给R1的BGP update数据包中得到去往7.7.7.7应该打上什么底层标签。
通过show ip route vrf vpn1命令,可以查看R1的vrf路由表,当目标地址为7.7.7.7时,可知下一跳为3.3.3.3。
也可以通过R1在发ping(request)包前,R3发送给R1的BGP update数据包中得到去往7.7.7.7的下一跳为3.3.3.3。
通过show mpls forwarding-table命令,可以查看R1的mpls转发表LFIB,当目标地址为3.3.3.3时,R1会给数据包打上编号为17的顶层标签。
4)R1将源IP为10.1.1.5,目标IP为7.7.7.7的ping(request)包转发给R2,request数据包进入R2后,两层MPLS层的TTL减一为252,IP层的TTL不变,为253。倒数第二跳弹出,去除标签(因为3.3.3.3是R3的环回,直连,R2为倒数第二跳,倒数第一跳是R3)。数据包从R2出去,有一层MPLS层(原底层MPLS层),也有IP层。现顶层MPLS层(原底层MPLS层)标签号为20,是BGP的标签,是为去LAN2中的7.7.7.7打的标签。
通过show mpls forwarding-table命令,可以查看R2的mpls转发表LFIB,当目标地址为3.3.3.3时,R2会倒数第二跳弹出,去除标签。
5)R2将源IP为10.1.1.5,目标IP为7.7.7.7的ping(request)包转发给R3, request数据包进入R3后,MPLS层的TTL减一为251,赋给IP层的TTL,去除标签号为20的标签。数据包从R3出去,没有MPLS层,只有IP层,IP层的TTL为251。
6)R6将源IP为10.1.1.5,目标IP为7.7.7.7的ping(request)包转发给R7,且IP层TTL为250。
7)R7将源IP为7.7.7.7,目标IP为10.1.1.5的ping(reply)包转发给R6,且IP层TTL为255。
8)R6将源IP为7.7.7.7,目标IP为10.1.1.5的ping(reply)包转发给R3,在进入MPLS域之前,reply数据包只有IP层,没有MPLS层,且IP层TTL为254。
9)R6将源IP为7.7.7.7,目标IP为10.1.1.5的ping(rely)包转发给R3,IP层TTL减一,reply数据包从R3出去后,被添加了两层标签,有两层MPLS层。顶层MPLS层标签号为16,是MPLS的标签;底层MPLS层标签号为21,是BGP的标签。(数据包过来后,R3查去LAN1中的10.1.1.5的标签,查到出标签是21,添加底层标签,又查vrf路由表,发现去往10.1.1.5的下一跳为1.1.1.1,查mpls转发表,查到mpls域中去往1.1.1.1的数据包应打上编号为16的标签,添加顶层标签。)两个MPLS层的TTL直接与IP层的TTL相等,均为253。
通过show ip bgp vpnv4 all labels命令,可以查看bgp标签表,当目标地址为10.1.1.5时,R3会给数据包打上编号为21的底层标签。
也可以通过R3在发ping(reply)包前,R1发送给R3的BGP update数据包中得到去往10.1.1.5应该打上什么底层标签。
通过show ip route vrf vpn1命令,可以查看R3的vrf路由表,当目标地址为10.1.1.5时,可知下一跳为1.1.1.1。
也可以通过R3在发ping(reply)包前,R1发送给R3的BGP update数据包中得到去往10.1.1.5的下一跳为1.1.1.1。
通过show mpls forwarding-table命令,可以查看R3的mpls转发表LFIB,当目标地址为1.1.1.1时,R3会给数据包打上编号为16的顶层标签。
10) R3将源IP为7.7.7.7,目标IP为10.1.1.5的ping(reply)包转发给R2,reply数据包进入R2后,两层MPLS层的TTL减一为252,IP层的TTL不变,为253。倒数第二跳弹出,去除标签(因为1.1.1.1是R1的环回,直连,R2为倒数第二跳,倒数第一跳是R1)。数据包从R2出去,有一层MPLS层(原底层MPLS层),也有IP层。现顶层MPLS层(原底层MPLS层)标签号为21,是BGP的标签,是为去LAN1中的10.1.1.5打的标签。
通过show mpls forwarding-table命令,可以查看R2的mpls转发表LFIB,当目标地址为1.1.1.1时,R2会倒数第二跳弹出,去除标签。
11) R2将源IP为7.7.7.7,目标IP为10.1.1.5的ping(reply)包转发给R1, reply数据包进入R1后,MPLS层的TTL减一为251,赋给IP层的TTL,去除标签号为21的标签。数据包从R1出去,没有MPLS层,只有IP层,IP层的TTL为251。
12) R4将源IP为7.7.7.7,目标IP为10.1.1.5的ping(reply)包转发给R5,且IP层TTL为250。