面向意圖的北向接口是一種與網(wǎng)絡(luò)實(shí)現(xiàn)技術(shù)無(wú)關(guān)的北向接口,僅表達(dá)應(yīng)用相關(guān)的詞匯和術(shù)語(yǔ),使得用戶不需要看到VPN、MPLS、路由協(xié)議等具體的網(wǎng)絡(luò)技術(shù)。
SDN北向接口的挑戰(zhàn)
根據(jù)Open Networking Foundation(ONF)的定義,軟件定義網(wǎng)絡(luò)(Software Defined Networking,SDN)構(gòu)架分為垂直的三層:基礎(chǔ)構(gòu)架、控制層和應(yīng)用層。SDN的北向接口(North-Bound Interface,NBI) 位于控制平面和應(yīng)用之間,將控制器提供的網(wǎng)絡(luò)能力和信息進(jìn)行抽象并開(kāi)放給應(yīng)用層使用。因此,NBI對(duì)應(yīng)用的創(chuàng)新和SDN生態(tài)系統(tǒng)的繁榮起著至關(guān)重要的作用。
現(xiàn)有的NBI多關(guān)注在網(wǎng)絡(luò)功能層面。功能型NBI(Functional NBI)通常由網(wǎng)絡(luò)領(lǐng)域的專家,從網(wǎng)絡(luò)系統(tǒng)的角度設(shè)計(jì),并自底向上的考慮NBI能夠提供怎樣的網(wǎng)絡(luò)能力。這種設(shè)計(jì)不需要知道用戶需求,而盡可能多的暴露網(wǎng)絡(luò)的信息和能力,為上層應(yīng)用提供了最大限度的編程能力。這樣的功能型NBI的例子包括:設(shè)備和鏈路的發(fā)現(xiàn)、分配接口ID、設(shè)置設(shè)備的轉(zhuǎn)發(fā)規(guī)則、管理成千上萬(wàn)的網(wǎng)絡(luò)狀態(tài)信息。
然而,讓我們完全站在應(yīng)用開(kāi)發(fā)者的角度,假設(shè)我們并不了解復(fù)雜的網(wǎng)絡(luò)概念和配置。應(yīng)用的開(kāi)發(fā)者希望將更多的精力集中在應(yīng)用功能的體現(xiàn)、用戶交互的友好,在使用網(wǎng)絡(luò)服務(wù)的時(shí)候希望能夠像使用云服務(wù)一樣簡(jiǎn)單、自動(dòng)化,希望網(wǎng)絡(luò)能夠具有靈活的、可靠的和可擴(kuò)展的。這要求網(wǎng)絡(luò)能夠提供一套面向網(wǎng)絡(luò)服務(wù)的、聲明式的、反應(yīng)用戶意圖的NBI(Intent NBI),例如:“在A站點(diǎn)和B站點(diǎn)之間建立連接”,“為我的數(shù)據(jù)中心互聯(lián)(Data Center Interconnection,DCI)提供服務(wù)質(zhì)量保障(Service Level Agreement,SLA)”,“為我的虛擬數(shù)據(jù)中心(Virtual Data Center,VDC)上網(wǎng)提供業(yè)務(wù)鏈(Service Function Chain,SFC)服務(wù)”。
對(duì)于應(yīng)用的開(kāi)發(fā)者來(lái)說(shuō)網(wǎng)絡(luò)服務(wù)接口的復(fù)雜性是網(wǎng)絡(luò)相關(guān)應(yīng)用開(kāi)發(fā)的痛點(diǎn)。復(fù)雜是可擴(kuò)展性的敵人,復(fù)雜使得接口不易于使用,復(fù)雜使應(yīng)用的開(kāi)發(fā)容易出錯(cuò),復(fù)雜阻礙了網(wǎng)絡(luò)相關(guān)應(yīng)用的創(chuàng)新!
解決復(fù)雜性的方法是在控制器平臺(tái)上構(gòu)建一層聲明式的網(wǎng)絡(luò)中間件,應(yīng)用通過(guò)Intent NBI告訴控制器想要做什么而不是怎么去做。由它捕捉到應(yīng)用的意圖,轉(zhuǎn)換成領(lǐng)域和具體技術(shù)相關(guān)的網(wǎng)絡(luò)配置細(xì)節(jié),并隱藏轉(zhuǎn)換過(guò)程的復(fù)雜性。


