孫祥安,朱泓藝
(上海寬帶技術(shù)及應(yīng)用工程研究中心,上海 200436)
科學(xué)技術(shù)的發(fā)展加快了社會(huì)的節(jié)奏,人們期望著即刻響應(yīng)的服務(wù)、即日抵達(dá)的物流以及隨時(shí)隨地能夠訪問(wèn)與交互信息。從企業(yè)角度來(lái)看,這一趨勢(shì)反映在對(duì)大數(shù)據(jù)的高速處理、緩存以及分發(fā)的需求等方面,從而帶動(dòng)邊緣數(shù)據(jù)中心的發(fā)展。為了降低總成本,建設(shè)邊緣數(shù)據(jù)中心的第一步是將大量現(xiàn)有的傳統(tǒng)計(jì)算基礎(chǔ)設(shè)施改造為邊緣云數(shù)據(jù)中心,形成分布式跨數(shù)據(jù)中心網(wǎng)絡(luò)。這樣不僅能夠提高計(jì)算存儲(chǔ)效率,還能有效地提高業(yè)務(wù)數(shù)據(jù)的安全性能[1]。傳統(tǒng)的數(shù)據(jù)中心存在部署效率低、交付時(shí)間長(zhǎng)以及部分設(shè)備利用率不足等問(wèn)題,難以滿足建設(shè)大規(guī)模數(shù)據(jù)中心網(wǎng)絡(luò)的需求。
目前,數(shù)據(jù)中心網(wǎng)絡(luò)主要為了實(shí)現(xiàn)廣泛使用的分布式計(jì)算,承載著協(xié)同與交互功能,使得數(shù)據(jù)中心的東西向流量占據(jù)著大部分?jǐn)?shù)據(jù)中心網(wǎng)絡(luò)資源。軟件定義網(wǎng)絡(luò)(Software Defined Network,SDN)技術(shù)通過(guò)分離網(wǎng)絡(luò)設(shè)備的控制面與數(shù)據(jù)面,在控制層實(shí)現(xiàn)網(wǎng)絡(luò)管理的標(biāo)準(zhǔn)化與可編程,從而更有效地分配東西向網(wǎng)絡(luò)資源。因此,采用SDN技術(shù)可以有效配置、監(jiān)控與管理數(shù)據(jù)中心網(wǎng)絡(luò)[2-4]。在通信協(xié)議方面,OpenFlow擬定了SDN控制器與網(wǎng)絡(luò)設(shè)備之間信息交互的標(biāo)準(zhǔn)。它創(chuàng)新的網(wǎng)絡(luò)架構(gòu)受到了廣泛關(guān)注與支持,但由于OpenFlow的SDN對(duì)于網(wǎng)絡(luò)架構(gòu)的改造過(guò)于激進(jìn),主要僅運(yùn)用在數(shù)據(jù)中心內(nèi)部。在跨數(shù)據(jù)中心網(wǎng)絡(luò)以及變更影響較大的場(chǎng)景中,傳統(tǒng)的多協(xié)議標(biāo)簽交換(Multi-Protocol Label Switching,MPLS)技術(shù)更受企業(yè)的青睞,是跨數(shù)據(jù)中心網(wǎng)絡(luò)升級(jí)的主要手段。分段路由(Segment Routing,SR)以MPLS為基礎(chǔ),在SDN網(wǎng)絡(luò)架構(gòu)中更進(jìn)一步地為上層應(yīng)用提供可編程能力。OpenDaylight控制器是一款支持SR技術(shù)的開(kāi)源SDN控制器,可以提供全方位的網(wǎng)絡(luò)管理功能。它分為南向協(xié)議層、控制層以及北向接口層[5]3層。本文主要介紹OpenDaylight中的幾種重要控制層插件,通過(guò)這些插件對(duì)MPLS網(wǎng)絡(luò)進(jìn)行配置和監(jiān)控。此外,研究OpenDaylight連接兩種主流廠商華為與思科網(wǎng)絡(luò)的設(shè)備。其中:使用的華為設(shè)備軟件版本號(hào)為NE20E V800R010C10SPC500,與之連接的OpenDaylight版本為0.11.1;思科模擬器為IOS XR 6.0.1,與之連接的OpenDaylight版本為0.8.4。
南向接口用于控制器與設(shè)備的通信。隨著網(wǎng)絡(luò)運(yùn)維自動(dòng)化的普及,網(wǎng)絡(luò)設(shè)備不再局限于傳統(tǒng)命令行的配置方式。設(shè)備廠商會(huì)比較關(guān)心控制器南向接口的開(kāi)發(fā),因?yàn)槟舷蚪涌趯?duì)應(yīng)著設(shè)備的北向接口,即設(shè)備的配置管理方式。設(shè)備廠商開(kāi)發(fā)了很多更為方便的管理通道,更適合設(shè)備的自動(dòng)化管理。其中,控制器南向插件就是利用設(shè)備的各類通道連接設(shè)備,對(duì)設(shè)備進(jìn)行監(jiān)控和管理。常見(jiàn)的南向協(xié)議有網(wǎng)絡(luò)配置協(xié) 議(Network Configuration Protocol,NETCONF)[6]、邊界網(wǎng)關(guān)協(xié)議(Border Gateway Protocol,BGP)[7]以及路徑計(jì)算單元通信協(xié)議(Path Computation Element Protocol,PCEP)[8]等。
配置管理用于設(shè)備配置信息的管理,用于替換傳統(tǒng)的命令行界面(Command-Line Interface,CLI)的命令行。NETCONF是新一代網(wǎng)管協(xié)議,相較與CLI和簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議(Simple Network Management Protocol,SNMP),更利于自動(dòng)化運(yùn)維,也更安全。它提供了一套全新的網(wǎng)絡(luò)管理機(jī)制,協(xié)議號(hào)為RFC 6241(是一系列以編號(hào)排定的文件)。該標(biāo)準(zhǔn)中定義了它基于可擴(kuò)展標(biāo)記語(yǔ)言(Extensible Markup Language,XML)進(jìn)行網(wǎng)絡(luò)配置,而后在RFC 6242中規(guī)定了NETCONF使用SSH通道進(jìn)行信息交互。NETCONF協(xié)議使用遠(yuǎn)程過(guò)程調(diào)用(Remote Procedure Call,RPC)的方式與網(wǎng)絡(luò)設(shè)備通信,是連接OpenDaylight和設(shè)備的重要通道。整體架構(gòu)包含安全傳輸層、消息層、操作層以及內(nèi)容層4個(gè)層級(jí)。安全傳輸層用來(lái)和設(shè)備建立安全通信通道,NETCONF協(xié)議允許用戶使用任意的傳輸層協(xié)議,默認(rèn)使用SSH協(xié)議作為數(shù)據(jù)加密和數(shù)據(jù)傳輸機(jī)制;消息層采用RPC機(jī)制,提供一種與傳輸無(wú)關(guān)的消息封裝格式;操作層提供對(duì)數(shù)據(jù)庫(kù)信息的獲取、配置及刪除等9種基本操作功能;內(nèi)容層定義RPC調(diào)用的數(shù)據(jù)內(nèi)容,即配置數(shù)據(jù)庫(kù)。
網(wǎng)管人員重點(diǎn)關(guān)注的是內(nèi)容層的定義。內(nèi)容層是整個(gè)NETCONF的核心所在。網(wǎng)管對(duì)網(wǎng)絡(luò)設(shè)備進(jìn)行操作管理時(shí),主要工作也是關(guān)于內(nèi)容層。NETCONF本身并沒(méi)有對(duì)內(nèi)容層作限定,其規(guī)范表現(xiàn)為YANG模型的建模,其中YANG是NETCONF訪問(wèn)設(shè)備的數(shù)據(jù)建模語(yǔ)言。RFC 6020中規(guī)定了YANG模型的各種元素和使用方法,NETCONF用它對(duì)各種操作、數(shù)據(jù)以及通知進(jìn)行建模。YANG模型具有良好的可讀性和可擴(kuò)展性。客戶端與設(shè)備之間使用NETCONF剛建立連接時(shí)會(huì)相互發(fā)送
OpenDaylight中使用NETCONF協(xié)議連接網(wǎng)絡(luò)設(shè)備的插件是odl-netconf-connector-all,這里并不關(guān)注該插件的內(nèi)部實(shí)現(xiàn),重點(diǎn)在于如何安裝使用。在不對(duì)控制層插件做任何修改的情況下進(jìn)行網(wǎng)絡(luò)設(shè)備管理,有利于管理人員集中精力于業(yè)務(wù)功能的維護(hù)。設(shè)備與控制器可以通過(guò)CallHome由設(shè)備發(fā)起連接,也可以配置設(shè)備掛載信息由控制器發(fā)起連接,其中通過(guò)控制器發(fā)起連接的方式適用性更廣。通過(guò)控制器發(fā)起連接需要配置設(shè)備IP、設(shè)備port、用戶名以及密碼等信息,通過(guò)put方式增加設(shè)備掛載點(diǎn)。掛載點(diǎn)增加后通過(guò)控制器提供的接口查看連接狀態(tài),如圖1所示,其中
圖1 通過(guò)OpenDaylight查看設(shè)備狀態(tài)
控制器對(duì)網(wǎng)絡(luò)信息的搜集主要由BGP協(xié)議完成。BGP是自治系統(tǒng)之間傳輸路由的動(dòng)態(tài)路由協(xié)議,當(dāng)前使用BGP-4版本,協(xié)議標(biāo)準(zhǔn)為RFC 4271。BGP協(xié)議設(shè)計(jì)之初主要用來(lái)傳輸自治域間的路由信息,具有非常友好的擴(kuò)展機(jī)制。BGP自身不具備在不同自治系統(tǒng)之間提供節(jié)點(diǎn)、鏈路狀態(tài)的功能,也沒(méi)有提供與應(yīng)用流量工程相關(guān)的信息。若要使用PCE等協(xié)議作為不同自治域中節(jié)點(diǎn)之間的路徑計(jì)算機(jī)制,需要掌握所有自治域網(wǎng)絡(luò)拓?fù)洹5侥壳盀橹?,PCE還不能計(jì)算出通過(guò)另一個(gè)自治系統(tǒng)的網(wǎng)絡(luò)全局最優(yōu)路徑。為了搜集各個(gè)自治域的流量工程信息,研究人員提出了一種BGP擴(kuò)展方案,即BGP-LS(RFC 7752)。在BGP-LS中,路由器維護(hù)一個(gè)或多個(gè)數(shù)據(jù)庫(kù),用以存儲(chǔ)來(lái)自給定區(qū)域的鏈路狀態(tài)信息。這些信息包括本地/遠(yuǎn)端IP地址、本地/遠(yuǎn)端接口ID、鏈路metric、TE metric、鏈路吞吐量、可用鏈路吞吐量、每個(gè)服務(wù)等級(jí)的資源預(yù)留以及搶占共享風(fēng)險(xiǎn)鏈路組。BGP進(jìn)程可以從數(shù)據(jù)庫(kù)中檢索共享信息,并通過(guò)另一個(gè)BGP路由器直接或間接地將其傳遞給控制器接收者。在TLV(Type/Length/Value)字段中包含有關(guān)鏈路狀態(tài)和流量工程的信息,主要包含NLRI(Network Layer Reachability Information)和BGP-LS屬性兩種格式。其中,NLRI描述從域間路由協(xié)議獲得的鏈路、節(jié)點(diǎn)以及前綴,BGP-LS屬性則攜帶有關(guān)鏈路、節(jié)點(diǎn)以及屬性(如鏈路或前綴metric、router ID)的信息。
OpenDaylight中 的BGP-LS插 件 為odl-bgpcepbgp。為了方便使用,控制器還提供了一個(gè)示例插件odl-bgpcep-bgp-config-example,只需對(duì)提供的實(shí)例做簡(jiǎn)單修改即可。首先需要配置控制器的BGP屬性,修改控制器的BGP端口為179。其次,在控制提供的示例基礎(chǔ)上加以修改,將BGP的本地地址、AS號(hào)以及遠(yuǎn)端地址修改為自身的配置,示例文件的路徑為“etc/opendaylight/bgpcep/protocols-config.xml”。最后,控制器配置完成后,在設(shè)備上配置對(duì)應(yīng)的BGP功能即可。網(wǎng)絡(luò)設(shè)備將路由信息同步反饋到控制器,控制器可以通過(guò)API獲取的BGP-LS信息還原出拓?fù)?、網(wǎng)絡(luò)流量等特征。圖2為通過(guò)控制器獲取的BGP-LS信息。
目前使用最廣的動(dòng)態(tài)隧道管理協(xié)議為PCEP。PCEP負(fù)責(zé)PCE服務(wù)器與客戶端或位于不同域中服務(wù)端之間的通信,標(biāo)準(zhǔn)為RFC 5440。PCE可分為有狀態(tài)和無(wú)狀態(tài)兩種模式。在有狀態(tài)PCE中,PCE模塊與網(wǎng)絡(luò)保持完全同步,從而了解網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)、鏈路容量、已建立的LSP和資源預(yù)留(帶寬);而無(wú)狀態(tài)PCE不知活動(dòng)的LSP,每個(gè)路徑發(fā)送請(qǐng)求都是獨(dú)立處理的。在有狀態(tài)模式中,PCE能充分了解和高效優(yōu)化網(wǎng)絡(luò)過(guò)程并獲得其結(jié)果,因此可以作為使用所有可用資源的最佳解決方案。
圖2 通過(guò)BGP-LS獲取網(wǎng)絡(luò)狀態(tài)
OpenDaylight實(shí)現(xiàn)PCEP功能的插件為odlbgpcep-pcep??刂破髦蠵CEP的初始化配置文件為“etc/opendaylight/bgpcep/network-topology-pcep-config.xml”,默認(rèn)不需要修改。完成控制器配置后,設(shè)備作為PCC端配置并連接控制器上的PCEP服務(wù)端,連接狀態(tài)以及上報(bào)信息在控制器上查看,還可以進(jìn)行隧道信息的增、刪、改等操作,如圖3所示。
圖3 查看PCEP連接狀態(tài)
北向接口用于網(wǎng)管人員與OpenDaylight交互??刂破鏖_(kāi)放北向接口用以向外部各種應(yīng)用程序提供設(shè)備信息獲取和配置下發(fā)等功能[9]。RESTCONF是一種重要的控制器北向接口技術(shù),而OpenDaylight采用的MD-SAL使得設(shè)備資源可以通過(guò)YANG模型直接轉(zhuǎn)換為RESTCONF API。
RESTCONF(RFC 8040)是基于HTTP的協(xié)議。該協(xié)議基于NETCONF定義的數(shù)據(jù)存儲(chǔ)概念,為訪問(wèn)YANG中定義的數(shù)據(jù)提供編程接口。RESTCONF協(xié)議使用HTTP方法標(biāo)識(shí)特定資源請(qǐng)求的增、刪、改、查操作。表1顯示了RESTCONF操作如何與NETCONF協(xié)議操作相關(guān)聯(lián)。
表1 RESTCONF與NETCONF操作的對(duì)應(yīng)關(guān)系
RESTCONF協(xié)議使用HTTP協(xié)議,單個(gè)HTTP協(xié)議對(duì)應(yīng)單個(gè)協(xié)議方法。大多數(shù)協(xié)議可以在單個(gè)資源上執(zhí)行單個(gè)任務(wù),如檢索資源或編輯資源。PATCH方法例外,它允許在單個(gè)消息中進(jìn)行多個(gè)數(shù)據(jù)存儲(chǔ)區(qū)的編輯。RESTCONF協(xié)議與其他REST協(xié)議類似,一個(gè)RESTCONF操作是由HTTP方法和被請(qǐng)求資源的URI構(gòu)成,如圖4所示。
圖4 URL結(jié)構(gòu)
(1)method:客戶端發(fā)送HTTP請(qǐng)求時(shí),標(biāo)識(shí)RESTCONF操作,請(qǐng)求操作作用于被請(qǐng)求URI指定的目標(biāo)資源之上,可選操作有GET、PUT、DELETE、PATCH以及OPTIONS。
(2)entry:HTTP服務(wù)器端配置的RESTCONF API的根。
(3)resource:標(biāo)識(shí)RESTCONF操作正在訪問(wèn)的資源路徑表達(dá)式,若不存在該字段,則目標(biāo)資源就是API本身。
(4)query:與RESTCONF消息相關(guān)聯(lián)的參數(shù)集合,以鍵值對(duì)的形式存在。
OpenDaylight中實(shí)現(xiàn)RESTCONF的插件為odlrestconf,需結(jié)合之前的南向插件執(zhí)行配置管理。如圖5所示,掛載NETCONF設(shè)備后獲取隧道接口配置,需要注意url中鍵值的寫(xiě)法,且鍵值的順序需正確。可以在YANG文件中查看鍵值的定義和定義順序。
圖5 通過(guò)OpenDaylight獲取配置
在1.2節(jié)中已經(jīng)展示了使用BGP-LS獲取網(wǎng)絡(luò)拓?fù)?,這里主要介紹拓?fù)溥€原方法。獲取的拓?fù)淇梢杂卸喾N還原方法,可以自己寫(xiě)也可以使用一些現(xiàn)有的工具。這里使用思科提供的一個(gè)開(kāi)源小程序?qū)ν負(fù)溥M(jìn)行還原,如圖6所示。
網(wǎng)絡(luò)設(shè)備的PCC端通過(guò)PCEP通道將隧道信息上報(bào)控制器的有狀態(tài)PCE端,因此隧道的每條LSP信息都可以通過(guò)RESTCONF獲取并還原以進(jìn)行可視化展示。圖7為獲取上報(bào)的SR隧道信息以及可視化展示,LSP路徑為R1-R3-R4-R2。
OpenDaylight控制器支持SR與MPLS技術(shù),通過(guò)銜接RESTCONF/HTTP和NETCONF/SSH,實(shí)現(xiàn)跨數(shù)據(jù)中心網(wǎng)絡(luò)設(shè)備的多層多域編排、多供應(yīng)商部署以及流量工程等功能。本文重點(diǎn)講述了OpenDaylight控制器南北向接口的功能與應(yīng)用,可以更好地了解OpenDaylight的網(wǎng)絡(luò)架構(gòu)與關(guān)鍵部件的功能。模型驅(qū)動(dòng)的服務(wù)抽象層MD-SAL統(tǒng)一了南北向接口以及所有模塊的數(shù)據(jù)結(jié)構(gòu),YANG模型起到了協(xié)調(diào)接口調(diào)用的關(guān)鍵作用。RESTCONF實(shí)現(xiàn)了外部應(yīng)用程序與內(nèi)部模塊的交互功能?;贠penDaylight研發(fā)成果進(jìn)行網(wǎng)絡(luò)應(yīng)用層面的編排管理,可以大幅提升多數(shù)據(jù)中心部署運(yùn)維的效率。
圖6 通過(guò)BGP-LS進(jìn)行拓?fù)溥€原
圖7 PCEP獲取的隧道路徑展示