華為技術(shù)有限公司 北京 100095
SDN是近年來網(wǎng)絡(luò)領(lǐng)域的熱點(diǎn)話題,代表著網(wǎng)絡(luò)未來的發(fā)展、演進(jìn)方向。軟件定義網(wǎng)絡(luò)是一種新型的網(wǎng)絡(luò)架構(gòu),在這一新型架構(gòu)中,網(wǎng)絡(luò)按照層次分為三層,即應(yīng)用層、控制層和基礎(chǔ)設(shè)備層,實(shí)現(xiàn)網(wǎng)絡(luò)控制與轉(zhuǎn)發(fā)的解耦,構(gòu)建開放、可編程的網(wǎng)絡(luò)體系結(jié)構(gòu),如圖1所示。SDN生態(tài)體系的開放與可編程,使得網(wǎng)絡(luò)服務(wù)、應(yīng)用的開發(fā)與部署大大加快,支持未來各種網(wǎng)絡(luò)體系結(jié)構(gòu)和新興業(yè)務(wù)的創(chuàng)新,滿足新應(yīng)用、新技術(shù)的time-tomarket快速部署、發(fā)放的能力。
圖1 網(wǎng)絡(luò)開放接口
開放、可編程是SDN網(wǎng)絡(luò)的顯著特征。SDN網(wǎng)絡(luò)中,開放接口的關(guān)注點(diǎn)逐漸上移,主要經(jīng)歷了三個階段。
第一階段,網(wǎng)絡(luò)開放關(guān)注基礎(chǔ)設(shè)備層的設(shè)備開放接口,通過設(shè)備開放接口,直接實(shí)現(xiàn)對網(wǎng)絡(luò)基礎(chǔ)設(shè)備的控制域編程,通過直接生成并下發(fā)網(wǎng)絡(luò)基礎(chǔ)設(shè)備(如交換機(jī)、路由器以及網(wǎng)絡(luò)芯片)的轉(zhuǎn)發(fā)表項(xiàng),實(shí)現(xiàn)網(wǎng)絡(luò)對數(shù)據(jù)報文轉(zhuǎn)發(fā)行為的控制,在Open Networking Foundation中定義了OpenFlow協(xié)議標(biāo)準(zhǔn)[1],通過[match, action]的模型方式,生成對包轉(zhuǎn)發(fā)的轉(zhuǎn)發(fā)表項(xiàng),實(shí)現(xiàn)在網(wǎng)絡(luò)設(shè)備具體的轉(zhuǎn)發(fā)行為的細(xì)節(jié)控制。
第二階段,網(wǎng)絡(luò)開放關(guān)注控制器能力開放,通過控制器的開放接口,可以實(shí)現(xiàn)特定的功能型、特定場景或技術(shù)方案的網(wǎng)絡(luò)控制能力實(shí)現(xiàn)。在ONF的North Bound Interface Work Group中,定義了大量的不同功能的開放接口,如Topology接口,L2VPN、L3VPN接口,Tunnel接口等,這些接口從具體的獨(dú)立的網(wǎng)絡(luò)能力角度,隱藏了具體網(wǎng)絡(luò)設(shè)備的轉(zhuǎn)發(fā)表項(xiàng)細(xì)節(jié)。此階段的控制能力開放接口,雖具備了一定的抽象,簡化了使用流程,使用者仍需具備豐富的網(wǎng)絡(luò)知識和相關(guān)技術(shù)背景。
當(dāng)前,第三階段,網(wǎng)絡(luò)開放關(guān)注系統(tǒng)能力開放接口,更注重于網(wǎng)絡(luò)整體能力的抽象與開放,提供面向網(wǎng)絡(luò)操作意圖的網(wǎng)絡(luò)操作接口。使用這類用戶意圖的聲明式接口,網(wǎng)絡(luò)用戶、應(yīng)用只需描述想要“What”,而無需關(guān)心“How”[2],向用戶隱藏了網(wǎng)絡(luò)相關(guān)的技術(shù)信息,大大降低了網(wǎng)絡(luò)用戶、服務(wù)的網(wǎng)絡(luò)操作難度,使得網(wǎng)絡(luò)更容易被操作和使用。
近年來Intent NBI已經(jīng)在標(biāo)準(zhǔn)、學(xué)術(shù)界以及開源上越來越引起人們的關(guān)注與參與。
在標(biāo)準(zhǔn)上,2014年底在IETF成立IB-NEMO討論組,專注于推動面向用戶意圖的Intent北向接口,2015年10月成立SUPA(Simplified Use of Policy Abstractions)工作組也將Intent Policy作為未來網(wǎng)絡(luò)控制領(lǐng)域的核心發(fā)展趨勢,2015年初ONF專門成立Intent NBI工作組,討論Intent的架構(gòu)以及接口。
在學(xué)術(shù)領(lǐng)域,Sigcomm發(fā)表了多篇研究Intent的論文[3-4]。其中,Université catholique de Louvain大學(xué)發(fā)表的《A Declarative and Expressive Approach to Control Forwarding Paths in Carrier-Grade N e t w o r k s》[5]設(shè)計(jì)了一種稱為D E F O的網(wǎng)絡(luò)DSL(Domain Specific Language),該語言也是一種通過抽象topology、demand、constraint來描述網(wǎng)絡(luò)行為目標(biāo)(Intent)的語言。University of Wisconsin-Madison大學(xué)發(fā)表的《PGA: Using Graphs to Express and Automatically Reconcile Network Policies》[6],重點(diǎn)研究多用戶Intent Policy的組合計(jì)算和沖突解決方法。
在開源領(lǐng)域,ODL、ONOS、OpenStack也都已經(jīng)開始涌現(xiàn)面向Intent實(shí)現(xiàn)的開源項(xiàng)目。ONOS側(cè)重于Intent Framework,提供一個Intent整體運(yùn)行環(huán)境與框架,而Intent NBI的具體接口設(shè)計(jì)與實(shí)現(xiàn)的開源項(xiàng)目主要集中在opendaylight中。其中,GBP、NEMO、NIC是Opendaylight中面向Intent的主要項(xiàng)目。GBP采用抽象Group和Group之間的通信需求契約Contract來描述用戶需求,而NIC采用endpoint之間的operation來描述業(yè)務(wù)需求,但這兩個項(xiàng)目的主要目標(biāo)應(yīng)用場景為數(shù)據(jù)中心DC內(nèi)的網(wǎng)絡(luò)需求描述,難以實(shí)現(xiàn)、滿足復(fù)雜多樣的WAN網(wǎng)絡(luò)需求。
NEMO通過對網(wǎng)絡(luò)資源以及網(wǎng)絡(luò)行為的抽象,提供了免用用戶意圖的Intent模型,并基于該模型設(shè)計(jì)了面向網(wǎng)絡(luò)操作的DSL。相較于紛繁復(fù)雜的功能型接口,NEMO語言利用有限的網(wǎng)絡(luò)抽象元語,即可實(shí)現(xiàn)對網(wǎng)絡(luò)資源、業(yè)務(wù)以及操作的靈活表達(dá),并可適用于數(shù)據(jù)中心、WAN網(wǎng)絡(luò)等多種網(wǎng)絡(luò)中。
NEMO的核心目標(biāo)是提供一種抽象的面向用戶意圖的Intent NBI以及相應(yīng)的描述網(wǎng)絡(luò)需求的語言。通過這種Intent接口,用戶只需聚焦于真正的業(yè)務(wù)需求,而無需關(guān)心具體的網(wǎng)絡(luò)實(shí)現(xiàn)技術(shù)。在數(shù)據(jù)存儲領(lǐng)域,一個成功的應(yīng)用是SQL (Structured Query Language),它將復(fù)雜的數(shù)據(jù)操作抽象成一種統(tǒng)一的、直觀的方式供用戶使用,屏蔽底層數(shù)據(jù)存儲以及操作的具體機(jī)制。借鑒于SQL,NEMO提供了一種高級的簡單直觀的網(wǎng)絡(luò)操作語言,屏蔽底層復(fù)雜的網(wǎng)絡(luò)技術(shù)實(shí)現(xiàn),實(shí)現(xiàn)業(yè)務(wù)的靈活表達(dá)與部署。所以,NEMO是“網(wǎng)絡(luò)領(lǐng)域的SQL”。
從網(wǎng)絡(luò)用戶或應(yīng)用對網(wǎng)絡(luò)需求的Intent描述到最終映射到物理網(wǎng)絡(luò)的配置信息,主要經(jīng)過以下3個轉(zhuǎn)變過程,如圖2所示。
圖2 NEMO總體處理流程與操作方法
1)抽象。從網(wǎng)絡(luò)資源使用角度來看,網(wǎng)絡(luò)拓?fù)?、轉(zhuǎn)發(fā)能力以及網(wǎng)絡(luò)策略構(gòu)成了網(wǎng)絡(luò)管理的三大核心元素。為方便用戶或應(yīng)用表達(dá)對網(wǎng)絡(luò)的需求,網(wǎng)絡(luò)核心元素需求被抽象成更加統(tǒng)一、抽象的網(wǎng)絡(luò)對象模型,屏蔽不同廠家、設(shè)備細(xì)節(jié)的差異,在NEMO模型中,網(wǎng)絡(luò)對象模型為[object,operation]。對于三種類型的核心網(wǎng)絡(luò)元素,拓?fù)浔怀橄蟪山Y(jié)點(diǎn)(node)以及結(jié)點(diǎn)之間的鏈路(connection);轉(zhuǎn)發(fā)能力被抽象成不同種類的流( fl ow);網(wǎng)絡(luò)策略被抽象成各種網(wǎng)絡(luò)操作,如條件(condition)、行為(action)以及約束(constraint)。
2)編排組合。利用抽象出的網(wǎng)絡(luò)對象模型,用戶或者網(wǎng)絡(luò)應(yīng)用可以根據(jù)自己的需求,組合或編排出各種網(wǎng)絡(luò)意圖,實(shí)現(xiàn)對網(wǎng)絡(luò)資源分配、網(wǎng)絡(luò)業(yè)務(wù)的自定義部署。用戶可以定義被操作對象object,以及作用在網(wǎng)絡(luò)對象上的網(wǎng)絡(luò)行為,實(shí)現(xiàn)對網(wǎng)絡(luò)的整體控制,如網(wǎng)絡(luò)資源申請、拓?fù)涔芾?、帶寬控制、SLA等。
3)編譯和映射。用戶使用NEMO語言表述的目標(biāo)需求,首先經(jīng)過編譯處理,將用戶的業(yè)務(wù)資源需求視圖生成用戶獨(dú)立的虛擬網(wǎng)絡(luò)需求視圖;經(jīng)過映射邏輯,實(shí)現(xiàn)用戶的虛擬網(wǎng)絡(luò)需求視圖到真實(shí)物理網(wǎng)絡(luò)的部署。
1)對用戶的網(wǎng)絡(luò)操作意圖的抽象,得到網(wǎng)絡(luò)目標(biāo)信息模型。
2)以用戶為中心的北向接口設(shè)計(jì),以網(wǎng)絡(luò)用戶、服務(wù)的網(wǎng)絡(luò)操作為角度,抽象關(guān)鍵詞,形成平臺無關(guān)、底層網(wǎng)絡(luò)技術(shù)無關(guān)、聲明式(declarative)的語言。
3)網(wǎng)絡(luò)用戶的Intent需求描述要可靈活組合、安全、可理解、無二義性,編譯、映射結(jié)果要無沖突。
4)可映射,可以實(shí)現(xiàn)用戶高級抽象的業(yè)務(wù)需求到網(wǎng)絡(luò)具體技術(shù)相關(guān)、復(fù)雜的網(wǎng)絡(luò)控制指令的編譯、映射。
5)MDA架構(gòu),南向網(wǎng)絡(luò)技術(shù)的PnP特性,能夠滿足底層多樣性網(wǎng)絡(luò)技術(shù)映射需求,實(shí)現(xiàn)PIM到PSM的映射,同時滿足新增南向網(wǎng)絡(luò)技術(shù)的在線加載。
6)多租戶的支持,用戶之間的業(yè)務(wù)視圖、網(wǎng)絡(luò)視圖要相互隔離、互不影響,每個租戶擁有自己的絕對安全的網(wǎng)絡(luò)使用空間。
7)網(wǎng)絡(luò)變化自適應(yīng),對于網(wǎng)絡(luò)的異常、網(wǎng)絡(luò)性能變化,能夠自動重新進(jìn)行虛擬網(wǎng)絡(luò)到物理網(wǎng)絡(luò)的映射、部署,網(wǎng)絡(luò)用戶、服務(wù)感知不到網(wǎng)絡(luò)變化,降低網(wǎng)絡(luò)異常對業(yè)務(wù)的影響。
NEMO作為將用戶業(yè)務(wù)需求轉(zhuǎn)換為物理網(wǎng)絡(luò)配置的一整套系統(tǒng),包括NEMO模型、具體語言表現(xiàn)形式以及NEMO引擎對用戶需求的處理以及對物理網(wǎng)絡(luò)的映射。本節(jié)將會介紹NEMO模型、語言以及NEMO引擎的設(shè)計(jì),還會列舉幾個典型的應(yīng)用實(shí)例。
現(xiàn)有的網(wǎng)絡(luò)資源和業(yè)務(wù)抽象采用“自底向上”的抽象方式,聚焦在控制器的能力開放上,而非從網(wǎng)絡(luò)用戶操作需求角度出發(fā),難以滿足用戶意圖,并且,功能型接口隨著網(wǎng)絡(luò)功能的增加層出不窮,很難收斂,不同功能型接口很難配合拉通,難以實(shí)現(xiàn)組合和復(fù)用。為解決這些問題,NEMO提供一套通用的用戶Intent描述的接口和語言的表述方式,實(shí)現(xiàn)復(fù)雜的網(wǎng)絡(luò)需求功能。
從對Intent處理流程來看,NEMO抽象可以分成三個層次,即業(yè)務(wù)視圖層、虛擬網(wǎng)絡(luò)視圖層和物理網(wǎng)絡(luò)視圖層。通用的抽象模型應(yīng)該能夠適用于各個層次的不同需求。分析每個層次的不同需求,均可以表示為[object,operation],即對某對象進(jìn)行何種操作。為適應(yīng)不同層次的需求,object和operation在各個層次會有不同的實(shí)例以及不同的屬性。除了采取確定操作的Intent外,用戶也可以僅表明期待或避免的結(jié)果,而不指定采用何種operation達(dá)到這種狀態(tài),因此,result是NEMO模型對Intent的另一種抽象。
使用基于模型的抽象方法(Model-based Abstraction)對網(wǎng)絡(luò)資源和業(yè)務(wù)進(jìn)行抽象,可以將intent抽象為對象(object)、操作(operation)以及結(jié)果(result),如圖3所示。用戶只需表明最終的網(wǎng)絡(luò)狀態(tài),而不必關(guān)心如何達(dá)到這種網(wǎng)絡(luò)狀態(tài)。例如,保證所有鏈路的利用率小于80%。用戶無需關(guān)心采取何種operation去實(shí)現(xiàn)這個狀態(tài)。
圖3 NEMO模型
對象(object)是一個抽象類,定義了被管理或被作用的對象,在不同層次中可以被繼承或者擴(kuò)展。不同的抽象層次中,object指代的具體內(nèi)容存在差異。例如,在業(yè)務(wù)視圖層,object可以是業(yè)務(wù)結(jié)點(diǎn)、業(yè)務(wù)結(jié)點(diǎn)之間的鏈路或者關(guān)注的數(shù)據(jù)流等,而在物理網(wǎng)絡(luò)視圖,object將是不同的網(wǎng)絡(luò)設(shè)備。
對象(object)由node、connection和flow構(gòu)成。Node指的是一種網(wǎng)絡(luò)資源,代表了網(wǎng)絡(luò)功能結(jié)點(diǎn),如網(wǎng)絡(luò)業(yè)務(wù)結(jié)點(diǎn)、轉(zhuǎn)發(fā)功能結(jié)點(diǎn)(防火墻,負(fù)載均衡器等)或者一系列網(wǎng)絡(luò)功能結(jié)點(diǎn)的邏輯集合(子網(wǎng)、自治域等)。Connection是另外一種網(wǎng)絡(luò)資源,描述了node實(shí)體之間的邏輯鏈路。Connection并不指代具體的物理鏈路,只描述node之間的可達(dá)關(guān)系。Connection作為連通資源,是保證可達(dá)性的必要條件。Flow指的是滿足特定特征的網(wǎng)絡(luò)流量,典型的匹配項(xiàng)是網(wǎng)絡(luò)流量的五元組。
操作(operation)是一個抽象類,定義了為實(shí)現(xiàn)某種網(wǎng)絡(luò)業(yè)務(wù)需求而采取的網(wǎng)絡(luò)動作。如改變特定數(shù)據(jù)流路徑,阻斷不安全訪問等。更詳細(xì)地,operation可以分為帶條件(condition)或限制(constraint)的操作或者不帶條件或限制的操作。
Operation由condition、action和constraint組成。Action是構(gòu)成operation的必要組成部分,表示采取的具體動作。Condition代表了operation的觸發(fā)條件,只有當(dāng)condition滿足時,action才開始生效。Constraint代表對action本身的限制或者對action操作范圍的限制。
結(jié)果(result)代表了一種期待或者避免的最終狀態(tài)。
NEMO語言是基于網(wǎng)絡(luò)抽象模型以及網(wǎng)絡(luò)行為操作的一種DSL。利用有限的關(guān)鍵詞以及特定的語法結(jié)構(gòu),以接近自然語言的形式表示用戶的Intent。
針對NEMO模型中的每個元素對象,NEMO語言對應(yīng)的語法規(guī)則如下所示。
1)對于Node:
METHOD Node node-name Type node-type Contain subnodes Property property-name: propertyvalue。
METHOD指的是對node實(shí)例采取的操作,創(chuàng)建(CREATE)、更新(UPDATE)、刪除(DELETE)以及導(dǎo)入(IMPORT)。Node、Type、Contain和Property是定義Node關(guān)鍵詞。其中Node表明該node的名字標(biāo)識,Type表明了該node的類型,如l2-group;Contain表明了該node包含的內(nèi)部結(jié)點(diǎn),如主機(jī)h1;Property表明了該node的屬性,如ip-prefix。其中,Contain和Property可根據(jù)情況確定是否保留。
2)對于Connection:
METHOD Connection connection-name Type connection-type Endnodes node-names Property property-name: property-value。
METHOD指的是對connection實(shí)例采取的操作,創(chuàng)建(CREATE)、更新(UPDATE)、刪除(DELETE)以及導(dǎo)入(IMPORT)。Connection、Type、Endnodes和Property是定義Connection的關(guān)鍵字。Connection表明該connection的名字標(biāo)識,Type表明該connection的類型,如p2p;Endnodes表明connection連接的node,Property表明該connection的屬性,如bandwidth。其中,Property可根據(jù)情況確定是否保留。
3)對于Flow:
METHOD Flow flow-name Match match-type:match-value。
METHOD指的是對flow實(shí)例采取的操作,創(chuàng)建(CREATE)、更新(UPDATE)、刪除(DELETE)以及導(dǎo)入(IMPORT)。Flow、Match是定義Flow的關(guān)鍵字。Flow表明該flow的名字標(biāo)識,Match表明該flow匹配的特定數(shù)據(jù)包特征,如source ip。
4)對于Operation:
METHOD Operation operation-name Priority value Target object-name Condition conditionexpression Action action-type Constraint constraintexpression。
METHOD指的是對operation實(shí)例采取的操作,創(chuàng)建(CREATE)、更新(UPDATE)、刪除(DELETE)以及導(dǎo)入(IMPORT)。Operation、Priority、Target、Condition、Action和Constraint是定義operation的關(guān)鍵詞。Operation表明該Operation的名字標(biāo)識,Priority表明該Operation的優(yōu)先級,優(yōu)先級越高越先被執(zhí)行,Target表明該Operation操作的對象,如node實(shí)例;Action表明該Operation采取的具體動作,condition表明該Operation的action的觸發(fā)條件,當(dāng)Condition滿足時,Action被觸發(fā),Constraint表明采取action的限制條件。目前NEMO語言支持的object類型、每種object的屬性以及Operation中支持的action、condition請參見文獻(xiàn)[7]。
另外,NEMO語言支持對新object類型和action的擴(kuò)展。語法如下:
METHOD NodeModel/ConnectionModel/FlowModel/ActionModel type-name Property propertyname: property-value-type。
METHOD指的是對model實(shí)例采取的操作,創(chuàng)建(CREATE)、更新(UPDATE)、刪除(DELETE)以及導(dǎo)入(IMPORT)。其中NodeModel、ConnectionModel、FlowModel、ActionModel和Property為定義model的關(guān)鍵字。Property表明每種model的屬性名以及屬性值的數(shù)據(jù)類型。
NEMO引擎是實(shí)現(xiàn)用于意圖描述到物理網(wǎng)絡(luò)配置的核心部件。NEMO引擎在完成Intent到設(shè)備配置時經(jīng)歷了兩個階段,首先完成將Intent業(yè)務(wù)視圖編譯成虛擬網(wǎng)絡(luò)視圖,再將虛擬網(wǎng)絡(luò)視圖映射到物理網(wǎng)絡(luò)視圖上。引擎的架構(gòu)圖如圖4所示。
圖4 NEMO引擎架構(gòu)設(shè)計(jì)
NEMO引擎實(shí)現(xiàn)了從用NEMO語言描述的業(yè)務(wù)需求到具體物理網(wǎng)絡(luò)配置的映射。租戶管理完成用戶虛擬網(wǎng)絡(luò)空間的管理,每個組合獨(dú)享一個VN space,業(yè)務(wù)邏輯管理完成對應(yīng)NEMO描述的業(yè)務(wù)需求的語法檢查,虛擬網(wǎng)絡(luò)管理用于根據(jù)一定的算法生成滿足用戶需求的虛擬網(wǎng)絡(luò),物理網(wǎng)絡(luò)控制域管理實(shí)現(xiàn)了從虛擬網(wǎng)絡(luò)對物理網(wǎng)絡(luò)的映射,而物理網(wǎng)絡(luò)插件是物理網(wǎng)絡(luò)設(shè)備與NEMO引擎的中間件,用于將映射結(jié)果配置到相應(yīng)的物理設(shè)備上。
NEMO引擎在實(shí)現(xiàn)上主要經(jīng)過了兩個階段。
1)編譯階段。NEMO引擎按照特定的算法,將用戶利用NEMO模型(node/connection/flow/operation)表達(dá)的業(yè)務(wù)需求編譯成特定的虛擬網(wǎng)絡(luò),以及對虛擬網(wǎng)絡(luò)的控制。NEMO引擎采用[host,vRouter,vSwitch,vLink]模型來表示虛擬網(wǎng)絡(luò)。具體生成的規(guī)則如下。
①對在業(yè)務(wù)視圖上的每個l2-group包含的host類型的結(jié)點(diǎn)根據(jù)接入位置創(chuàng)建vSwitch,即將接入相同設(shè)備的host創(chuàng)建一個vSwitch,否則,創(chuàng)建多個vSwitch,并將后創(chuàng)建的vSwitch都連接到第一個被創(chuàng)建的vSwitch上。②對業(yè)務(wù)視圖上的每個l3-group類型的結(jié)點(diǎn),創(chuàng)建一個vRouter,并將其中包含的l2-group結(jié)點(diǎn)對應(yīng)的第一個vSwitch連接到vRouter上。③在業(yè)務(wù)視圖上的每個二層ext-group類型的結(jié)點(diǎn)分配一個vSwitch。④在業(yè)務(wù)視圖上的每個三層ext-group類型的結(jié)點(diǎn)分配一個vRouter。⑥對業(yè)務(wù)視圖上l2-group結(jié)點(diǎn)與l3-group結(jié)點(diǎn)連接,相當(dāng)于將l2-group創(chuàng)建的vSwitch連接到l3-group結(jié)點(diǎn)對應(yīng)的vRouter上。⑦在業(yè)務(wù)視圖上l3-group之間的互連,將所有l(wèi)3-group對應(yīng)的vRouter都連接到第一個vRouter上。
一個典型的例子如圖5所示。用戶創(chuàng)建1個l2-group結(jié)點(diǎn)n1,2個外部的l3-group結(jié)點(diǎn),并且該l2-group包含2臺從不同位置接入的主機(jī)。
圖5 業(yè)務(wù)視圖
根據(jù)上述提供的生成虛擬網(wǎng)絡(luò)的規(guī)則,不同位置接入的主機(jī)在生成虛擬網(wǎng)絡(luò)時會創(chuàng)建兩個vSwitch,并將第二個vSwitch連接到第一個vSwitch上。對于外部的l3-group根據(jù)接入位置的不同創(chuàng)建兩個vRouter,并將這兩個vRouter連接到l2-group對應(yīng)的vRouter上。生成的虛擬網(wǎng)絡(luò)視圖如圖6所示。
圖6 虛擬網(wǎng)絡(luò)視圖
2)映射階段。為實(shí)現(xiàn)物理網(wǎng)絡(luò)的控制,需要將編譯生成的虛擬網(wǎng)絡(luò)映射到物理網(wǎng)絡(luò)上。NEMO引擎采用[host,switch,router,path]模型表示對物理網(wǎng)絡(luò)的抽象。虛擬網(wǎng)絡(luò)到物理網(wǎng)絡(luò)的映射算法規(guī)則如下。
①虛擬網(wǎng)絡(luò)中生成的vSwitch會映射到與vSwitch連接主機(jī)的接入設(shè)備上。
②為二層ext-group結(jié)點(diǎn)創(chuàng)建的vSwitch映射到extgroup的接入設(shè)備上。
③為三層ext-group結(jié)點(diǎn)創(chuàng)建的vRouter映射到extgroup的接入設(shè)備上。
④虛擬網(wǎng)絡(luò)中的vRouter(除了③中的)將會被映射到物理網(wǎng)關(guān)或核心路由器上。
⑤虛擬網(wǎng)絡(luò)中的vLink將會被映射到物理網(wǎng)絡(luò)路徑上,該路徑將是各種不同技術(shù)實(shí)現(xiàn)的隧道。
根據(jù)映射算法,將實(shí)現(xiàn)虛擬網(wǎng)絡(luò)到物理網(wǎng)絡(luò)的映射,但該映射過程強(qiáng)烈依賴于底層物理網(wǎng)絡(luò)的狀態(tài),底層網(wǎng)絡(luò)狀態(tài)的異常、資源不足等均可導(dǎo)致映射失敗。因此,NEMO引擎具有發(fā)現(xiàn)底層物理網(wǎng)絡(luò)狀態(tài),并當(dāng)網(wǎng)絡(luò)狀態(tài)發(fā)生變化時觸發(fā)引擎的重映射。
NEMO是用于網(wǎng)絡(luò)業(yè)務(wù)描述、部署的統(tǒng)一抽象模型,適用于任意SDN網(wǎng)絡(luò)(包括數(shù)據(jù)中心、WAN網(wǎng)絡(luò)等)任意網(wǎng)絡(luò)業(yè)務(wù)的部署,但該模型不涉及網(wǎng)元的創(chuàng)建與管理(如NFV中虛擬資源組件的創(chuàng)建)。
本節(jié)介紹利用NEMO語言、NEMO引擎實(shí)現(xiàn)從業(yè)務(wù)需求描述到物理配置的典型實(shí)例。
業(yè)務(wù)需求描述:企業(yè)A有兩個站點(diǎn),總部在北京,分部在深圳。企業(yè)A希望兩個站點(diǎn)之間的視頻連接在9:00-18:00時間內(nèi)享受2Gb/s帶寬,而在其他時間段帶寬為1Gb/s。
利用NEMO語言描述該業(yè)務(wù)需求如下所示。
CREATE Node headquarter Type l2-group Property ippref i x: 192.0.2.0/24, location: Beijing;
CREATE Node site Type l2-group Property ip-prefix:198.51.100.0/24, location: Shenzhen;
CREATE Connection c1 Type p2p Endnodes headquarter, site;
CREATE Flow f1 Match src-ip 192.0.2.0/24, dst-ip 198.51.100.0/24, proto: video;
CREATE Operation o1 Priority 2 Object f1 Condition time > 9 && time < 18 Action qos-bandwidth 2048 M;CREATE Operation o2 Priority 1 Object f1 Action qosbandwidth: 1024 M;
為驗(yàn)證NEMO描述的Intent對物理網(wǎng)絡(luò)的影響,設(shè)計(jì)仿真物理網(wǎng)絡(luò),如圖7所示。該物理網(wǎng)絡(luò)中的交換機(jī)由OpenVswitch仿真。
圖7 BoD場景的仿真物理網(wǎng)絡(luò)
在控制器上下發(fā)NEMO語句,由NEMO引擎完成對物理網(wǎng)絡(luò)的配置。為直觀驗(yàn)證帶寬的變化,現(xiàn)將head所在虛擬機(jī)設(shè)為視頻服務(wù)器,site所在虛擬機(jī)設(shè)置為視頻客戶端,分別在不同時段播放視頻,利用視頻的卡頓來驗(yàn)證帶寬的變化。
圖8是在不同時間段采集的視頻圖像,從圖像上可以直觀感受利用NEMO引擎已經(jīng)實(shí)現(xiàn)了不同時間段帶寬的靈活調(diào)整,實(shí)現(xiàn)了業(yè)務(wù)的快速部署。
圖8 不同時間段采集到視頻
業(yè)務(wù)需求:企業(yè)B的總部在北京,分部在深圳,企業(yè)B希望兩站點(diǎn)之間的HTTP流經(jīng)過特定的防火墻以及負(fù)載均衡器。采用NEMO語言描述該需求如下所示。
CREATE Node headquarter Type l2-group Property ippref i x: 192.0.2.0/24 location: Beijing;
CREATE Node site Type l2-group Property ip-prefix:198.51.100.0/24 location: Shenzhen;
CREATE Connection c1 Type p2p Endnodes headquarter, site;
IMPORT Node fw1 Type fw;
IMPORT Node lb1 Type lb;
CREATE Node chain1 Type chain-group Contain fw1,lb1;
CREATE Connection c2 Type p2p Endnodes headquarter, chain1;
CREATE Connection c3 Type p2p Endnodes chain1,site;
CREATE Flow f1 Match src-ip: 192.0.2.0/24, dst-ip:198.51.100.0/24, dst-port: 80;
CREATE Operation o1 Priority 1 Object f1 Action gothrough: chain1;
為驗(yàn)證是否該業(yè)務(wù)可實(shí)際部署到物理網(wǎng)絡(luò)中,設(shè)計(jì)仿真網(wǎng)絡(luò)如圖9所示。
圖9 業(yè)務(wù)鏈場景仿真物理網(wǎng)絡(luò)
在控制器上下發(fā)NEMO語句,利用主機(jī)之間的HTTP包來驗(yàn)證業(yè)務(wù)是否流經(jīng)業(yè)務(wù)鏈。
經(jīng)驗(yàn)證,當(dāng)防火墻規(guī)則為允許包轉(zhuǎn)發(fā)時,兩站點(diǎn)之間的HTTP包可達(dá),若關(guān)閉防火墻的轉(zhuǎn)發(fā)功能,兩站點(diǎn)之間的HTTP包不可達(dá)。利用在防火墻上設(shè)置規(guī)則,可成功驗(yàn)證兩站點(diǎn)之間通信的業(yè)務(wù)流已經(jīng)被引入到業(yè)務(wù)鏈中。利用NEMO模型,可快速實(shí)現(xiàn)業(yè)務(wù)鏈場景的靈活部署。
目前,面向Intent的SDN北向接口模型還處于研究中,各個標(biāo)準(zhǔn)組織還沒有達(dá)成對這一接口的共識,但在開源領(lǐng)域,一些模型已經(jīng)獲得了廣泛關(guān)注,具有較大影響力。
Neutron為Openstack提供了“網(wǎng)絡(luò)即服務(wù)”的功能,租戶在云中能夠自定義構(gòu)建起一套虛擬網(wǎng)絡(luò)環(huán)境,互聯(lián)其虛擬機(jī),并提供網(wǎng)絡(luò)服務(wù),真正構(gòu)建起一個屬于租戶的虛擬DC,如圖10所示。Neutron將網(wǎng)絡(luò)抽象為網(wǎng)絡(luò)Network、子網(wǎng)subnet、端口port、路由器router等。
圖10 Neutron構(gòu)建的物理網(wǎng)絡(luò)
Neutron的網(wǎng)絡(luò)抽象適用于云計(jì)算網(wǎng)絡(luò)場景,以虛擬機(jī)中心,弱化拓?fù)涓拍?。但該抽象只能描述虛擬機(jī)之間的互通與隔離,不能描述大部分的網(wǎng)絡(luò)業(yè)務(wù),如SLA、QoS等。雖然現(xiàn)在Neutron也在擴(kuò)展,但只是逐個場景的擴(kuò)展,針對一個業(yè)務(wù)需求就實(shí)現(xiàn)一個擴(kuò)展,沒有一個通用的模型來支撐。
針對當(dāng)前大量的三層網(wǎng)絡(luò)業(yè)務(wù)需求,GBP引入了策略模型,使用group和policy rule來描述網(wǎng)絡(luò)業(yè)務(wù)需求,可以很方便地實(shí)現(xiàn)業(yè)務(wù)的自動化和安全性。
GBP將策略作用的對象稱為group,將具有相同策略的虛擬機(jī)組合成group,策略是一些規(guī)則的集合,每個規(guī)則規(guī)定了兩個group之間流量的行為,比如重定向、業(yè)務(wù)鏈等。GBP提出的模型如圖11所示。
GBP模型改善了Neutron的不足,引入了動態(tài)調(diào)整機(jī)制,但GBP提出的模型只關(guān)注對流的處理,不能描述對網(wǎng)絡(luò)拓?fù)?、網(wǎng)絡(luò)資源的請求,適用于數(shù)據(jù)中心網(wǎng)絡(luò),對WAN等復(fù)雜網(wǎng)絡(luò)、復(fù)雜場景并不具有通用性。相對于這些北向接口模型,NEMO模型適用于各種網(wǎng)絡(luò),并且以接近自然語言的方式實(shí)現(xiàn)業(yè)務(wù)的描述,自動完成對網(wǎng)絡(luò)的配置管理,真正實(shí)現(xiàn)了將各種業(yè)務(wù)統(tǒng)一為一種網(wǎng)絡(luò)業(yè)務(wù)模型,實(shí)現(xiàn)業(yè)務(wù)的靈活部署與快速發(fā)放。
本文通過分析SDN領(lǐng)域開放接口演進(jìn)的三個階段,提出新型的網(wǎng)絡(luò)接口應(yīng)是面向網(wǎng)絡(luò)操作意圖的抽象接口,即任何網(wǎng)絡(luò)應(yīng)用只需描述需要達(dá)到的結(jié)果即“What”,而不用關(guān)心實(shí)現(xiàn)該意圖的具體操作過程即“How”。采用“自頂向下”提出了一種新型網(wǎng)絡(luò)業(yè)務(wù)編程語言NEMO,將現(xiàn)有網(wǎng)絡(luò)操作意圖(Network Intent)抽象成一系列的網(wǎng)絡(luò)元語,通過這些網(wǎng)絡(luò)元語的靈活組合形成豐富的網(wǎng)絡(luò)應(yīng)用。另外,本文介紹了NEMO通過對網(wǎng)絡(luò)資源和網(wǎng)絡(luò)行為抽象出的網(wǎng)絡(luò)Intent模型,即[object,operation]和result模型以及一種接近自然語言的語言表現(xiàn)形式,并介紹了NEMO引擎的架構(gòu)設(shè)計(jì),即實(shí)現(xiàn)Intent表示到具體設(shè)備配置的實(shí)現(xiàn)方式。為使用戶更直觀地體驗(yàn)NEMO實(shí)現(xiàn)業(yè)務(wù)部署的靈活性,最后提供了常見網(wǎng)絡(luò)應(yīng)用場景的部署過程以及最終效果。隨著網(wǎng)絡(luò)自動化過程的不斷推進(jìn),提供面向用戶Intent的網(wǎng)絡(luò)操作接口及網(wǎng)絡(luò)整體能力的抽象與開放,必將成為未來網(wǎng)絡(luò)的發(fā)展方向,促進(jìn)SDN網(wǎng)絡(luò)生態(tài)環(huán)境更加繁榮。
圖11 GBP模型
參考文獻(xiàn)
[1]Pat Bosshart, Dan Daly, Glen Gibb, et al. P4: programming protocol-independent packet processors[J]. ACM SIGCOMM Computer Communication, 2014,44(3): 87-95
[2]Christopher J. Intent NBI -Definition and Principles[R].Version V3.August, 2015
[3]Brandon Schlinker, Radhika Niranjan Mysore, Sean Smith,et al. Condor: Better Topologies Through Declarative Design[C]//the 2015 ACM Conference on Special Interest Group on Data Communication, 2015: 449-463
[4]Stefano Vissicchio, Olivier Tilmans, Laurent Vanbever,et al. Central Control Over Distributed Routing[C]//the 2015 ACM Conference on Special Interest Group on Data Communication,2015
[5]Chaithan Prakash, Jeongkeun Lee, Yoshio Turner,et al. PGA:Using Graphs to Express and Automatically Reconcile Network Policies[C]//the 2015 ACM Conference on Special Interest Group on Data Communication,2015:29-42
[6]Renaud Hartert, Stefano Vissicchio, Pierre Schaus,et al. A Declarative and E x p r e s s i v e A p p r o a c h t o Control Forwarding Paths in Carrier-Grade Networks[C]//the 2015 ACM Conference on Special Interest Group on Data Communication,2015
[7]Reference manual[EB/OL].[2016-07-22].https://wiki.opendaylight.org/images/e/ee/Reference_manual.01.pdf