◆李宇衡 劉曉潔
?
一種SDN Intent NBI的意圖一致性問題解決方法
◆李宇衡 劉曉潔
(四川大學計算機學院 四川 610065)
SDN(Software Defined Network)作為一種新型的網絡架構,是當前網絡架構研究的熱點。隨著SDN的發展,其北向接口所暴露的一致性問題越發突出,本文通過對北向接口的發展現狀進行分析,提出了一種在新型北向接口Intent NBI的基礎上解決意圖下發一致性問題的方法,并通過實驗的方式驗證此方法的可行性。
SDN;網絡架構;北向接口;一致性問題
SDN業界普遍認可的定義,來源于開放網絡基金會(Open Network Foundation,ONF)在白皮書《Software-Defined Networking: The New Norm for Networks》中給出的基于OpenFlow的定義。其核心理念是一種將網絡控制功能與轉發功能相分離并能實現可編程控制的網絡新型框架。ONF的SDN定義的基本框架自上而下由應用層、控制層、基礎設施層組成。其中控制層為核心層面,已經衍生出很多開源、非開源的控制器[1]。控制層主要負責處理數據層面資源編排,建立網絡拓撲,管理、轉發信息等,是SDN框架的核心層面。向上與應用層相連接的是北向接口,負責與網絡應用相交互;向下與基礎設施層連接的是南向接口,當前已有公認的國際化標準如OpenFlow、BGP等。基礎設施層負責數據處理、轉發、狀態獲取[5]。
SDN北向接口可以使網路應用通過控制器(controller)方便地調用底層網絡資源,并能及時獲得正確的資源狀態及反饋。因此,網絡應用開發者可以使用軟件編程的方式調用底層網絡資源,直觀地把控整個網絡資源的使用情況,實現對網絡資源的統一調度。近年來各大廠商開始關注北向接口的研究,但是相比于已經有很多公認國際化標準(如OpenFlow,BGP,PCEP等)的南向接口,北向接口因為其與網絡業務的密切聯系,呈現出復雜性、多樣性的特點,并且北向接口設計是否合理、便捷,是否能被廣泛適用于各種SDN控制器,都使得推出一個公認的北向接口標準的難度增加。
傳統的SDN北向接口基于PDP(Policy Decision Point)/PEP(Policy Enforcement Point)“決策-控制”的工作模式,由網絡應用商根據自己的需求制定策略,通過北向接口將策略傳遞給SDN控制器,進而由控制器與下層具體網絡元件進行交互,再由下層具體網絡元件實現網絡應用商的既定策略。這種模式將控制行為分割成任務與執行兩個部分,決策點和策略下發點(PDP)并非是策略的執行點(PEP),并且假定執行點都會按照指令(策略)執行。策略下發點并不清楚當前執行點的執行能力和環境條件,當出現網絡時延或同時多個策略下發點同時下發策略時,下發點彼此之間無法避免可能發生的策略沖突,產生大量的邏輯一致性問題。[2-3]
通常出現這些邏輯一致性問題后,理想解決方法是先在上層解決沖突后,再下發給下層執行無沖突的策略。而目前常見的解決方案沒有實現這種理想方法,是由上層應用系統提供額外的補救解決方案,如:在控制器中設置沖突解決器,在收到下層反饋的原始未解決沖突的策略執行結果后,若出現業務邏輯沖突,再由沖突解決器進行沖突解決,最后下發解決后的方案,這種解決方式額外占用SDN控制器大量的資源與能力,影響整個系統的效率。[8-9]
最近幾年出現一種面向用戶網絡意圖操作的新型北向接口(Intent NBI),Intent NBI是一種與網絡技術實現無關的NBI,網絡應用借助Intent NBI表達其業務意圖,不關注網絡細節和實現技術,豐富網絡應用[7]。這類用戶意圖的聲明式接口,網絡用戶、應用只需描述想要“What”,而無需關心“How”,向用戶隱藏了網絡相關的技術信息,大大降低了網絡用戶、服務的網絡操作難度,使得網絡更容易被操作和使用[11]。這種對網路應用隱藏下層網絡細節和實現技術的理念,為解決一致性問題提供了可行的框架。本文將在Intent NBI接口的基礎上通過借鑒承諾理論思想,實現理想的解決意圖一致性問題的方法。
承諾理論,最初來源于Mark Burgess在挪威奧斯陸大學的博士后研究工作,其初衷是改進基于強制模型的分布式Linux工作站策略。承諾理論采用相反的思路解決沖突問題,即由執行點主動對外承諾,來宣告自身的能力,執行者根據執行點所宣告的能力契合自身的需求,制定策略。這樣改變原有網絡供應商需要闡述“我應該怎么做”的情形,使用者即網絡供應商只需表達“我需要什么服務”的意圖[2]。當前,承諾理論已經發展為分布式系統中關于個體、自制系統之間基于自愿機制的協同模型。
對于新型北向接口(Intent NBI),它相對于上層應用程序可以作為一個整體獨立的接口。這種獨立性,為實現承諾理論提供了可能。根據承諾理論,我們可以把Intent NBI中的執行者定義為基礎設施層的交換機,把承諾接收者定義為SDN 控制器。本文將在Intent NBI上添加實現承諾理論的模塊,用于解決SDN北向接口邏輯一致性問題。
本文提出了一種基于承諾理論的邏輯一致性問題解決方法,并實現了沖突解決模塊,將此模塊以插件形式置于新型北向接口(Intent NBI)上,整體框架如圖1所示。

