孫祥安,朱泓藝
(上海寬帶技術及應用工程研究中心,上海 200436)
科學技術的發展加快了社會的節奏,人們期望著即刻響應的服務、即日抵達的物流以及隨時隨地能夠訪問與交互信息。從企業角度來看,這一趨勢反映在對大數據的高速處理、緩存以及分發的需求等方面,從而帶動邊緣數據中心的發展。為了降低總成本,建設邊緣數據中心的第一步是將大量現有的傳統計算基礎設施改造為邊緣云數據中心,形成分布式跨數據中心網絡。這樣不僅能夠提高計算存儲效率,還能有效地提高業務數據的安全性能[1]。傳統的數據中心存在部署效率低、交付時間長以及部分設備利用率不足等問題,難以滿足建設大規模數據中心網絡的需求。
目前,數據中心網絡主要為了實現廣泛使用的分布式計算,承載著協同與交互功能,使得數據中心的東西向流量占據著大部分數據中心網絡資源。軟件定義網絡(Software Defined Network,SDN)技術通過分離網絡設備的控制面與數據面,在控制層實現網絡管理的標準化與可編程,從而更有效地分配東西向網絡資源。因此,采用SDN技術可以有效配置、監控與管理數據中心網絡[2-4]。在通信協議方面,OpenFlow擬定了SDN控制器與網絡設備之間信息交互的標準。它創新的網絡架構受到了廣泛關注與支持,但由于OpenFlow的SDN對于網絡架構的改造過于激進,主要僅運用在數據中心內部。在跨數據中心網絡以及變更影響較大的場景中,傳統的多協議標簽交換(Multi-Protocol Label Switching,MPLS)技術更受企業的青睞,是跨數據中心網絡升級的主要手段。分段路由(Segment Routing,SR)以MPLS為基礎,在SDN網絡架構中更進一步地為上層應用提供可編程能力。OpenDaylight控制器是一款支持SR技術的開源SDN控制器,可以提供全方位的網絡管理功能。它分為南向協議層、控制層以及北向接口層[5]3層。本文主要介紹OpenDaylight中的幾種重要控制層插件,通過這些插件對MPLS網絡進行配置和監控。此外,研究OpenDaylight連接兩種主流廠商華為與思科網絡的設備。其中:使用的華為設備軟件版本號為NE20E V800R010C10SPC500,與之連接的OpenDaylight版本為0.11.1;思科模擬器為IOS XR 6.0.1,與之連接的OpenDaylight版本為0.8.4。
南向接口用于控制器與設備的通信。隨著網絡運維自動化的普及,網絡設備不再局限于傳統命令行的配置方式。設備廠商會比較關心控制器南向接口的開發,因為南向接口對應著設備的北向接口,即設備的配置管理方式。設備廠商開發了很多更為方便的管理通道,更適合設備的自動化管理。其中,控制器南向插件就是利用設備的各類通道連接設備,對設備進行監控和管理。常見的南向協議有網絡配置協 議(Network Configuration Protocol,NETCONF)[6]、邊界網關協議(Border Gateway Protocol,BGP)[7]以及路徑計算單元通信協議(Path Computation Element Protocol,PCEP)[8]等。
配置管理用于設備配置信息的管理,用于替換傳統的命令行界面(Command-Line Interface,CLI)的命令行。NETCONF是新一代網管協議,相較與CLI和簡單網絡管理協議(Simple Network Management Protocol,SNMP),更利于自動化運維,也更安全。它提供了一套全新的網絡管理機制,協議號為RFC 6241(是一系列以編號排定的文件)。該標準中定義了它基于可擴展標記語言(Extensible Markup Language,XML)進行網絡配置,而后在RFC 6242中規定了NETCONF使用SSH通道進行信息交互。NETCONF協議使用遠程過程調用(Remote Procedure Call,RPC)的方式與網絡設備通信,是連接OpenDaylight和設備的重要通道。整體架構包含安全傳輸層、消息層、操作層以及內容層4個層級。安全傳輸層用來和設備建立安全通信通道,NETCONF協議允許用戶使用任意的傳輸層協議,默認使用SSH協議作為數據加密和數據傳輸機制;消息層采用RPC機制,提供一種與傳輸無關的消息封裝格式;操作層提供對數據庫信息的獲取、配置及刪除等9種基本操作功能;內容層定義RPC調用的數據內容,即配置數據庫。
網管人員重點關注的是內容層的定義。內容層是整個NETCONF的核心所在。網管對網絡設備進行操作管理時,主要工作也是關于內容層。NETCONF本身并沒有對內容層作限定,其規范表現為YANG模型的建模,其中YANG是NETCONF訪問設備的數據建模語言。RFC 6020中規定了YANG模型的各種元素和使用方法,NETCONF用它對各種操作、數據以及通知進行建模。YANG模型具有良好的可讀性和可擴展性。客戶端與設備之間使用NETCONF剛建立連接時會相互發送
OpenDaylight中使用NETCONF協議連接網絡設備的插件是odl-netconf-connector-all,這里并不關注該插件的內部實現,重點在于如何安裝使用。在不對控制層插件做任何修改的情況下進行網絡設備管理,有利于管理人員集中精力于業務功能的維護。設備與控制器可以通過CallHome由設備發起連接,也可以配置設備掛載信息由控制器發起連接,其中通過控制器發起連接的方式適用性更廣。通過控制器發起連接需要配置設備IP、設備port、用戶名以及密碼等信息,通過put方式增加設備掛載點。掛載點增加后通過控制器提供的接口查看連接狀態,如圖1所示,其中