什么是Intent NBI
為了簡(jiǎn)化消費(fèi)網(wǎng)絡(luò)服務(wù)的應(yīng)用和控制器之間的交互,控制平面應(yīng)該提供一層Intent NBI。Intent NBI是一種與網(wǎng)絡(luò)實(shí)現(xiàn)技術(shù)無(wú)關(guān)的北向接口,僅表達(dá)應(yīng)用相關(guān)的詞匯和術(shù)語(yǔ),使得用戶不需要看到VPN、MPLS、路由協(xié)議等具體的網(wǎng)絡(luò)技術(shù)。Intent NBI自頂向下地從需求視角對(duì)網(wǎng)絡(luò)對(duì)象與能力進(jìn)行抽象,并通過(guò)聲明式的表達(dá)體現(xiàn)使用者的意圖(想做什么),而不是如何去做。Intent NBI表達(dá)了應(yīng)用期望控制器交付的服務(wù)輸出,將控制器變成一個(gè)資源分配和資源管理的“黑盒系統(tǒng)”。
讓我們用乘坐出租車打一個(gè)比方,通常乘客的意圖就是從A地到B地。他不需要知道怎么走,只要對(duì)司機(jī)說(shuō):“嘿,我要去B地?!本瓦@么簡(jiǎn)單,僅包含客戶關(guān)心的信息。同樣,乘客也不需要告訴司機(jī)為什么他要從A地到B地,因?yàn)檫@和乘客的需求無(wú)關(guān)。這樣的例子擴(kuò)展到網(wǎng)絡(luò)服務(wù)領(lǐng)域是完全適用的。
Intent NBI可以為應(yīng)用和應(yīng)用開(kāi)發(fā)帶來(lái)很多的好處:
● ? Intent的描述是聲明式的,并不指定執(zhí)行的方式,使得控制器能夠?yàn)榛贗ntent的請(qǐng)求自動(dòng)的計(jì)算最優(yōu)的結(jié)果,最大程度的滿足請(qǐng)求。
● ? 基于Intent的請(qǐng)求和控制器平臺(tái)及控制器的實(shí)現(xiàn)無(wú)關(guān),它只是體現(xiàn)了應(yīng)用層的需求,并使用應(yīng)用相關(guān)的詞匯和信息。相同的Intent請(qǐng)求可以由不同的控制器通過(guò)不同的方法或算法完成,這也使得應(yīng)用具備跨平臺(tái)的可移植性。
● ?使用Intent NBI的應(yīng)用可以在高層避免沖突的發(fā)生,增加請(qǐng)求的成功率。例如,一個(gè)常規(guī)的連接建立,需要應(yīng)用指定連接路徑經(jīng)過(guò)的網(wǎng)絡(luò)節(jié)點(diǎn),之后控制器在相應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)上下發(fā)配置。然而,如果基于運(yùn)營(yíng)商的某種管理策略,該路徑上的某個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)是此應(yīng)用不可使用的,則這樣的部署請(qǐng)求將會(huì)失敗。如果我們使用Intent,應(yīng)用僅表達(dá)在A和B站點(diǎn)之間建立連接的需求,則控制器可以智能的為該請(qǐng)求選擇一條避開(kāi)指定網(wǎng)絡(luò)節(jié)點(diǎn)的最有路徑,并完成部署。
Intent表述模型
控制器理解Intent請(qǐng)求,需要有一種形式化的模型來(lái)描述Intent。總結(jié)生活中Intent的表述例子,通??梢詺w結(jié)于兩類表達(dá):一種是表達(dá)操作(Operation),表示“想要做什么”;另一種是表達(dá)結(jié)果(Result),表示“希望達(dá)到某一狀態(tài)”。網(wǎng)絡(luò)中意圖表達(dá)的例子有:
● “I want toCREATEa Network for HR (Customer Facing Node)"
● ? "I want toBLOCKthe http flow (Flow)"
● ? "I want toADJUSTthe bandwidth (Connection) to 10G“
● “I want toAVOIDthe bandwidth utilization on the connection greater than 80%. (Result)”
從這些例子中,我們可以得出下面的Intent表述模型:

