面向意圖的北向接口是一種與網(wǎng)絡(luò)實現(xiàn)技術(shù)無關(guān)的北向接口顺囊,僅表達(dá)應(yīng)用相關(guān)的詞匯和術(shù)語,使得用戶不需要看到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)行抽象并開放給應(yīng)用層使用。因此蒸其,NBI對應(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è)計钥顽,并自底向上的考慮NBI能夠提供怎樣的網(wǎng)絡(luò)能力。這種設(shè)計不需要知道用戶需求靠汁,而盡可能多的暴露網(wǎng)絡(luò)的信息和能力蜂大,為上層應(yīng)用提供了最大限度的編程能力。這樣的功能型NBI的例子包括:設(shè)備和鏈路的發(fā)現(xiàn)蝶怔、分配接口ID奶浦、設(shè)置設(shè)備的轉(zhuǎn)發(fā)規(guī)則坷襟、管理成千上萬的網(wǎng)絡(luò)狀態(tài)信息身诺。
然而骄瓣,讓我們完全站在應(yīng)用開發(fā)者的角度麦备,假設(shè)我們并不了解復(fù)雜的網(wǎng)絡(luò)概念和配置。應(yīng)用的開發(fā)者希望將更多的精力集中在應(yīng)用功能的體現(xiàn)之众、用戶交互的友好癞蚕,在使用網(wǎng)絡(luò)服務(wù)的時候希望能夠像使用云服務(wù)一樣簡單颗祝、自動化所踊,希望網(wǎng)絡(luò)能夠具有靈活的、可靠的和可擴(kuò)展的概荷。這要求網(wǎng)絡(luò)能夠提供一套面向網(wǎng)絡(luò)服務(wù)的秕岛、聲明式的、反應(yīng)用戶意圖的NBI(Intent NBI)误证,例如:“在A站點和B站點之間建立連接”继薛,“為我的數(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ù)”灌具。
對于應(yīng)用的開發(fā)者來說網(wǎng)絡(luò)服務(wù)接口的復(fù)雜性是網(wǎng)絡(luò)相關(guān)應(yīng)用開發(fā)的痛點。復(fù)雜是可擴(kuò)展性的敵人譬巫,復(fù)雜使得接口不易于使用咖楣,復(fù)雜使應(yīng)用的開發(fā)容易出錯,復(fù)雜阻礙了網(wǎng)絡(luò)相關(guān)應(yīng)用的創(chuàng)新芦昔!
解決復(fù)雜性的方法是在控制器平臺上構(gòu)建一層聲明式的網(wǎng)絡(luò)中間件诱贿,應(yīng)用通過Intent NBI告訴控制器想要做什么而不是怎么去做。由它捕捉到應(yīng)用的意圖,轉(zhuǎn)換成領(lǐng)域和具體技術(shù)相關(guān)的網(wǎng)絡(luò)配置細(xì)節(jié)珠十,并隱藏轉(zhuǎn)換過程的復(fù)雜性料扰。
什么是Intent NBI
為了簡化消費網(wǎng)絡(luò)服務(wù)的應(yīng)用和控制器之間的交互,控制平面應(yīng)該提供一層Intent NBI焙蹭。Intent NBI是一種與網(wǎng)絡(luò)實現(xiàn)技術(shù)無關(guān)的北向接口晒杈,僅表達(dá)應(yīng)用相關(guān)的詞匯和術(shù)語,使得用戶不需要看到VPN壳嚎、MPLS桐智、路由協(xié)議等具體的網(wǎng)絡(luò)技術(shù)。Intent NBI自頂向下地從需求視角對網(wǎng)絡(luò)對象與能力進(jìn)行抽象烟馅,并通過聲明式的表達(dá)體現(xiàn)使用者的意圖(想做什么)说庭,而不是如何去做。Intent NBI表達(dá)了應(yīng)用期望控制器交付的服務(wù)輸出郑趁,將控制器變成一個資源分配和資源管理的“黑盒系統(tǒng)”刊驴。
讓我們用乘坐出租車打一個比方,通常乘客的意圖就是從A地到B地寡润。他不需要知道怎么走捆憎,只要對司機(jī)說:“嘿,我要去B地梭纹《愣瑁”就這么簡單,僅包含客戶關(guān)心的信息变抽。同樣础拨,乘客也不需要告訴司機(jī)為什么他要從A地到B地,因為這和乘客的需求無關(guān)绍载。這樣的例子擴(kuò)展到網(wǎng)絡(luò)服務(wù)領(lǐng)域是完全適用的诡宗。
Intent NBI可以為應(yīng)用和應(yīng)用開發(fā)帶來很多的好處:
● ? Intent的描述是聲明式的,并不指定執(zhí)行的方式击儡,使得控制器能夠為基于Intent的請求自動的計算最優(yōu)的結(jié)果塔沃,最大程度的滿足請求。
● ? 基于Intent的請求和控制器平臺及控制器的實現(xiàn)無關(guān)阳谍,它只是體現(xiàn)了應(yīng)用層的需求蛀柴,并使用應(yīng)用相關(guān)的詞匯和信息。相同的Intent請求可以由不同的控制器通過不同的方法或算法完成矫夯,這也使得應(yīng)用具備跨平臺的可移植性名扛。
● ?使用Intent NBI的應(yīng)用可以在高層避免沖突的發(fā)生,增加請求的成功率茧痒。例如肮韧,一個常規(guī)的連接建立,需要應(yīng)用指定連接路徑經(jīng)過的網(wǎng)絡(luò)節(jié)點,之后控制器在相應(yīng)的網(wǎng)絡(luò)節(jié)點上下發(fā)配置弄企。然而超燃,如果基于運營商的某種管理策略,該路徑上的某個網(wǎng)絡(luò)節(jié)點是此應(yīng)用不可使用的拘领,則這樣的部署請求將會失敗意乓。如果我們使用Intent,應(yīng)用僅表達(dá)在A和B站點之間建立連接的需求约素,則控制器可以智能的為該請求選擇一條避開指定網(wǎng)絡(luò)節(jié)點的最有路徑届良,并完成部署。
Intent表述模型
控制器理解Intent請求圣猎,需要有一種形式化的模型來描述Intent士葫。總結(jié)生活中Intent的表述例子送悔,通陈裕可以歸結(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ò)中
● ?對象祠丝,可以總結(jié)為:面向用戶的節(jié)點(Customer Facing Node疾呻,CFN)、連接(Connection)和業(yè)務(wù)流(Service Flow)纽疟。
● ?操作,描述用戶期望的行為憾赁,可以用“在某個條件下(Condition)污朽,做某個動作(Action),同時遵守某種約束(Constraint)”的模式來表述龙考。
● ?結(jié)果蟆肆,描述用戶希望達(dá)到的狀態(tài),可以用“期望達(dá)到某一狀態(tài)”或者“避免達(dá)到某一狀態(tài)”的子句來表述晦款。
華為的Intent NBI實踐
華為提出的NEMO項目一直引領(lǐng)Intent NBI的實踐炎功,提供了一套完整的基于意圖的實現(xiàn)。NEMO項目開發(fā)了一種面向網(wǎng)絡(luò)服務(wù)的編程語言作為一種新的SDN北向接口形式缓溅,打破了傳統(tǒng)上“煙囪式”基于場景逐一定義接口的方式蛇损,基于Intent的表述模型總結(jié)出一套面向網(wǎng)絡(luò)服務(wù)的原語,通過靈活的組合實現(xiàn)任意場景應(yīng)用的描述與部署,并通過15種簡單的語句替代了傳統(tǒng)上成百上千的API淤齐。NEMO語言以更加自然和直接的方式表達(dá)用戶的意圖股囊,網(wǎng)絡(luò)應(yīng)用和開發(fā)者在使用NEMO語言描述網(wǎng)絡(luò)服務(wù)時,只需要告訴控制器做什么更啄,而不需要指明如何去做稚疹。
NEMO的Intent執(zhí)行引擎實現(xiàn)了一個網(wǎng)絡(luò)中間件,隱藏網(wǎng)絡(luò)實現(xiàn)和部署的復(fù)雜性祭务,將高層次的服務(wù)級別的Intent轉(zhuǎn)化成真正的網(wǎng)絡(luò)部署内狗,并通過軟件自動化的方式解決網(wǎng)絡(luò)中資源和策略的沖突。創(chuàng)新提出的三層映射架構(gòu)义锥,簡化了Intent到網(wǎng)絡(luò)部署的轉(zhuǎn)換柳沙,使得每層映射功能清晰,第三方模塊和新的算法功能可以快速的集成缨该。
此外偎行,NEMO還提供了一系列的支撐工具,比如沙箱贰拿,為測試蛤袒、仿真和部署都提供了便利,為網(wǎng)絡(luò)應(yīng)用提供了一套集成開發(fā)環(huán)境膨更。
業(yè)務(wù)定制與業(yè)務(wù)創(chuàng)新一直倍受運營商的關(guān)注妙真。NEMO抓住運營商的需求,面向不同行業(yè)用戶的意圖荚守,基于通用的網(wǎng)絡(luò)操作模式和以應(yīng)用為中心的網(wǎng)絡(luò)模型珍德,為運營商的業(yè)務(wù)設(shè)計人員提供一種簡單易用的網(wǎng)絡(luò)業(yè)務(wù)模板定制方式。使用NEMO語言可以快速的捕捉行業(yè)用戶的意圖矗漾,方便的在應(yīng)用中描述其對網(wǎng)絡(luò)的需求锈候,而將網(wǎng)絡(luò)實現(xiàn)層面的復(fù)雜性留給SDN控制器,并通過優(yōu)化的軟件系統(tǒng)敞贡,自動實現(xiàn)資源的分配泵琳、網(wǎng)絡(luò)性能的監(jiān)控、資源與策略的沖突解決誊役,極大的簡化了運營商的設(shè)計工作并加速了業(yè)務(wù)創(chuàng)新和新業(yè)務(wù)的布放获列。
華為正攜手標(biāo)準(zhǔn)組織IETF、ONF以及開源社區(qū)共同完成Intent NBI蛔垢、相關(guān)模型击孩、NEMO語言語法以及Intent引擎的定義和實現(xiàn)。
本文轉(zhuǎn)載自:http://developer.huawei.com/ict/cn/site-sdn/article/08