圖1 通過OpenDaylight查看設備狀態
控制器對網絡信息的搜集主要由BGP協議完成。BGP是自治系統之間傳輸路由的動態路由協議,當前使用BGP-4版本,協議標準為RFC 4271。BGP協議設計之初主要用來傳輸自治域間的路由信息,具有非常友好的擴展機制。BGP自身不具備在不同自治系統之間提供節點、鏈路狀態的功能,也沒有提供與應用流量工程相關的信息。若要使用PCE等協議作為不同自治域中節點之間的路徑計算機制,需要掌握所有自治域網絡拓撲。到目前為止,PCE還不能計算出通過另一個自治系統的網絡全局最優路徑。為了搜集各個自治域的流量工程信息,研究人員提出了一種BGP擴展方案,即BGP-LS(RFC 7752)。在BGP-LS中,路由器維護一個或多個數據庫,用以存儲來自給定區域的鏈路狀態信息。這些信息包括本地/遠端IP地址、本地/遠端接口ID、鏈路metric、TE metric、鏈路吞吐量、可用鏈路吞吐量、每個服務等級的資源預留以及搶占共享風險鏈路組。BGP進程可以從數據庫中檢索共享信息,并通過另一個BGP路由器直接或間接地將其傳遞給控制器接收者。在TLV(Type/Length/Value)字段中包含有關鏈路狀態和流量工程的信息,主要包含NLRI(Network Layer Reachability Information)和BGP-LS屬性兩種格式。其中,NLRI描述從域間路由協議獲得的鏈路、節點以及前綴,BGP-LS屬性則攜帶有關鏈路、節點以及屬性(如鏈路或前綴metric、router ID)的信息。
OpenDaylight中 的BGP-LS插 件 為odl-bgpcepbgp。為了方便使用,控制器還提供了一個示例插件odl-bgpcep-bgp-config-example,只需對提供的實例做簡單修改即可。首先需要配置控制器的BGP屬性,修改控制器的BGP端口為179。其次,在控制提供的示例基礎上加以修改,將BGP的本地地址、AS號以及遠端地址修改為自身的配置,示例文件的路徑為“etc/opendaylight/bgpcep/protocols-config.xml”。最后,控制器配置完成后,在設備上配置對應的BGP功能即可。網絡設備將路由信息同步反饋到控制器,控制器可以通過API獲取的BGP-LS信息還原出拓撲、網絡流量等特征。圖2為通過控制器獲取的BGP-LS信息。
目前使用最廣的動態隧道管理協議為PCEP。PCEP負責PCE服務器與客戶端或位于不同域中服務端之間的通信,標準為RFC 5440。PCE可分為有狀態和無狀態兩種模式。在有狀態PCE中,PCE模塊與網絡保持完全同步,從而了解網絡拓撲結構、鏈路容量、已建立的LSP和資源預留(帶寬);而無狀態PCE不知活動的LSP,每個路徑發送請求都是獨立處理的。在有狀態模式中,PCE能充分了解和高效優化網絡過程并獲得其結果,因此可以作為使用所有可用資源的最佳解決方案。

