淺談MPLS測試方法——概述
1 概述
MPLS作為一種轉發技術已經發展了很多年,起初以提高轉發效率而提出的這種技術經過多年發展因其本身良好的擴展性,為其賦予了新的生機。隨著基于MPLS技術的VPN應用、TE和QoS等各種應用不斷在各大網絡上部署,MPLS逐漸成為網絡世界中新熱點的同時,也逐漸成為網絡設備的賣點之一。
雖然MPLS轉發技術位于二、三層之間,但是其實現需要路由協議、LDP等標簽分配協議等上層協議作為支撐,并且為了實現基于MPLS的各種應用,還對很多上層協議進行了擴展。可以說,MPLS模塊涵蓋了眾多相關協議,是一個非常復雜的知識體系。這也為作為測試人員的我們提出了很高的要求。
說到測試方法,其實對于任何一個模塊,任何一個協議沒有一個固定的、一成不變的測試方法。不同的測試人員,測試手段不同、關注點不同、思維方式不同都能形成一套自己特有的測試方法,并且隨著測試不斷進行,對協議、對整個模塊的理解和對其應用的理解也在不斷深入,測試方法也隨之不斷豐富、完善。測試方法不斷豐富的同時,測試也會變得不斷深入。
本文是平時測試中使用的一些方法和遇到的一些問題粗略總結,算是拋磚引玉,希望不斷補充完善,共同豐富我們這個測試方法,共同提高測試水平!
需要特別指出的是,一個基于MPLS的重要應用:TE(Traffic Engineering)由于其具有相對獨立的知識體現和自身復雜性,將有專門文章介紹它的測試方法,本文將不對其進行討論。
2 MPLS基礎協議測試方法描述
MPLS基礎協議是指支撐MPLS VPN等各種應用的協議,包括:LDP、MBGP和各種路由協議多實例等。確保基礎協議功能完備是其他MPLS應用功能正常的保證。因此,這里首先總結一些對MPLS基本協議測試的方法。
說到協議測試,不外乎包括基本功能測試、協議一致性測試、互通測試和性能測試等幾個方面。協議測試方法也包括通用測試方法和根據不同協議而特有的測試方法,通用測試方法包括:命令行配置刪除、邊界值和非法值設置、接口板連接線熱插拔等,這些方法相信大家都已經掌握,本文也就不再將其羅列到各個部分測試方法描述中。這里主要討論的是我們在測試相關協議時需要關注、容易出現問題的方面,和在測試這些協議特性時通常使用的一些測試手段。
2.1 LDP測試方法
LDP(Label Distribute Protocol)是實現通用標簽分配協議,可服務于所有MPLS應用。由于LDP協議本身非常復雜,定義了不同的標簽分配模式、標簽控制模式和標簽保持模式,設備可被配置在多種模式下工作。同時,LDP還支持Loop-Detect等特性,使其測試組網、測試手段都非常復雜,下面我們從LDP協議幾個主要功能部分討論對它的測試。
2.1.1 基本功能測試
2.1.1.1 鄰居建立
LDP通過TCP建立鄰居關系,并在鄰居間直接傳遞標簽映射消息。協議規定,在兩個LSR設備直接只允許存在一個LDP會話關系(LDP Session),這也是測試會話功能的重點。主要測試方法包括:在兩臺LSR直接創建多個多種類型直連接口,并在物理接口上封裝各種類型的鏈路協議,包括:以太網、ATM、FR子接口,PPP、MP、MFR等,同時可以指定建立LDP會話使用的IP地址,包括各種物理接口IP地址、子接口和虛接口IP地址,地址借用接口IP地址,地址協商接口IP地址等,驗證此時LDP會話是否正確建立,LDP會話是否唯一。
設備支持在同一個接口上配置多個IP地址,同樣LDP支持利用這些子IP(Sub IP)建立會話關系。子IP又分為配置在主接口、子接口和各種虛接口上等不同組合。將接口和各種類型IP地址結合是測試LDP常常使用的方法。在測試LDP鄰居時,我們不但需要驗證相鄰設備之間建立LDP會話,還要測試任意兩臺設備之間創建Remote方式LDP會話。
LDP協議通過TCP建立鄰居間會話關系,同時也提供基于TCP MD5認證機制。與測試其它協議認證類似,在配置LDP認證后,關注是否會影響LDP會話建立,以及各種協議報文傳遞,TCP、LDP各種狀態顯示是否正確。特別需要注意的是,對于攜帶MD5認證信息的TCP鄰居,在顯示其狀態時會有一個星號“*”進行標識,這也是確認認證是否成功的方法之一。
反復Up/Down接口、子接口、虛接口狀態,插拔物理連接線,熱插拔接口板,修改接口IP地址等操作是否會影響LDP會話狀態。記得曾經出過這樣一個網上問題:由于連接兩臺設備之間的光電轉換器質量不好,引起LSR接口反復Up/Down,LDP會話反復建立,一定時間后LDP會話無法建立,重啟設備后恢復正常。在實驗室復現這個問題時還出現了由于不斷插拔物理連接線引起設備宕機的嚴重問題。
LDP會話建立另一個方面就是LDP能力和參數協商。在修改接口參數、LDP工作狀態參數后,LDP會話參數能否正確建立,協商后的參數和能力是否正確。
2.1.1.2 標簽分配
LDP是廣泛使用的標簽分配協議,主要功能是為不同FEC(路由)自動分配標簽,所以標簽分配是否正確是衡量協議是否正確工作的基本標準。LDP協議會為本地直連路由、動態路由分配標簽,將標簽和路由綁定關系封裝在MAP消息中傳遞給上游LSR,從而在MPLS域中產生對應該路由的LSP。前面提到,由于標簽分配模式、標簽控制模式和標簽保持模式的不同組合,LDP可能工作在多種模式下。而最常用的是DU+自由標簽保持+獨立標簽控制模式,這也是MPLS應用的主要方式。
LSP是LSR依據路由逐跳創建的,LSP出接口應與路由出接口保持一致,并且在V5版本上還支持為等價路由創建多條不同接口LSP。對LSP的測試包括LSP與路由同步,在路由或其下一跳發生變化時,LSP能否同步變化,切換時間不應過長。LSP完整建立包括在MPLS域內對所有路由都應建立對應的LSP(除缺省路由和聚合路由外)。LSP建立完成后,可以查看LSR上MPLS LSP、ILM、FTN(V5版本對應FIB)和NHLFE等表項,各個表項建立、相互關系應該一致正確。特別是在路由常常發生變化的網絡中,設備曾經出現過LSP已經刪除,標簽已經釋放,但是底層ILM和NHLFE表項未刪除導致轉發不通的問題。
由于設備支持全局標簽空間,LSR為每一條路由分配一個標簽,不同標簽對應不同的FEC。因此,對于不應出現LSR為不同FEC分配相同標簽的情況,保證在LSR上標簽與FEC對應的全局唯一性。同樣,在FEC對應路由消失后,LSR應及時釋放為其分配的標簽資源,并通過LDP消息通知上游鄰居。被釋放的標簽能夠被再次分配給其他FEC。特別是在大量路由出現路由振蕩時,應特別檢查是否會出現標簽未被釋放和不能重新分配的標簽泄漏現象。
LDP另一個常常會出現問題的地方就是同一路由在多條備份鏈路上反復切換、等價路由某些出接口反復振蕩時,LDP不能正確與路由變化保持同步,某些表項反復建立導致某些已經過期的表項無法及時刪除,ILM、FTN與NHLFE對應不一致引起MPLS轉發不通。
測試LSP時一個重要測試工具就是LSP ping命令。普通的ping命令只能檢測路由可達性,對判斷LSP逐跳是否建立完整無能為力。這時,我們可以使用LSP ping命令,為找到存在問題的LSP提供了一個很好的手段。
2.1.1.3 環路檢測
為了防止因為路由層面產生環路引起MPLS轉發環路,LDP可以在MAP消息中攜帶環路檢測信息,包括Hop-Count屬性和Path-Vector屬性。設備上通過設置允許建立LSP經過的最大跳數來防止環路產生。在實驗室中由于路由產生環路比較困難,因此測試中通常通過設置較小的LDP跳數達到檢測環路目的。配置了環路檢查的路由器與沒有配置環路檢查路由器之間LDP鄰居關系建立、對沒有攜帶環路檢查的LDP MAP消息處理和沒有環路檢查屬性的MAP消息處理。對即將達到和已經達到甚至超過規定跳數的LDP消息處理等。
2.1.2 協議一致性測試
目前,很多廠商的測試設備都提供了對各種基礎協議進行一致性測試的測試套,包括Angilent公司的RouterTester、Sprient公司的AX4000和IXIA公司的IxANVL。這些測試套都是儀器廠商嚴格依據標準RFC開發的自動化腳本,幾乎覆蓋了對應RFC中定義的每一個功能點。利用這些協議一致性測試套,能夠非常準確地測試設備是否按照標準協議實現,能幫助我們發現很多互通測試和遍歷測試中無法發現的深層協議問題。對于MPLS部分,主要測試儀都有LDP協議測試套,協議一致性測試也早已在平臺產品測試部得到廣泛使用。
同時,部分廠商儀器還提供對BGP、MBGP、L2VPN和VPLS等其他MPLS應用模塊的協議一致性測試套,具體支持模塊的詳細信息請參見原儀器集中組相關文檔。