接前两篇MPLS-VPN的案例学习,本篇探讨的重点是:
1、抓包分析MPLS技术在MPLS VPN组网中具体分析?
2、CE的路由信息是如何被“透明”传输至对端CE路由器?
3、MPLS VPN网络故障排查?
由于客户A、客户B在技术上本质一样,所以为了聚焦主题我们本篇分析客户A网络,拓扑如下:
一、分析MPLS技术在MPLS VPN组网中的具体作用
1、在PE1、PE2上查看MPLS的LSP情况,分析vpn实例对应的标签
观察发现,在pe1上对应172.16.1.0/24网络的入标签是1030,pe2上对应172.16.2.0/24网络的入标签是1034
2、在pc1:172.16.1.2上ping测试pc2:172.16.2.2 并在pe1上抓包分析ge0/0/2口的数据包,查看数据包是否被加上了正确的LSP标签
3、总结分析
通过对mpls的LSP标签生成情况可知,当VRF配置完成后,MPLS会自动为VRF的FEC添加对应的LSP标签,并且在数据的第一跳给出MPLS的出标签与入标签,在最后一跳只需要给出MPLS的入标签即可,因为第一跳以后MPLS需要根据出标签1028找到去4.4.4.4的路径,当到达4.4.4.4以后再根据入标签1034将数据导入至VRF的FEC中。
二、CE的数据是如何被“透明传输”到对端CE中去的?
1、CE1通过路由协议向PE1发送路由信息
PE1通过动态路由协议来学习客户的路由,实际工作中直接配置到达CE的静态路由,必须要让PE设备知道其直连CE设备的客户路由,CE1与CE2间是完全独立的,不同的CE与PE交互路由可以使用的方式也不同,比如站点1使用了iBGP,站点2使用了OSPF协议;
2、PE1如何区分接入的不同客户CE设备
一台城域网BRAS设备下挂的政客客户专网非常多,作为PE设备如何区分并隔离不同客户的路由呢?这里需要MPLS VPN中的重要部分VRF(虚拟路由转发)支持,在华为设备上,一个VRF也叫VPN实例或者理解为一台虚拟路由器,有多少个不同的客户接入PE,在PE上就需要创建多少个VRF为客户服务,比如前两篇有两个客户接入PE,就需要在PE上创建2个VRF。
VRF就和真实的路由器功能一样,有独立的路由表、FIB表、动态路由协议进程及接口等
ip vpn-instance A
ipv4-family
route-distinguisher 64538:100
vpn-target 64538:1 export-extcommunity
vpn-target 64539:2 import-extcommunity
route distinguisher -RD 路由区分码:用来构成唯一的VPNv4前缀,解决MPLS VPN网络中IPV4地址空间冲突问题。
RD有两种type,当type=1时,使用ipv4地址:自行分配数字,实际配置中type=2,使用AS号:自行分配数字的格式比如上例:route-distinguisher 64538:100
vpn-target -RT -route target,路由目标:用来控制VPN路由在不同站点点的发布与接收。
发布方向:直接连接CE的方向,比如:vpn-target 64538:1 export-extcommunity
接收方向:连接另一头PE的方向,比如:vpn-target 64539:2 import-extcommunity
3、PE1与PE2建立MP-BGP对等体连接,相互宣告自身的路由信息;
PE之间运行的是MP-BGP多协议的BGP,经过扩展的BGP协议能够承载VPNv4路由,在经过第1、2步骤后,PE1的VRF路由表里已经学习到了CE1中客户的路由172.16.1.0/24,接下去要让MP-BGP知晓这些路由,如果PE1-CE1之间运行的是非BGP协议,本例中PE1-CE1运行的是BGP,PE2-CE2运行的是OSPF,所以需要将PE2的VRF路由表中的客户路由重发布到BGP中,PE1-CE1之间运行的已经是BGP了,不用再做重发布了。
客户的IPv4路由被注入MP-BGP后,RD被添加到了这些IPv4路由前缀前面,就构成了VPNv4路由前缀,同时RTs也被附加到VPNv4路由前缀。
在PE1上通过执行disp bgp vpnv4 vpn-instance A routing-table 查看完整的VPNv4路由信息
<PE1>disp bgp vpnv4 vpn-instance A routing-table
BGP Local router ID is 1.1.1.1
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
VPN-Instance A, Router ID 172.16.0.1:
Total Number of Routes: 3
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 172.16.0.4/30 4.4.4.4 0 100 0 ?
*> 172.16.1.0/24 172.16.0.2 0 0 64538i
*>i 172.16.2.0/24 4.4.4.4 3 100 0 ?
观察发现PE1上的VRF A中172.16.1.0/24网络是通过IBGP的AS64538导入的路由,172.16.2.0/24,172.16.0.4/30是由MP-BGP从4.4.4.4PE2上学习到的。我们在PE2上通过执行disp bgp vpnv4 vpn-instance A routing-table 查看完整的VPNv4路由信息
<PE2>disp bgp vpnv4 vpn-instance A routing-table
BGP Local router ID is 4.4.4.4
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
VPN-Instance A, Router ID 172.16.0.5:
Total Number of Routes: 3
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 172.16.0.4/30 0.0.0.0 0 0 ?
*>i 172.16.1.0/24 1.1.1.1 0 100 0 64538i
*> 172.16.2.0/24 0.0.0.0 3 0 ?
如上面在PE1上查看VPNv4路由一样,172.16.1.0/24是通过MP-BGP从1.1.1.1PE1上学习的路由,其它两条是通过本地PE2-CE2的OSPF路由进程中导入的。
PE1上查看mpls分配给BGP LSP的FEC标签。
<PE1>disp mpls lsp vpn-instance A
-------------------------------------------------------------------------------
LSP Information: BGP LSP
-------------------------------------------------------------------------------
FEC In/Out Label In/Out IF Vrf Name
172.16.1.0/24 1030/NULL -/- A
PE1上查看客户A的VPNv4路由前缀
<PE1>disp ip vpn-instance A
VPN-Instance Name RD Address-family
A 64538:100 IPv4
还可以使用disp bgp vpnv4 all routing-table 172.16.1.0直接在一屏中查看VRF的RD RT,BGP-MP的对等体信息,MPLS标签信息。
PE2上查看mpls分配给BGP LSP的FEC标签。
<PE2>disp mpls lsp vpn-instance A
-------------------------------------------------------------------------------
LSP Information: BGP LSP
-------------------------------------------------------------------------------
FEC In/Out Label In/Out IF Vrf Name
172.16.0.4/30 1033/NULL -/- A
172.16.2.0/24 1034/NULL -/- A
PE2上查看客户A的VPNv4路由前缀
<PE2>disp ip vpn-instance A
VPN-Instance Name RD Address-family
A 64539:200 IPv4
抓包分析PE2的GE0/0/2口观察其如何与PE1进行路由交互的详细实现过程。
4、总结一下
CE1上的路由通过iBGP协议交换IPV4路由信息给PE1,PE1创建VRF A并绑定接口用于接收和交互CE1的路由,同时交互来的CE1路由转换为BGP的VPNv4路由信息,由于PE1与PE2建立了扩展BGP-MP对等体关系,所以PE1和PE2通过BGP-MP的update消息来交换双方的VPNv4路由信息,最后,PE2通过将VPNv4路由注入PE2与CE2交互路由的OSPF进程中,让CE2通过OSPF协议动态学习到CE1的路由信息,完成CE1至CE2的路由信息相互学习。
三、MPLS VPN网络故障排查?
PE上没有导入CE路由信息导致链路不通
这个故障特别容易发生在PE-CE间路由交互不适用BGP协议的时候,比如在PE2-CE2上交互路由使用的是OSPF路由协议,这类故障通过在客户侧的电脑上或者在CE的路由器上追踪对方CE的客户侧地址,通过跟踪路由信息发现故障点在哪个PE节点上,比如下面:
1、跟踪从CE1->CE2的路由信息
PC>tracert 172.16.2.2
traceroute to 172.16.2.2, 8 hops max
(ICMP), press Ctrl+C to stop
1 172.16.1.1 16 ms <1 ms 15 ms
2 172.16.0.1 32 ms 15 ms 16 ms
3 10.0.23.2 47 ms 47 ms 47 ms
4 10.0.33.2 31 ms 47 ms 47 ms
5 172.16.0.5 46 ms 32 ms 31 ms
6 * * *
7 * * *
8 * * *
2、跟踪从CE2->CE1的路由信息
PC>tracert 172.16.1.2
traceroute to 172.16.1.2, 8 hops max
(ICMP), press Ctrl+C to stop
1 * * *
2 * * *
3 * * *
4 * * *
5 * * *
6 * * *
7 * *
两边路由跟踪信息一结合,很明显问题出在PE2上,因为从CE1上来的路由到PE2为止没有继续转发,并且从CE2上来的信息PE2也没有转发。说明在PE2上的与CE2交互路由的OSPF中没有导入BGP信息。
下面是PE2-CE2路由交互的OSPF正确配置
ospf 100 vpn-instance A
import-route bgp
area 0.0.0.0
network 172.16.0.4 0.0.0.3
正确配置中少了import-route bgp这一条。
PE1与PE2之间不能学习到对方的CE路由信息,主要观察BGP-MP对等体关系是否构建成功。
[PE2]disp bgp vpnv4 all peer
BGP local router ID : 4.4.4.4
Local AS number : 2345
Total number of peers : 2 Peers in established state : 2
Peer V AS MsgRcvd MsgSent OutQ Up/Down State Pre
fRcv
1.1.1.1 4 2345 415 425 0 06:50:14 Established
3
<PE1>disp bgp vpnv4 all peer
BGP local router ID : 1.1.1.1
Local AS number : 2345
Total number of peers : 2 Peers in established state : 2
Peer V AS MsgRcvd MsgSent OutQ Up/Down State Pre
fRcv
4.4.4.4 4 2345 426 421 0 06:51:02 Established
3