圖2 通過BGP-LS獲取網絡狀態
OpenDaylight實現PCEP功能的插件為odlbgpcep-pcep。控制器中PCEP的初始化配置文件為“etc/opendaylight/bgpcep/network-topology-pcep-config.xml”,默認不需要修改。完成控制器配置后,設備作為PCC端配置并連接控制器上的PCEP服務端,連接狀態以及上報信息在控制器上查看,還可以進行隧道信息的增、刪、改等操作,如圖3所示。

圖3 查看PCEP連接狀態
北向接口用于網管人員與OpenDaylight交互。控制器開放北向接口用以向外部各種應用程序提供設備信息獲取和配置下發等功能[9]。RESTCONF是一種重要的控制器北向接口技術,而OpenDaylight采用的MD-SAL使得設備資源可以通過YANG模型直接轉換為RESTCONF API。
RESTCONF(RFC 8040)是基于HTTP的協議。該協議基于NETCONF定義的數據存儲概念,為訪問YANG中定義的數據提供編程接口。RESTCONF協議使用HTTP方法標識特定資源請求的增、刪、改、查操作。表1顯示了RESTCONF操作如何與NETCONF協議操作相關聯。

表1 RESTCONF與NETCONF操作的對應關系
RESTCONF協議使用HTTP協議,單個HTTP協議對應單個協議方法。大多數協議可以在單個資源上執行單個任務,如檢索資源或編輯資源。PATCH方法例外,它允許在單個消息中進行多個數據存儲區的編輯。RESTCONF協議與其他REST協議類似,一個RESTCONF操作是由HTTP方法和被請求資源的URI構成,如圖4所示。

圖4 URL結構
(1)method:客戶端發送HTTP請求時,標識RESTCONF操作,請求操作作用于被請求URI指定的目標資源之上,可選操作有GET、PUT、DELETE、PATCH以及OPTIONS。
(2)entry:HTTP服務器端配置的RESTCONF API的根。
(3)resource:標識RESTCONF操作正在訪問的資源路徑表達式,若不存在該字段,則目標資源就是API本身。
(4)query:與RESTCONF消息相關聯的參數集合,以鍵值對的形式存在。
OpenDaylight中實現RESTCONF的插件為odlrestconf,需結合之前的南向插件執行配置管理。如圖5所示,掛載NETCONF設備后獲取隧道接口配置,需要注意url中鍵值的寫法,且鍵值的順序需正確。可以在YANG文件中查看鍵值的定義和定義順序。

圖5 通過OpenDaylight獲取配置
在1.2節中已經展示了使用BGP-LS獲取網絡拓撲,這里主要介紹拓撲還原方法。獲取的拓撲可以有多種還原方法,可以自己寫也可以使用一些現有的工具。這里使用思科提供的一個開源小程序對拓撲進行還原,如圖6所示。
網絡設備的PCC端通過PCEP通道將隧道信息上報控制器的有狀態PCE端,因此隧道的每條LSP信息都可以通過RESTCONF獲取并還原以進行可視化展示。圖7為獲取上報的SR隧道信息以及可視化展示,LSP路徑為R1-R3-R4-R2。
OpenDaylight控制器支持SR與MPLS技術,通過銜接RESTCONF/HTTP和NETCONF/SSH,實現跨數據中心網絡設備的多層多域編排、多供應商部署以及流量工程等功能。本文重點講述了OpenDaylight控制器南北向接口的功能與應用,可以更好地了解OpenDaylight的網絡架構與關鍵部件的功能。模型驅動的服務抽象層MD-SAL統一了南北向接口以及所有模塊的數據結構,YANG模型起到了協調接口調用的關鍵作用。RESTCONF實現了外部應用程序與內部模塊的交互功能。基于OpenDaylight研發成果進行網絡應用層面的編排管理,可以大幅提升多數據中心部署運維的效率。

圖6 通過BGP-LS進行拓撲還原

圖7 PCEP獲取的隧道路徑展示