馬 琳,李小川,朱紅衛,呂舒清,張 璞
(國網山東省電力公司信息通信公司,山東 濟南 250001)
隨著物聯網、云計算、虛擬化等技術的不斷出現與革新,新業務發展對承載網提出新的要求,大型的數據通信網急需不斷地提升性能和擴展性能以滿足新型業務和長遠發展的需求。對企業來講,數據通信網絡的業務保障和支撐能力對信息化建設的重要性不言而喻,有必要結合未來發展方向和實際需求推進數據通信網優化整合工作。在電力系統省級及以下電力數據通信網優化整合工作中,地市數據網和骨干網配置不同的AS域[1],然而普通的MPLSVPN都是在一個自治系統內運行的,沒有提供一個自治系統內的VPN信息向其他自治系統擴散的功能,因此需要解決VPN跨域的問題。
VPN是在公用的通信網上提供私有數據網絡的技術,MPLSVPN是指采用MPLS技術在寬帶網絡上構建企業IP專網,將公網與專網安全靈活高效地結合在一起。MPLSVPN能夠提高網絡使用率,把承載多種不同類型服務的網絡集成為一個單一的網絡,并加快了數據包的轉發速度。隨著企業內部站點數目的增多,異地相連變得越來越普遍,需要對現有協議進行擴展以支持跨域VPN。
網絡中VPN路由數目非常大,BGP協議是唯一支持大量路由的路由協議并且有很強的策略能力,可以很好地實現路由決策與數據控制[2]。基于BGP擴展實現的MPLSVPN路由設備主要包括CE、PE和P[3]:
CE(Custom Edge),直接與服務提供商相連的用戶設備,運行標準路由協議。
PE(Provider Edge Router),是骨干網上的邊緣路由器,通過EBGP、RIP和靜態路由與CE相連交換路由信息,主要負責VPN業務的接入。
P(Provider Router),骨干網上的核心路由器,主要完成路由和快速轉發功能。
根據RFC2547定義,跨域MPLS VPN主要有3種方式:Option A,Option B,Option C。 使用 Option C時ASBR不需要處理VPN信息,最符合VPN的要求[4],因此本文中主要使用的是Option C,即Multihop-EBGP方式。使用此方式的VPN路由信息傳遞可直接在源端和PE之間通過Multihop-EBGP傳遞,并在兩個AS的ASBR之間構建LSP公網路由,同時PE之間建立多跳連接直接傳遞VPN信息。在進行報文轉發時,域內使用二層標簽轉發,ASBR之間也采用兩層標簽轉發[5]。
以圖1所示數據通信網為例,網絡采用分層的拓撲結構。主要分為A級數據通信接入網、數據通信網、B級數據通信接入網。

圖1 數據通信網拓撲示意
數據通信網在A側部署了2臺路由器PE1、PE2作為邊界ASBR,在B側部署了2臺路由器RR1、RR2作為邊界ASBR,A側邊界ASBR與B側ASBR通過千兆鏈路以口字型結構互聯。
在數據通信網AS2中部署2臺二級RR設備,用來反射上級路由器和接入網路由,二級RR1與P-1互聯,二級RR2與P-2互聯,2臺RR間建立VPN鄰居關系,并具有相同的cluster-id。
第二匯聚點部署2臺P設備,第二匯聚點P-1與P-1以萬兆鏈路互聯。B側在AS2內部署2臺PE作為邊界ASBR,在本自治域內部署2臺RR作為ASBR,通過千兆鏈路以口字型結構互聯。
Option C跨域完成后,出現AS3域B級數據通信接入網中RR(H廠家,設備型號SR8808)與AS2域數據通信網二級RR(S廠家,設備型號C7609)的MP-EBGP鄰居關系震蕩現象,即MP-EBGP鄰居關系建立后經過3 min后鄰居關系會變為IDLE狀態,之后會再成功建立鄰居關系,過3 min后會再變為IDLE狀態,周而復始。在鄰居中斷后,由于需要釋放私網標簽,因此在B級RR上的日志會刷屏,導致B級RR的CPU利用率升高[6]。
首先檢查B級RR與邊界ASBR的EBGP鄰居關系正常,路由學習正常,路由表沒有出現路由條目震蕩。
在B級RR上打開bgp的debug調試,找到輸出內容中的:
*Jun5 01:01:59:1112000 SR8805-A RM/6/RMDEBUG:
BGP.:11.41.254.68 State is changed from ESTABLISHED to IDLE.
*Jun5 01:01:59:1112000 SR8805-A RM/6/RMDEBUG:
BGP.:11.41.254.68 Recv NOTIFICATION
Err/SubErr:4 /0 (Hold Timer Expired /ErrSub Code Unspecified)
Error data:NULL.
B級RR與二級RR的MP-EBGP鄰居關系由ESTABLISHED轉為IDLE是由于Hold Timer Expired/ErrSubCode Unspecified,TCP 連接中斷會導致Hold Timer時間超時,Hold Timer超時時間默認為3 min,此時間和鄰居關系每3 min中斷吻合。因此初步推斷問題原因是鏈路或其他原因導致TCP連接超時,進而影響鄰居關系。
傳輸鏈路已正常運行多年,而且跨域互聯鏈路更換光模塊和光纖后,問題依然存在,因此排除物理鏈路的問題。在測試ping包的過程中發現,用B級RR的回環口去ping二級RR的回環口,最大ping包只能到1 468 Byte,大于1 468 Byte的ping包不通。但是B級RR與邊界ASBR直連口ping 5 000 Byte的大包可以通過,二級RR的回環口ping邊界ASBR的回環口的5 000 Byte的大包也可以通過,邊界ASBR到二級RR的5 000 Byte的大包也可以ping通過。而且二級RR與邊界ASBR用回環口建立MP-EBGP鄰居關系也很穩定。通過分析,認為數據包在穿越邊界ASBR時數據包大小被做了限制,但是在邊界ASBR上并沒有對數據包字節數進行限制[7]。TCP數據包會填充至接口MTU的最大值,且大于1 468 Byte的數據包不能夠通過省邊界ASBR,因此修改地市RR的tcp封裝值,二級RR的tcp封裝置修改為1 200 Byte后,MP-EBGP鄰居關系震蕩問題得到解決。因而進一步驗證是由于數據包大小受限而引起的MP-EBGP鄰居關系震蕩[8]。
H廠家SR8800設備的一代普通業務板(SPE1010/SPE1020)CPU的MTU不能超過1 560 Byte,所以該設備無法接受超過1 560 Byte的協議報文。S廠家的C7609設備向該設備發送了超過1 560 Byte的BGP update報文,設備無法接收,所以C7609設備不斷地發送這些update報文,使得keepalive報文無法及時發送,最終導致鄰居中斷。BGP鄰居中斷后,兩端設備重新建立鏈接,由于建立鏈接的協議報文沒有超過1 560 Byte,設備能夠正常接收,所以BGP鄰居可以建立。但是當鄰居建立后,C7609設備向設備發送update報文時,前述問題又會出現,最后導致兩端設備BGP鄰居反復up/down。
H廠家SR8800設備的一代增強業務板和二代業務板不涉及該問題(其CPU的MTU等于jumbo幀的最大值),一代普通業務板只能通過保證設備和對端設備MTU值設置不超過1 560 Byte。考慮到更換板卡不是短時間能實現的,因此采取調整MTU值的辦法,推薦的MTU值為1 522~1 560 Byte,由于本次數據通信網優化整合改造涉及骨干網的MTU值統一為1 528 Byte,因此將跨域互聯鏈路的MTU值調整為1 528 Byte。并且將tcp值設為1 200 Byte的命令取消。按照解決方案操作后鄰居震蕩問題沒有再出現,鄰居震蕩問題得到徹底解決。
路由策略主要實現了對路由的過濾、設置等控制功能,通過改變路由屬性來改變網絡流量所經過的途徑,主要包括控制路由的發布、控制路由的接受、過濾和控制引入和設置特定的路由屬性。