Intent由Object和Operation,或者Object和Result組成。服務(wù)層網(wǎng)絡(luò)中
● ?對(duì)象,可以總結(jié)為:面向用戶的節(jié)點(diǎn)(Customer Facing Node,CFN)、連接(Connection)和業(yè)務(wù)流(Service Flow)。
● ?操作,描述用戶期望的行為,可以用“在某個(gè)條件下(Condition),做某個(gè)動(dòng)作(Action),同時(shí)遵守某種約束(Constraint)”的模式來(lái)表述。
● ?結(jié)果,描述用戶希望達(dá)到的狀態(tài),可以用“期望達(dá)到某一狀態(tài)”或者“避免達(dá)到某一狀態(tài)”的子句來(lái)表述。
華為的Intent NBI實(shí)踐
華為提出的NEMO項(xiàng)目一直引領(lǐng)Intent NBI的實(shí)踐,提供了一套完整的基于意圖的實(shí)現(xiàn)。NEMO項(xiàng)目開(kāi)發(fā)了一種面向網(wǎng)絡(luò)服務(wù)的編程語(yǔ)言作為一種新的SDN北向接口形式,打破了傳統(tǒng)上“煙囪式”基于場(chǎng)景逐一定義接口的方式,基于Intent的表述模型總結(jié)出一套面向網(wǎng)絡(luò)服務(wù)的原語(yǔ),通過(guò)靈活的組合實(shí)現(xiàn)任意場(chǎng)景應(yīng)用的描述與部署,并通過(guò)15種簡(jiǎn)單的語(yǔ)句替代了傳統(tǒng)上成百上千的API。NEMO語(yǔ)言以更加自然和直接的方式表達(dá)用戶的意圖,網(wǎng)絡(luò)應(yīng)用和開(kāi)發(fā)者在使用NEMO語(yǔ)言描述網(wǎng)絡(luò)服務(wù)時(shí),只需要告訴控制器做什么,而不需要指明如何去做。
NEMO的Intent執(zhí)行引擎實(shí)現(xiàn)了一個(gè)網(wǎng)絡(luò)中間件,隱藏網(wǎng)絡(luò)實(shí)現(xiàn)和部署的復(fù)雜性,將高層次的服務(wù)級(jí)別的Intent轉(zhuǎn)化成真正的網(wǎng)絡(luò)部署,并通過(guò)軟件自動(dòng)化的方式解決網(wǎng)絡(luò)中資源和策略的沖突。創(chuàng)新提出的三層映射架構(gòu),簡(jiǎn)化了Intent到網(wǎng)絡(luò)部署的轉(zhuǎn)換,使得每層映射功能清晰,第三方模塊和新的算法功能可以快速的集成。
此外,NEMO還提供了一系列的支撐工具,比如沙箱,為測(cè)試、仿真和部署都提供了便利,為網(wǎng)絡(luò)應(yīng)用提供了一套集成開(kāi)發(fā)環(huán)境。
業(yè)務(wù)定制與業(yè)務(wù)創(chuàng)新一直倍受運(yùn)營(yíng)商的關(guān)注。NEMO抓住運(yùn)營(yíng)商的需求,面向不同行業(yè)用戶的意圖,基于通用的網(wǎng)絡(luò)操作模式和以應(yīng)用為中心的網(wǎng)絡(luò)模型,為運(yùn)營(yíng)商的業(yè)務(wù)設(shè)計(jì)人員提供一種簡(jiǎn)單易用的網(wǎng)絡(luò)業(yè)務(wù)模板定制方式。使用NEMO語(yǔ)言可以快速的捕捉行業(yè)用戶的意圖,方便的在應(yīng)用中描述其對(duì)網(wǎng)絡(luò)的需求,而將網(wǎng)絡(luò)實(shí)現(xiàn)層面的復(fù)雜性留給SDN控制器,并通過(guò)優(yōu)化的軟件系統(tǒng),自動(dòng)實(shí)現(xiàn)資源的分配、網(wǎng)絡(luò)性能的監(jiān)控、資源與策略的沖突解決,極大的簡(jiǎn)化了運(yùn)營(yíng)商的設(shè)計(jì)工作并加速了業(yè)務(wù)創(chuàng)新和新業(yè)務(wù)的布放。
華為正攜手標(biāo)準(zhǔn)組織IETF、ONF以及開(kāi)源社區(qū)共同完成Intent NBI、相關(guān)模型、NEMO語(yǔ)言語(yǔ)法以及Intent引擎的定義和實(shí)現(xiàn)。
本文轉(zhuǎn)載自:http://developer.huawei.com/ict/cn/site-sdn/article/08