圖1 方法實現整體結構
每一個網絡設備,如交換機等,在接入SDN網絡(基礎設施層)后,將會主動的把與自己相鄰的網絡設備之間的鏈路流通情況,反饋給上層的SDN控制器,SDN控制器實時保存一個下層網絡設備鏈路連通情況的表,即網絡設備的能力集合。應用層下發意圖后,沖突解決模塊會先對意圖進行整合,將整合結果(單一意圖省略意圖整合過程直接進行下一步),與控制層所維護的網絡能力集進行匹配,得到網絡最大滿足上層意圖的能力意圖,再交給SDN控制器,下發給基礎設施層,進行執行,最后反饋執行結果。
這種在執行意圖前就通過在Intent NBI中的意圖沖突模塊解決沖突的方式,相對于以往在控制器反饋基礎設施層執行意圖結果后,再由上層應用做出沖突解決的方式,將極大的減輕SDN控制器的壓力,提升程序整體效率及質量。
定義1,節點對(pair):表示一個源端點和一個對應的目的端點。結構如下:
pair
其中SrcEndpoint表示源端點,DstEndpoint表示目的端點。
定義2,意圖集(Intents):描述一個或多個具體的意圖指令的集合,結構如下:
Intents{intent1、intent2、……,
intentm| intenti {pair1,pair2,……,pairm}, {action1,action2,……,actionm}>, 0 其中uuid在整個工程中唯一標識一條下發的意圖指令,pair表示本指令所涉及的2個端點,action表示匹配編號相同的pair端點間執行的動作指令。 定義3,節點(endpoint):表示交換機節點,結構如下: endpoint 其中uuid標識唯一節點,InetAddress結構內部封裝節點ip值、主機名等信息。 定義4,動作action:表示兩個端點之間的動作指令,可以是allow、block或者allow|block。 定義5,網絡能力集:表示網絡中每一個節點之間的連通情況的集合Capacity{C1,C2,……,Cn| Ci 交換機SWi接入SDN網絡后,Controller將通過進行網絡拓撲結構更新或者發現添加SWi的具體信息。Controller通過OF Packet Out 指令要求SWi在其所有端口上發出LLDP(Link Layer Discovery Protocol,EEE802.1ab)鏈路探測包。LLDP的源MAC為Controller分配,這里為00:00:00:00:00:01(對每一個交換機,Controller都會分配一個這樣的MAC作為SW標識),LLDP目的MAC地址為組播地址。相鄰的SWj將接收到LLDP,SWj由于無法識別這條流,會將OF協議再發到Controller上[10]。通過LLDP的發送和接收,Controller可計算出交換機之間的拓撲關系。通過上述探測過程,根據SWi和其他SW的連通情況,更新網絡能力集(Capacity)。 (1)上層應用程序,下發意圖intentx(1 ①pairs= pairx∩pairc; ②對于每一個pairs中的pair,設actionx、actionc分別為pair在Intentx、Capacity中對應的動作。則最終pair所對應的動作為actionx在actionc取值范圍內的值。 最后處理模塊把沖突解決后的 intent 圖2 單一意圖處理流程圖 (2)多條意圖指令 SDN上層應用程序,下發意圖集Intents{intent1、intent2、……,intentm},對于intenti(1<= i ①對于只在intenti中出現的pairj,直接將pairj和對應的action加入intent中,intent中Pair大小更新為Pair = Pair∪pairj; ②對于某一元素pairn既存在于Pair又存在于Pairi,action、actioni分別表示pairn在intent、intenti中的對應的action,則最終pairn所對應的action為actioni覆蓋action的結果; ③根據上述方法得到intent后,i加1,循環進行上述步驟,直到處理完最后一個意圖,偽代碼如下所示: for (intent1、intent2、……,intentm,i=1; i<=m ; i++) { if(pairj∈Pairi且pairj?Pair) { intent {pair1,pair2,……,pairm}, {action1,action2,……,actionm} > += } If (pairn∈ Pair且 pairn∈Pairi) { action=actioni } } 通過上述循環,得到解決沖突后的最終意圖集Intents{intent},再把Intent按照單一意圖處理流程處理,將最終的沖突解決后的意圖交給控制器,由控制器下發給基礎設施層執行(如圖3)。 圖3 多意圖處理流程圖 本次實驗,將在opendaylight平臺上的NIC工程下,加入沖突解決模塊,為NIC工程提供對下發的意圖命令提供解決邏輯一致性問題的功能。具體使用的工具及版本如下OpenDaylight-Boron-SR2、mininet-2.2.1、maven-3.5.0。根據設計的數據結構、構建數據類、意圖融合類,添加在NIC項目的compile目錄下,編譯程序,啟動ODL工程并安裝NIC插件。利用mininet產生,如圖4所示的拓撲: 圖4 網絡拓撲結構 Host1、Host2、Host3、Host4的ip分別為10.0.0.1、10.0.0.2、10.0.0.3、10.0.0.4 在模擬的網絡拓撲基礎上,本次實驗將下發7條邏輯沖突的意圖命令,通過運行本文解決沖突的NIC插件模塊對以下7條意圖命令進行邏輯沖突解決,并驗證沖突解決后的結果。 意圖命令1:阻止來自Host1的數據流向Host2,Host3; 意圖命令2:允許來自Host1、Host4、Host3的數據流向Host2; 意圖命令3:允許來自Host1、Host3的數據流向Host2; 意圖命令4:阻止來自Host1的數據流向Host2、Host4; 意圖命令5:允許來自Host2的數據流向Host3、Host4; 意圖命令6:允許來自Host1的數據流向Host3、Host2; 意圖命令7:阻止來自Host3的數據流向Host2。 實驗所用上述7條命令,彼此間形成邏輯沖突。選取前3條都涉及HOST1節點的意圖命令,直接在NIC插件中下發運行。其結果通過mininet驗證各節點間數據連通情況如下圖5所示: 圖5 未處理意圖下發結果圖 從圖5可以看出,對于h1(Host1),不能與h2(Host2)連通。對于意圖命令2和3 都涉及允許h1的數據流入h2,但是由于下發意圖順序落后于意圖命令1(阻止h1數據流如h2),未能實現最終的連通,即沒有具備意圖沖突解決能力。 在NIC插件中添加意圖邏輯沖突解決模塊,并且下發所有7條意圖命令,運行解決模塊,生成的最終命令如圖6所示: 圖6 意圖整合結果圖 根據實驗結果,可以看到,沖突解決模塊,分離每一條意圖命令中的原子級動作(ACTION),采用2.3中的方法將所有原子動作進行匹配、整合形成最終的已解決沖突的意圖,即: 意圖命令1:允許來自Host2的數據流向Host4; 意圖命令2:阻止來自Host1的數據流向Host4; 意圖命令3:允許來自Host4的數據流向Host2; 意圖命令4:阻止來自Host3的數據流向Host2; 意圖命令5:允許來自Host1的數據流向Host3; 意圖命令6:阻止來自Host1的數據流向Host2; 在mininet端驗證端點間數據連通情況如圖7: 圖7 端點連通圖 對于圖7結果,Host1(h1)可以與Host2(h2)、Host(3)相互連通,Host2(h2)與Host4(h4)可以相互連通,證明沖突解決后的意圖命令集合已經生效。 綜上結果,證明了本文方法是解決北向接口邏輯一致性問題的一種有效方式。 本文的解決方法雖然是SDN北向接口一致性問題的一種有效解決方式,但是諸多方面還需要進一步發展和驗證,如性能問題,在同時面臨數量龐大的策略下發情形下,單一控制器處理模塊的處理意圖沖突能力將受到較大的挑戰,其正確率也難以保證。在今后的北向接口發展過程中,將大量的意圖分成小的段,分段處理,再合并分段結果的方法,或許會形成一種新的發展趨勢。 [1]network.51cto.com/art/201502/464650.htm. [2]陳世強, 張子劍, 祝烈煌等.基于多控制器的SDN一致性機制研究[J].北京理工大學, 2016. [3]唐紅, 劉漢江, 陳前鋒等.opendaylight應用指南[M]. 人民郵電出版社, 2016. [4]http://docs.opendaylight.org/en/stable-boron/getting-started-guide/overview.html. [5]軟件定義網絡機械工業出版社,2004. [6]程瑩, 張云勇. SDN應用及北向接口技術[J].信息通信技術, 2014. [7]張巖, 張忠平, 張曼君.基于Intent的SDN北向接口研究綜述[J].信息通信技術, 2016. [8]CANINI M,VENZANO D,PERESINI P,et al. A NICE way to test Openflowaplications[C]//Proc of the 9th USENIX SymponNetworked Systems Design and Implemetation(NSDI).San Jose:USENIX ASSOCIATION, 2012. [9]左青云, 陳鳴, 趙廣松等.基于Openflow 的SDN技術[J].軟件學報,2013. [10]李風凱,張亞麗,夏寅賁. NEMO:一種聲明式網絡編程與業務定制語言[J]. 信息通信技術, 2016. 國家重點研發計劃(2016yfb0800604 2016yf b0800605),國家自然科學基金項目(61572334)。2.2更新網絡能力集過程
2.3邏輯一致性問題解決過程


3 實驗及結果分析




4 總結及展望