引言:筆者單位計劃將甲乙兩套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的排錯過程進行故障排查。
檢查公網路由學習是否正確,能發現對方的loopback0地址路由,并且能夠Ping通。
檢查公網設備之間的MPLS LDP鄰居關系是否正常,發現PE1和PE2之間能夠建立正常的MPLS LDP鄰居(鄰居狀態為operational)。
檢查公網隧道是否存在,發現PE1和PE2之間的公網隧道正常。
檢 查P E 1上 的192.168.0.1/24網 段 已經通過ip binding vpninstance 1命令綁定到VPN實 例1中,PE2上172.31.1.0/24的網段也已綁定到VPN實例1中,并且網段的端口都為UP狀態。
檢查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了。