華為技術(shù)有限公司 北京 100095
SDN是近年來(lái)網(wǎng)絡(luò)領(lǐng)域的熱點(diǎn)話題,代表著網(wǎng)絡(luò)未來(lái)的發(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)建開(kāi)放、可編程的網(wǎng)絡(luò)體系結(jié)構(gòu),如圖1所示。SDN生態(tài)體系的開(kāi)放與可編程,使得網(wǎng)絡(luò)服務(wù)、應(yīng)用的開(kāi)發(fā)與部署大大加快,支持未來(lái)各種網(wǎng)絡(luò)體系結(jié)構(gòu)和新興業(yè)務(wù)的創(chuàng)新,滿足新應(yīng)用、新技術(shù)的time-tomarket快速部署、發(fā)放的能力。
圖1 網(wǎng)絡(luò)開(kāi)放接口
開(kāi)放、可編程是SDN網(wǎng)絡(luò)的顯著特征。SDN網(wǎng)絡(luò)中,開(kāi)放接口的關(guān)注點(diǎn)逐漸上移,主要經(jīng)歷了三個(gè)階段。
第一階段,網(wǎng)絡(luò)開(kāi)放關(guān)注基礎(chǔ)設(shè)備層的設(shè)備開(kāi)放接口,通過(guò)設(shè)備開(kāi)放接口,直接實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)基礎(chǔ)設(shè)備的控制域編程,通過(guò)直接生成并下發(fā)網(wǎng)絡(luò)基礎(chǔ)設(shè)備(如交換機(jī)、路由器以及網(wǎng)絡(luò)芯片)的轉(zhuǎn)發(fā)表項(xiàng),實(shí)現(xiàn)網(wǎng)絡(luò)對(duì)數(shù)據(jù)報(bào)文轉(zhuǎn)發(fā)行為的控制,在Open Networking Foundation中定義了OpenFlow協(xié)議標(biāo)準(zhǔn)[1],通過(guò)[match, action]的模型方式,生成對(duì)包轉(zhuǎn)發(fā)的轉(zhuǎn)發(fā)表項(xiàng),實(shí)現(xiàn)在網(wǎng)絡(luò)設(shè)備具體的轉(zhuǎn)發(fā)行為的細(xì)節(jié)控制。
第二階段,網(wǎng)絡(luò)開(kāi)放關(guān)注控制器能力開(kāi)放,通過(guò)控制器的開(kāi)放接口,可以實(shí)現(xiàn)特定的功能型、特定場(chǎng)景或技術(shù)方案的網(wǎng)絡(luò)控制能力實(shí)現(xiàn)。在ONF的North Bound Interface Work Group中,定義了大量的不同功能的開(kāi)放接口,如Topology接口,L2VPN、L3VPN接口,Tunnel接口等,這些接口從具體的獨(dú)立的網(wǎng)絡(luò)能力角度,隱藏了具體網(wǎng)絡(luò)設(shè)備的轉(zhuǎn)發(fā)表項(xiàng)細(xì)節(jié)。此階段的控制能力開(kāi)放接口,雖具備了一定的抽象,簡(jiǎn)化了使用流程,使用者仍需具備豐富的網(wǎng)絡(luò)知識(shí)和相關(guān)技術(shù)背景。
當(dāng)前,第三階段,網(wǎng)絡(luò)開(kāi)放關(guān)注系統(tǒng)能力開(kāi)放接口,更注重于網(wǎng)絡(luò)整體能力的抽象與開(kāi)放,提供面向網(wǎng)絡(luò)操作意圖的網(wǎng)絡(luò)操作接口。使用這類(lèi)用戶意圖的聲明式接口,網(wǎng)絡(luò)用戶、應(yīng)用只需描述想要“What”,而無(wú)需關(guān)心“How”[2],向用戶隱藏了網(wǎng)絡(luò)相關(guān)的技術(shù)信息,大大降低了網(wǎng)絡(luò)用戶、服務(wù)的網(wǎng)絡(luò)操作難度,使得網(wǎng)絡(luò)更容易被操作和使用。
近年來(lái)Intent NBI已經(jīng)在標(biāo)準(zhǔn)、學(xué)術(shù)界以及開(kāi)源上越來(lái)越引起人們的關(guān)注與參與。
在標(biāo)準(zhǔn)上,2014年底在IETF成立IB-NEMO討論組,專(zhuān)注于推動(dòng)面向用戶意圖的Intent北向接口,2015年10月成立SUPA(Simplified Use of Policy Abstractions)工作組也將Intent Policy作為未來(lái)網(wǎng)絡(luò)控制領(lǐng)域的核心發(fā)展趨勢(shì),2015年初ONF專(zhuān)門(mén)成立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),該語(yǔ)言也是一種通過(guò)抽象topology、demand、constraint來(lái)描述網(wǎng)絡(luò)行為目標(biāo)(Intent)的語(yǔ)言。University of Wisconsin-Madison大學(xué)發(fā)表的《PGA: Using Graphs to Express and Automatically Reconcile Network Policies》[6],重點(diǎn)研究多用戶Intent Policy的組合計(jì)算和沖突解決方法。
在開(kāi)源領(lǐng)域,ODL、ONOS、OpenStack也都已經(jīng)開(kāi)始涌現(xiàn)面向Intent實(shí)現(xiàn)的開(kāi)源項(xiàng)目。ONOS側(cè)重于Intent Framework,提供一個(gè)Intent整體運(yùn)行環(huán)境與框架,而Intent NBI的具體接口設(shè)計(jì)與實(shí)現(xiàn)的開(kāi)源項(xiàng)目主要集中在opendaylight中。其中,GBP、NEMO、NIC是Opendaylight中面向Intent的主要項(xiàng)目。GBP采用抽象Group和Group之間的通信需求契約Contract來(lái)描述用戶需求,而NIC采用endpoint之間的operation來(lái)描述業(yè)務(wù)需求,但這兩個(gè)項(xiàng)目的主要目標(biāo)應(yīng)用場(chǎng)景為數(shù)據(jù)中心DC內(nèi)的網(wǎng)絡(luò)需求描述,難以實(shí)現(xiàn)、滿足復(fù)雜多樣的WAN網(wǎng)絡(luò)需求。
NEMO通過(guò)對(duì)網(wǎng)絡(luò)資源以及網(wǎng)絡(luò)行為的抽象,提供了免用用戶意圖的Intent模型,并基于該模型設(shè)計(jì)了面向網(wǎng)絡(luò)操作的DSL。相較于紛繁復(fù)雜的功能型接口,NEMO語(yǔ)言利用有限的網(wǎng)絡(luò)抽象元語(yǔ),即可實(shí)現(xiàn)對(duì)網(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ò)需求的語(yǔ)言。通過(guò)這種Intent接口,用戶只需聚焦于真正的業(yè)務(wù)需求,而無(wú)需關(guān)心具體的網(wǎng)絡(luò)實(shí)現(xiàn)技術(shù)。在數(shù)據(jù)存儲(chǔ)領(lǐng)域,一個(gè)成功的應(yīng)用是SQL (Structured Query Language),它將復(fù)雜的數(shù)據(jù)操作抽象成一種統(tǒng)一的、直觀的方式供用戶使用,屏蔽底層數(shù)據(jù)存儲(chǔ)以及操作的具體機(jī)制。借鑒于SQL,NEMO提供了一種高級(jí)的簡(jiǎn)單直觀的網(wǎng)絡(luò)操作語(yǔ)言,屏蔽底層復(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)用對(duì)網(wǎng)絡(luò)需求的Intent描述到最終映射到物理網(wǎng)絡(luò)的配置信息,主要經(jīng)過(guò)以下3個(gè)轉(zhuǎn)變過(guò)程,如圖2所示。
圖2 NEMO總體處理流程與操作方法
1)抽象。從網(wǎng)絡(luò)資源使用角度來(lái)看,網(wǎng)絡(luò)拓?fù)?、轉(zhuǎn)發(fā)能力以及網(wǎng)絡(luò)策略構(gòu)成了網(wǎng)絡(luò)管理的三大核心元素。為方便用戶或應(yīng)用表達(dá)對(duì)網(wǎng)絡(luò)的需求,網(wǎng)絡(luò)核心元素需求被抽象成更加統(tǒng)一、抽象的網(wǎng)絡(luò)對(duì)象模型,屏蔽不同廠家、設(shè)備細(xì)節(jié)的差異,在NEMO模型中,網(wǎng)絡(luò)對(duì)象模型為[object,operation]。對(duì)于三種類(lèi)型的核心網(wǎng)絡(luò)元素,拓?fù)浔怀橄蟪山Y(jié)點(diǎn)(node)以及結(jié)點(diǎn)之間的鏈路(connection);轉(zhuǎn)發(fā)能力被抽象成不同種類(lèi)的流( fl ow);網(wǎng)絡(luò)策略被抽象成各種網(wǎng)絡(luò)操作,如條件(condition)、行為(action)以及約束(constraint)。
2)編排組合。利用抽象出的網(wǎng)絡(luò)對(duì)象模型,用戶或者網(wǎng)絡(luò)應(yīng)用可以根據(jù)自己的需求,組合或編排出各種網(wǎng)絡(luò)意圖,實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)資源分配、網(wǎng)絡(luò)業(yè)務(wù)的自定義部署。用戶可以定義被操作對(duì)象object,以及作用在網(wǎng)絡(luò)對(duì)象上的網(wǎng)絡(luò)行為,實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)的整體控制,如網(wǎng)絡(luò)資源申請(qǐng)、拓?fù)涔芾?、帶寬控制、SLA等。
3)編譯和映射。用戶使用NEMO語(yǔ)言表述的目標(biāo)需求,首先經(jīng)過(guò)編譯處理,將用戶的業(yè)務(wù)資源需求視圖生成用戶獨(dú)立的虛擬網(wǎng)絡(luò)需求視圖;經(jīng)過(guò)映射邏輯,實(shí)現(xiàn)用戶的虛擬網(wǎng)絡(luò)需求視圖到真實(shí)物理網(wǎng)絡(luò)的部署。
1)對(duì)用戶的網(wǎng)絡(luò)操作意圖的抽象,得到網(wǎng)絡(luò)目標(biāo)信息模型。
2)以用戶為中心的北向接口設(shè)計(jì),以網(wǎng)絡(luò)用戶、服務(wù)的網(wǎng)絡(luò)操作為角度,抽象關(guān)鍵詞,形成平臺(tái)無(wú)關(guān)、底層網(wǎng)絡(luò)技術(shù)無(wú)關(guān)、聲明式(declarative)的語(yǔ)言。
3)網(wǎng)絡(luò)用戶的Intent需求描述要可靈活組合、安全、可理解、無(wú)二義性,編譯、映射結(jié)果要無(wú)沖突。
4)可映射,可以實(shí)現(xiàn)用戶高級(jí)抽象的業(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的映射,同時(shí)滿足新增南向網(wǎng)絡(luò)技術(shù)的在線加載。
6)多租戶的支持,用戶之間的業(yè)務(wù)視圖、網(wǎng)絡(luò)視圖要相互隔離、互不影響,每個(gè)租戶擁有自己的絕對(duì)安全的網(wǎng)絡(luò)使用空間。
7)網(wǎng)絡(luò)變化自適應(yīng),對(duì)于網(wǎng)絡(luò)的異常、網(wǎng)絡(luò)性能變化,能夠自動(dòng)重新進(jìn)行虛擬網(wǎng)絡(luò)到物理網(wǎng)絡(luò)的映射、部署,網(wǎng)絡(luò)用戶、服務(wù)感知不到網(wǎng)絡(luò)變化,降低網(wǎng)絡(luò)異常對(duì)業(yè)務(wù)的影響。
NEMO作為將用戶業(yè)務(wù)需求轉(zhuǎn)換為物理網(wǎng)絡(luò)配置的一整套系統(tǒng),包括NEMO模型、具體語(yǔ)言表現(xiàn)形式以及NEMO引擎對(duì)用戶需求的處理以及對(duì)物理網(wǎng)絡(luò)的映射。本節(jié)將會(huì)介紹NEMO模型、語(yǔ)言以及NEMO引擎的設(shè)計(jì),還會(huì)列舉幾個(gè)典型的應(yīng)用實(shí)例。
現(xiàn)有的網(wǎng)絡(luò)資源和業(yè)務(wù)抽象采用“自底向上”的抽象方式,聚焦在控制器的能力開(kāi)放上,而非從網(wǎng)絡(luò)用戶操作需求角度出發(fā),難以滿足用戶意圖,并且,功能型接口隨著網(wǎng)絡(luò)功能的增加層出不窮,很難收斂,不同功能型接口很難配合拉通,難以實(shí)現(xiàn)組合和復(fù)用。為解決這些問(wèn)題,NEMO提供一套通用的用戶Intent描述的接口和語(yǔ)言的表述方式,實(shí)現(xiàn)復(fù)雜的網(wǎng)絡(luò)需求功能。
從對(duì)Intent處理流程來(lái)看,NEMO抽象可以分成三個(gè)層次,即業(yè)務(wù)視圖層、虛擬網(wǎng)絡(luò)視圖層和物理網(wǎng)絡(luò)視圖層。通用的抽象模型應(yīng)該能夠適用于各個(gè)層次的不同需求。分析每個(gè)層次的不同需求,均可以表示為[object,operation],即對(duì)某對(duì)象進(jìn)行何種操作。為適應(yīng)不同層次的需求,object和operation在各個(gè)層次會(huì)有不同的實(shí)例以及不同的屬性。除了采取確定操作的Intent外,用戶也可以僅表明期待或避免的結(jié)果,而不指定采用何種operation達(dá)到這種狀態(tài),因此,result是NEMO模型對(duì)Intent的另一種抽象。
使用基于模型的抽象方法(Model-based Abstraction)對(duì)網(wǎng)絡(luò)資源和業(yè)務(wù)進(jìn)行抽象,可以將intent抽象為對(duì)象(object)、操作(operation)以及結(jié)果(result),如圖3所示。用戶只需表明最終的網(wǎng)絡(luò)狀態(tài),而不必關(guān)心如何達(dá)到這種網(wǎng)絡(luò)狀態(tài)。例如,保證所有鏈路的利用率小于80%。用戶無(wú)需關(guān)心采取何種operation去實(shí)現(xiàn)這個(gè)狀態(tài)。
圖3 NEMO模型
對(duì)象(object)是一個(gè)抽象類(lèi),定義了被管理或被作用的對(duì)象,在不同層次中可以被繼承或者擴(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è)備。
對(duì)象(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)是一個(gè)抽象類(lèi),定義了為實(shí)現(xiàn)某種網(wǎng)絡(luò)業(yè)務(wù)需求而采取的網(wǎng)絡(luò)動(dòng)作。如改變特定數(shù)據(jù)流路徑,阻斷不安全訪問(wèn)等。更詳細(xì)地,operation可以分為帶條件(condition)或限制(constraint)的操作或者不帶條件或限制的操作。
Operation由condition、action和constraint組成。Action是構(gòu)成operation的必要組成部分,表示采取的具體動(dòng)作。Condition代表了operation的觸發(fā)條件,只有當(dāng)condition滿足時(shí),action才開(kāi)始生效。Constraint代表對(duì)action本身的限制或者對(duì)action操作范圍的限制。
結(jié)果(result)代表了一種期待或者避免的最終狀態(tài)。
NEMO語(yǔ)言是基于網(wǎng)絡(luò)抽象模型以及網(wǎng)絡(luò)行為操作的一種DSL。利用有限的關(guān)鍵詞以及特定的語(yǔ)法結(jié)構(gòu),以接近自然語(yǔ)言的形式表示用戶的Intent。
針對(duì)NEMO模型中的每個(gè)元素對(duì)象,NEMO語(yǔ)言對(duì)應(yīng)的語(yǔ)法規(guī)則如下所示。
1)對(duì)于Node:
METHOD Node node-name Type node-type Contain subnodes Property property-name: propertyvalue。
METHOD指的是對(duì)node實(shí)例采取的操作,創(chuàng)建(CREATE)、更新(UPDATE)、刪除(DELETE)以及導(dǎo)入(IMPORT)。Node、Type、Contain和Property是定義Node關(guān)鍵詞。其中Node表明該node的名字標(biāo)識(shí),Type表明了該node的類(lèi)型,如l2-group;Contain表明了該node包含的內(nèi)部結(jié)點(diǎn),如主機(jī)h1;Property表明了該node的屬性,如ip-prefix。其中,Contain和Property可根據(jù)情況確定是否保留。
2)對(duì)于Connection:
METHOD Connection connection-name Type connection-type Endnodes node-names Property property-name: property-value。
METHOD指的是對(duì)connection實(shí)例采取的操作,創(chuàng)建(CREATE)、更新(UPDATE)、刪除(DELETE)以及導(dǎo)入(IMPORT)。Connection、Type、Endnodes和Property是定義Connection的關(guān)鍵字。Connection表明該connection的名字標(biāo)識(shí),Type表明該connection的類(lèi)型,如p2p;Endnodes表明connection連接的node,Property表明該connection的屬性,如bandwidth。其中,Property可根據(jù)情況確定是否保留。
3)對(duì)于Flow:
METHOD Flow flow-name Match match-type:match-value。
METHOD指的是對(duì)flow實(shí)例采取的操作,創(chuàng)建(CREATE)、更新(UPDATE)、刪除(DELETE)以及導(dǎo)入(IMPORT)。Flow、Match是定義Flow的關(guān)鍵字。Flow表明該flow的名字標(biāo)識(shí),Match表明該flow匹配的特定數(shù)據(jù)包特征,如source ip。
4)對(duì)于Operation:
METHOD Operation operation-name Priority value Target object-name Condition conditionexpression Action action-type Constraint constraintexpression。
METHOD指的是對(duì)operation實(shí)例采取的操作,創(chuàng)建(CREATE)、更新(UPDATE)、刪除(DELETE)以及導(dǎo)入(IMPORT)。Operation、Priority、Target、Condition、Action和Constraint是定義operation的關(guān)鍵詞。Operation表明該Operation的名字標(biāo)識(shí),Priority表明該Operation的優(yōu)先級(jí),優(yōu)先級(jí)越高越先被執(zhí)行,Target表明該Operation操作的對(duì)象,如node實(shí)例;Action表明該Operation采取的具體動(dòng)作,condition表明該Operation的action的觸發(fā)條件,當(dāng)Condition滿足時(shí),Action被觸發(fā),Constraint表明采取action的限制條件。目前NEMO語(yǔ)言支持的object類(lèi)型、每種object的屬性以及Operation中支持的action、condition請(qǐng)參見(jiàn)文獻(xiàn)[7]。
另外,NEMO語(yǔ)言支持對(duì)新object類(lèi)型和action的擴(kuò)展。語(yǔ)法如下:
METHOD NodeModel/ConnectionModel/FlowModel/ActionModel type-name Property propertyname: property-value-type。
METHOD指的是對(duì)model實(shí)例采取的操作,創(chuàng)建(CREATE)、更新(UPDATE)、刪除(DELETE)以及導(dǎo)入(IMPORT)。其中NodeModel、ConnectionModel、FlowModel、ActionModel和Property為定義model的關(guān)鍵字。Property表明每種model的屬性名以及屬性值的數(shù)據(jù)類(lèi)型。
NEMO引擎是實(shí)現(xiàn)用于意圖描述到物理網(wǎng)絡(luò)配置的核心部件。NEMO引擎在完成Intent到設(shè)備配置時(shí)經(jīng)歷了兩個(gè)階段,首先完成將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ǔ)言描述的業(yè)務(wù)需求到具體物理網(wǎng)絡(luò)配置的映射。租戶管理完成用戶虛擬網(wǎng)絡(luò)空間的管理,每個(gè)組合獨(dú)享一個(gè)VN space,業(yè)務(wù)邏輯管理完成對(duì)應(yīng)NEMO描述的業(yè)務(wù)需求的語(yǔ)法檢查,虛擬網(wǎng)絡(luò)管理用于根據(jù)一定的算法生成滿足用戶需求的虛擬網(wǎng)絡(luò),物理網(wǎng)絡(luò)控制域管理實(shí)現(xiàn)了從虛擬網(wǎng)絡(luò)對(duì)物理網(wǎng)絡(luò)的映射,而物理網(wǎng)絡(luò)插件是物理網(wǎng)絡(luò)設(shè)備與NEMO引擎的中間件,用于將映射結(jié)果配置到相應(yīng)的物理設(shè)備上。
NEMO引擎在實(shí)現(xiàn)上主要經(jīng)過(guò)了兩個(gè)階段。
1)編譯階段。NEMO引擎按照特定的算法,將用戶利用NEMO模型(node/connection/flow/operation)表達(dá)的業(yè)務(wù)需求編譯成特定的虛擬網(wǎng)絡(luò),以及對(duì)虛擬網(wǎng)絡(luò)的控制。NEMO引擎采用[host,vRouter,vSwitch,vLink]模型來(lái)表示虛擬網(wǎng)絡(luò)。具體生成的規(guī)則如下。
①對(duì)在業(yè)務(wù)視圖上的每個(gè)l2-group包含的host類(lèi)型的結(jié)點(diǎn)根據(jù)接入位置創(chuàng)建vSwitch,即將接入相同設(shè)備的host創(chuàng)建一個(gè)vSwitch,否則,創(chuàng)建多個(gè)vSwitch,并將后創(chuàng)建的vSwitch都連接到第一個(gè)被創(chuàng)建的vSwitch上。②對(duì)業(yè)務(wù)視圖上的每個(gè)l3-group類(lèi)型的結(jié)點(diǎn),創(chuàng)建一個(gè)vRouter,并將其中包含的l2-group結(jié)點(diǎn)對(duì)應(yīng)的第一個(gè)vSwitch連接到vRouter上。③在業(yè)務(wù)視圖上的每個(gè)二層ext-group類(lèi)型的結(jié)點(diǎn)分配一個(gè)vSwitch。④在業(yè)務(wù)視圖上的每個(gè)三層ext-group類(lèi)型的結(jié)點(diǎn)分配一個(gè)vRouter。⑥對(duì)業(yè)務(wù)視圖上l2-group結(jié)點(diǎn)與l3-group結(jié)點(diǎn)連接,相當(dāng)于將l2-group創(chuàng)建的vSwitch連接到l3-group結(jié)點(diǎn)對(duì)應(yīng)的vRouter上。⑦在業(yè)務(wù)視圖上l3-group之間的互連,將所有l(wèi)3-group對(duì)應(yīng)的vRouter都連接到第一個(gè)vRouter上。
一個(gè)典型的例子如圖5所示。用戶創(chuàng)建1個(gè)l2-group結(jié)點(diǎn)n1,2個(gè)外部的l3-group結(jié)點(diǎn),并且該l2-group包含2臺(tái)從不同位置接入的主機(jī)。
圖5 業(yè)務(wù)視圖
根據(jù)上述提供的生成虛擬網(wǎng)絡(luò)的規(guī)則,不同位置接入的主機(jī)在生成虛擬網(wǎng)絡(luò)時(shí)會(huì)創(chuàng)建兩個(gè)vSwitch,并將第二個(gè)vSwitch連接到第一個(gè)vSwitch上。對(duì)于外部的l3-group根據(jù)接入位置的不同創(chuàng)建兩個(gè)vRouter,并將這兩個(gè)vRouter連接到l2-group對(duì)應(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]模型表示對(duì)物理網(wǎng)絡(luò)的抽象。虛擬網(wǎng)絡(luò)到物理網(wǎng)絡(luò)的映射算法規(guī)則如下。
①虛擬網(wǎng)絡(luò)中生成的vSwitch會(huì)映射到與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(除了③中的)將會(huì)被映射到物理網(wǎng)關(guān)或核心路由器上。
⑤虛擬網(wǎng)絡(luò)中的vLink將會(huì)被映射到物理網(wǎng)絡(luò)路徑上,該路徑將是各種不同技術(shù)實(shí)現(xiàn)的隧道。
根據(jù)映射算法,將實(shí)現(xiàn)虛擬網(wǎng)絡(luò)到物理網(wǎng)絡(luò)的映射,但該映射過(guò)程強(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ā)生變化時(shí)觸發(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語(yǔ)言、NEMO引擎實(shí)現(xiàn)從業(yè)務(wù)需求描述到物理配置的典型實(shí)例。
業(yè)務(wù)需求描述:企業(yè)A有兩個(gè)站點(diǎn),總部在北京,分部在深圳。企業(yè)A希望兩個(gè)站點(diǎn)之間的視頻連接在9:00-18:00時(shí)間內(nèi)享受2Gb/s帶寬,而在其他時(shí)間段帶寬為1Gb/s。
利用NEMO語(yǔ)言描述該業(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對(duì)物理網(wǎng)絡(luò)的影響,設(shè)計(jì)仿真物理網(wǎng)絡(luò),如圖7所示。該物理網(wǎng)絡(luò)中的交換機(jī)由OpenVswitch仿真。
圖7 BoD場(chǎng)景的仿真物理網(wǎng)絡(luò)
在控制器上下發(fā)NEMO語(yǔ)句,由NEMO引擎完成對(duì)物理網(wǎng)絡(luò)的配置。為直觀驗(yàn)證帶寬的變化,現(xiàn)將head所在虛擬機(jī)設(shè)為視頻服務(wù)器,site所在虛擬機(jī)設(shè)置為視頻客戶端,分別在不同時(shí)段播放視頻,利用視頻的卡頓來(lái)驗(yàn)證帶寬的變化。
圖8是在不同時(shí)間段采集的視頻圖像,從圖像上可以直觀感受利用NEMO引擎已經(jīng)實(shí)現(xiàn)了不同時(shí)間段帶寬的靈活調(diào)整,實(shí)現(xiàn)了業(yè)務(wù)的快速部署。
圖8 不同時(shí)間段采集到視頻
業(yè)務(wù)需求:企業(yè)B的總部在北京,分部在深圳,企業(yè)B希望兩站點(diǎn)之間的HTTP流經(jīng)過(guò)特定的防火墻以及負(fù)載均衡器。采用NEMO語(yǔ)言描述該需求如下所示。
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ù)鏈場(chǎng)景仿真物理網(wǎng)絡(luò)
在控制器上下發(fā)NEMO語(yǔ)句,利用主機(jī)之間的HTTP包來(lái)驗(yàn)證業(yè)務(wù)是否流經(jīng)業(yè)務(wù)鏈。
經(jīng)驗(yàn)證,當(dāng)防火墻規(guī)則為允許包轉(zhuǎn)發(fā)時(shí),兩站點(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ù)鏈場(chǎng)景的靈活部署。
目前,面向Intent的SDN北向接口模型還處于研究中,各個(gè)標(biāo)準(zhǔn)組織還沒(méi)有達(dá)成對(duì)這一接口的共識(shí),但在開(kāi)源領(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)建起一個(gè)屬于租戶的虛擬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ò)場(chǎng)景,以虛擬機(jī)中心,弱化拓?fù)涓拍?。但該抽象只能描述虛擬機(jī)之間的互通與隔離,不能描述大部分的網(wǎng)絡(luò)業(yè)務(wù),如SLA、QoS等。雖然現(xiàn)在Neutron也在擴(kuò)展,但只是逐個(gè)場(chǎng)景的擴(kuò)展,針對(duì)一個(gè)業(yè)務(wù)需求就實(shí)現(xiàn)一個(gè)擴(kuò)展,沒(méi)有一個(gè)通用的模型來(lái)支撐。
針對(duì)當(dāng)前大量的三層網(wǎng)絡(luò)業(yè)務(wù)需求,GBP引入了策略模型,使用group和policy rule來(lái)描述網(wǎng)絡(luò)業(yè)務(wù)需求,可以很方便地實(shí)現(xiàn)業(yè)務(wù)的自動(dòng)化和安全性。
GBP將策略作用的對(duì)象稱為group,將具有相同策略的虛擬機(jī)組合成group,策略是一些規(guī)則的集合,每個(gè)規(guī)則規(guī)定了兩個(gè)group之間流量的行為,比如重定向、業(yè)務(wù)鏈等。GBP提出的模型如圖11所示。
GBP模型改善了Neutron的不足,引入了動(dòng)態(tài)調(diào)整機(jī)制,但GBP提出的模型只關(guān)注對(duì)流的處理,不能描述對(duì)網(wǎng)絡(luò)拓?fù)洹⒕W(wǎng)絡(luò)資源的請(qǐng)求,適用于數(shù)據(jù)中心網(wǎng)絡(luò),對(duì)WAN等復(fù)雜網(wǎng)絡(luò)、復(fù)雜場(chǎng)景并不具有通用性。相對(duì)于這些北向接口模型,NEMO模型適用于各種網(wǎng)絡(luò),并且以接近自然語(yǔ)言的方式實(shí)現(xiàn)業(yè)務(wù)的描述,自動(dòng)完成對(duì)網(wǎng)絡(luò)的配置管理,真正實(shí)現(xiàn)了將各種業(yè)務(wù)統(tǒng)一為一種網(wǎng)絡(luò)業(yè)務(wù)模型,實(shí)現(xiàn)業(yè)務(wù)的靈活部署與快速發(fā)放。
本文通過(guò)分析SDN領(lǐng)域開(kāi)放接口演進(jìn)的三個(gè)階段,提出新型的網(wǎng)絡(luò)接口應(yīng)是面向網(wǎng)絡(luò)操作意圖的抽象接口,即任何網(wǎng)絡(luò)應(yīng)用只需描述需要達(dá)到的結(jié)果即“What”,而不用關(guān)心實(shí)現(xiàn)該意圖的具體操作過(guò)程即“How”。采用“自頂向下”提出了一種新型網(wǎng)絡(luò)業(yè)務(wù)編程語(yǔ)言NEMO,將現(xiàn)有網(wǎng)絡(luò)操作意圖(Network Intent)抽象成一系列的網(wǎng)絡(luò)元語(yǔ),通過(guò)這些網(wǎng)絡(luò)元語(yǔ)的靈活組合形成豐富的網(wǎng)絡(luò)應(yīng)用。另外,本文介紹了NEMO通過(guò)對(duì)網(wǎng)絡(luò)資源和網(wǎng)絡(luò)行為抽象出的網(wǎng)絡(luò)Intent模型,即[object,operation]和result模型以及一種接近自然語(yǔ)言的語(yǔ)言表現(xiàn)形式,并介紹了NEMO引擎的架構(gòu)設(shè)計(jì),即實(shí)現(xiàn)Intent表示到具體設(shè)備配置的實(shí)現(xiàn)方式。為使用戶更直觀地體驗(yàn)NEMO實(shí)現(xiàn)業(yè)務(wù)部署的靈活性,最后提供了常見(jiàn)網(wǎng)絡(luò)應(yīng)用場(chǎng)景的部署過(guò)程以及最終效果。隨著網(wǎng)絡(luò)自動(dòng)化過(guò)程的不斷推進(jìn),提供面向用戶Intent的網(wǎng)絡(luò)操作接口及網(wǎng)絡(luò)整體能力的抽象與開(kāi)放,必將成為未來(lái)網(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