圖2 數據通信網拓撲示意
在數據網優化整改工作中,按相關需求需要配置合理的路由匯總及過濾策略。如圖2所示在C市RR上進行路由匯總并在二級RR上進行路由過濾策略時,出現了下級單位跨域的一級業務無法正常訪問,而C市業務可以正常訪問的現象。路由過濾后A級接入網PE-1信息業務路由表中只存在C市的匯總路由,由此可以斷定二級RR針對C市的路由過濾策略已經生效。但是過濾策略一旦部署,C市下級單位就訪問不了上級的業務,C市的業務訪問不受影響。在二級RR將明細路由也放行后,下級單位就能夠訪問上級單位。
由于路由過濾后,A級接入網到C市的業務正常,到下級單位的業務不正常,因此推斷出可能是H廠家設備的問題,通過查找H廠家官方文檔,發現在跨域組網中出現popgo的動作 (先pop標簽再push標簽),用20 Byte描述符存在一個問題,兩個動作只帶了一個動作下來,導致報文封裝錯誤。
MARVELL推薦的解決方案,修改TTI某一保留bit位,可以把TT終結標志帶到下行,這樣下行就可以支持先pop再push操作了。而對于push入pop出的情況,目前微碼的解決方案是這樣的,通過報文描述符LLT標志位來判斷,如果LLT標志為是IPV4Route或者是IPV6Route,且報文類型是MPLS報文,則將標簽全部彈掉,然后根據MPLSCMD進行操作,從而達到支持先pop后push的操作。需要配置undo vpn l2vpn mix來解決上述問題,其作用為:該命令只有88 k設備有,16 k設備無該命令;目前88 k puma報文描述符為20 Byte,16 k puma報文描述符為24 Byte;報文都是在下行修改,上行對報文的操作都是通過報文描述符帶到下行;從24 Byte的報文描述符格式可以看到在第187 bit位有TT標志,所以24 Byte的報文描述符可以同時帶兩個動作下來(MPLSCMD、TT),20 Byte 的報文描述符只可以攜帶MPLSCMD一個動作;配置undo vpn l2vpn mix后,對于上行有pop、push兩個動作的時候,20 Byte的報文描述符中MPLSCMD為push,不配置該命令則為pop。
對大型數據信通網中的多品牌網絡設備跨域對接中出現的典型故障案例進行了技術分析,并給出了推薦的解決方式。通過分析跨域典型故障案例,為同類網絡環境下的跨域對接提供參考。
[1]徐志強,呂舟,徐坤.電力綜合數據網跨域VPN部署探討[J].中國新通信,2014,16(5):1-2.
[2]王柱.MP-EBGP網絡技術應用研究[J].安徽電子信息職業技術學院學報,2007,6(2):96-97.
[3]王俊.基于MPLS的跨域VPN研究[D].南京:南京郵電大學,2011.
[4]梁海英.基于MPLS跨域VPN若干問題研究[D].沈陽:東北大學,2008.
[5]羅恒洋.基于MPLS的二、三層VPN研究[J].計算機技術與發展,2009,19(1):63-66.
[6]李丞.MPLS VPN技術在電力綜合數據網中的應用[D].長春:吉林大學,2014.
[7]馬睿,何海洋,李長水.國網數據通信網跨域VPN的設計與兼容性實現[J].電力信息與通信技術,2016(12):80-84.
[8]孫杰.BGP路由策略沖突引發的路由振蕩研究[D].成都:電子科技大學,2014.