路由汇聚引发网络故障
2016-11-26
引言:笔者单位计划将甲乙两套IP网络使用BGP MPLS VPN技术进行调整,使不同网络的纵向业务能够使用一条物理线路进行逻辑隔离,达到资源节约和便于管理的目的。操作中,由于设置不当导致网络故障。本文介绍故障的排查过程。
笔者所在单位计划将甲乙两套IP网络使用BGP MPLS VPN技术进行调整,使不同网络的纵向业务能够使用一条物理线路进行逻辑隔离,达到资源节约和便于管理的目的。调整前的甲、乙部分网络是相互独立的(如图1)。
此次调整是基于甲网络进行的,调整后乙网络的设备和线路取消,调整时将之前乙网络中的192.168.0.1/24和172.31.1.1/24划入调整后网络的VPN实例 1中(如图 2),两段网络能够互通,并与VPN实例1外的网络隔离。
图1 网络调整前的甲网络和乙网络
图2 调整中的网络(甲乙网络使用一套物理线路)
故障现象
在PE1路由器上能够看到位于VPN实例1中 的172.31.1.0/24的BGP路由,但是Ping不通172.31.1.1(172.31.1.0/24的网关)(如图3)。
排障过程
按 照BGP MPLS VPN的排错过程进行故障排查。
1.检查公网隧道是否存在
检查公网路由学习是否正确,能发现对方的loopback0地址路由,并且能够Ping通。
检查公网设备之间的MPLS LDP邻居关系是否正常,发现PE1和PE2之间能够建立正常的MPLS LDP邻居(邻居状态为operational)。
检查公网隧道是否存在,发现PE1和PE2之间的公网隧道正常。
2.检查本地VPN建立是否符合要求
检 查P E 1上 的192.168.0.1/24网 段 已经通过ip binding vpninstance 1命令绑定到VPN实 例1中,PE2上172.31.1.0/24的网段也已绑定到VPN实例1中,并且网段的端口都为UP状态。
3.检查MP-BGP私网路由传递是否正确
检查PE之间MP-BGP邻居是否建立成功,发现PE1和PE2之间能够建立正常的MP-BGP邻居(邻居状态为Established)。
图3 可看到172.31.1.0/24的BGP路由,但Ping不通
图4 路由汇聚配置
检查PE是否学习到远端用户的私网BGP路由,发现PE1能够发现PE2上172.31.1.0/24网段的BGP路由,但PE2不能发现PE1上192.168.0.1/24网段的BGP路由。
故障解决与分析
鉴于以上故障排查过程,只能再次查看PE1和PE2的配置,发现由于PE1的loopback0地址为10.0.0.1/32,而路由器下有三个用户网段,分别为10.0.1.0/24、10.0.2.0/24和10.0.3.0/24,为减少路由条目,使用了路由汇聚命令。将三条路由汇总为一条10.0.0.0/22的路由(如图4),loopback0的地址也被汇总为该条路由,此时,PE-2公网上只能收到一条10.0.0.0/22的汇总路由。
查阅MPLS的相关资料,根据MPLS的相关概念,一个FEC(转发等价类)只会为同一个路由分配标签,沿途所有的设备都必须具有相同的路由(前缀和掩码必须完全相同)才可以建成一条LSP。
在此次调整的网络中运行MPLS VPN的两台PE的loopback地址分别作为对端的next-hop地址存在,MPLS VPN外层隧道的源与目的分别是两台PE的loopback接口并以此建立FEC,但是PE2没有到PE1 loopback010.0.0.1/32的精确路由,所以没能建立一条LSP。
因此,使用MPLS转发的所有设备上,对于要使用标签转发的路由,都不能做路由聚合的操作。因此这个32位的主机地址需要精准指定,避免被错误聚合。
将a br-summary 10.0.0.0255.255.252.0这条命令去除后,就能正 常Ping通PE2上 的172.31.1.1了。