付志英 李鵬
摘要:軟件定義網(wǎng)絡(luò)(SDN)是現(xiàn)代備受關(guān)注的新型網(wǎng)絡(luò)體系結(jié)構(gòu)之一,正逐步革新現(xiàn)存的傳統(tǒng)網(wǎng)絡(luò)體系結(jié)構(gòu)。數(shù)據(jù)平面和控制平面的解耦和、網(wǎng)絡(luò)控制的邏輯集中、用于數(shù)據(jù)轉(zhuǎn)發(fā)策略的流抽象以及網(wǎng)絡(luò)的編程能力是SDN的4個(gè)主要基本概念。介紹了SDN的發(fā)展背景及其緣起;描述了SDN體系結(jié)構(gòu),并從SDN三層架構(gòu)出發(fā)分析SDN的3個(gè)平面、OpenFlow接口以及工作原理,貫穿了SDN的4個(gè)主要基本概念,展望了SDN的發(fā)展趨勢。
關(guān)鍵詞:SDN網(wǎng)絡(luò)體系架構(gòu);OpenFlow;平面解耦合
中圖分類號(hào):TP391.4文獻(xiàn)標(biāo)志碼:A文章編號(hào):1008-1739(2019)17-65-4
0引言
自美國斯坦福大學(xué)研究團(tuán)隊(duì)提出Openflow概念以來,SDN體系架構(gòu)不斷發(fā)展與完善。2012年4月,谷歌宣布其骨干網(wǎng)絡(luò)整體運(yùn)行在Openflow上,已經(jīng)證明SDN逐步從學(xué)術(shù)概念走向?qū)嶋H應(yīng)用。伴隨Openflow技術(shù)商業(yè)化的實(shí)現(xiàn)與不斷深入,SDN也引起了人們的極大關(guān)注。
自21世紀(jì)以來,移動(dòng)數(shù)據(jù)、物聯(lián)網(wǎng)、大數(shù)據(jù)和云計(jì)算4個(gè)領(lǐng)域的興起與發(fā)展,使得現(xiàn)代網(wǎng)絡(luò)應(yīng)用類型急劇豐富,網(wǎng)絡(luò)規(guī)模迅速膨脹,網(wǎng)絡(luò)需求不斷增加。而作為現(xiàn)代計(jì)算機(jī)網(wǎng)絡(luò)主體的互聯(lián)網(wǎng),其管控能力日益減弱,功能與結(jié)構(gòu)日漸復(fù)雜。特別是路由器作為網(wǎng)絡(luò)核心,如分組加密、流量管理等需承載的功能迅速擴(kuò)展,使其作為網(wǎng)絡(luò)轉(zhuǎn)發(fā)設(shè)備變得十分累贅,這說明現(xiàn)存的傳統(tǒng)網(wǎng)絡(luò)體系結(jié)構(gòu)需要革新,SDN應(yīng)運(yùn)而生。
1 SDN
SDN體系架構(gòu)的本質(zhì)源于對(duì)計(jì)算機(jī)模式的模仿[1],如圖1所示,將集成在底層轉(zhuǎn)發(fā)設(shè)備中的數(shù)據(jù)轉(zhuǎn)發(fā)功能與網(wǎng)絡(luò)控制功能解耦和,使之重新變成“簡單的、啞的”轉(zhuǎn)發(fā)設(shè)備,執(zhí)行數(shù)據(jù)轉(zhuǎn)發(fā)功能且提供對(duì)外開放的通用接口;而將網(wǎng)絡(luò)控制功能上移到專門的網(wǎng)絡(luò)控制器,從物理上的分布式控制轉(zhuǎn)化為邏輯上的集中式控制。該控制器通過接口實(shí)現(xiàn)與底層轉(zhuǎn)發(fā)設(shè)備通信和控制。網(wǎng)絡(luò)管理員和開發(fā)者可以直接在專門的網(wǎng)絡(luò)控制器上進(jìn)行網(wǎng)絡(luò)配置、控制和編程。
2 SDN體系結(jié)構(gòu)
2.1 SDN體系結(jié)構(gòu)概述
計(jì)算機(jī)網(wǎng)絡(luò)領(lǐng)域中的所有功能最終都可以歸納為數(shù)據(jù)、控制和管理3個(gè)獨(dú)立的類[2]。因?yàn)槊總€(gè)類的功能不僅需要與同一類相鄰實(shí)體的對(duì)等元素進(jìn)行水平通信的能力,而且又有與其他類進(jìn)行垂直通信的能力,所以通常使用“平面”或“層”來分別表示每一類的功能。對(duì)等通信發(fā)生在同一層內(nèi),而跨類消息傳遞則發(fā)生在層與層之間。
Scott Shenker提出的SDN轉(zhuǎn)發(fā)、分發(fā)和規(guī)范3個(gè)基本抽象與以上這3個(gè)類的功能一一對(duì)應(yīng):①轉(zhuǎn)發(fā)抽象應(yīng)該允許網(wǎng)絡(luò)控制程序所需的轉(zhuǎn)發(fā)行為,同時(shí)隱藏底層轉(zhuǎn)發(fā)設(shè)備的細(xì)節(jié);②分發(fā)抽象應(yīng)該讓SDN應(yīng)用程序避免受到物理上分布式狀態(tài)的影響;③規(guī)范抽象應(yīng)該允許網(wǎng)絡(luò)應(yīng)用程序表達(dá)所需的網(wǎng)絡(luò)行為,而無需負(fù)責(zé)實(shí)現(xiàn)該網(wǎng)絡(luò)行為本身[3]。
對(duì)應(yīng)地,SDN典型體系架構(gòu)分3個(gè)平面,頂層為應(yīng)用平面,包括各種網(wǎng)絡(luò)應(yīng)用和服務(wù);中間層為控制平面,是可編程的控制器,掌控全網(wǎng)信息、負(fù)責(zé)設(shè)計(jì)路由、維護(hù)網(wǎng)絡(luò)狀態(tài)信息與拓?fù)浣Y(jié)構(gòu)、下發(fā)數(shù)據(jù)轉(zhuǎn)發(fā)表、處理下層網(wǎng)絡(luò)轉(zhuǎn)發(fā)設(shè)備資源編排、設(shè)置優(yōu)先級(jí)與路由策略參數(shù)來滿足服務(wù)質(zhì)量和體驗(yàn)質(zhì)量要求;最下層為數(shù)據(jù)平面,負(fù)責(zé)數(shù)據(jù)轉(zhuǎn)發(fā)、操作處理和網(wǎng)絡(luò)狀態(tài)收集。這3層平面通過基于特定網(wǎng)絡(luò)抽象協(xié)議實(shí)現(xiàn)的通用接口,即應(yīng)用程序編程接口(Application Programming Interface,API)進(jìn)行連接與通信。
SDN比較常見的一種體系結(jié)構(gòu)如圖2所示[1],自底向上主要包括數(shù)據(jù)平面、南向接口(OpenFlow)、控制平面、北向接口(REST API)和應(yīng)用平面這5部分。
2.2 SDN數(shù)據(jù)平面與南向接口OpenFlow
2.2.1 SDN數(shù)據(jù)平面
SDN數(shù)據(jù)平面由一組交換機(jī)、路由器和中間件等網(wǎng)絡(luò)設(shè)備組成。與傳統(tǒng)網(wǎng)絡(luò)設(shè)備的根本區(qū)別在于,SDN設(shè)備是簡單的網(wǎng)絡(luò)轉(zhuǎn)發(fā)設(shè)備,沒有嵌入式控制或軟件來進(jìn)行自主決策。數(shù)據(jù)平面中一個(gè)簡單的網(wǎng)絡(luò)設(shè)備如圖3所示[1]。該網(wǎng)絡(luò)設(shè)備有3個(gè)輸入/輸出端口:垂直向上的接口用于實(shí)現(xiàn)與SDN控制器通信,水平方向左右2個(gè)分別是數(shù)據(jù)分組的輸入與輸出。網(wǎng)絡(luò)設(shè)備通過轉(zhuǎn)發(fā)表轉(zhuǎn)發(fā)數(shù)據(jù)分組流,轉(zhuǎn)發(fā)表中包含特定類別分組的下一跳路由。除了簡單地轉(zhuǎn)發(fā)分組以外,網(wǎng)絡(luò)設(shè)備還可以對(duì)分組的首部進(jìn)行修改,或者直接丟棄該分組。到達(dá)的數(shù)據(jù)分組流被放置在輸出隊(duì)伍中,等待網(wǎng)絡(luò)設(shè)備的處理,而分組在完成轉(zhuǎn)發(fā)之后通常會(huì)放置在輸出隊(duì)伍中,等待傳輸。
數(shù)據(jù)平面網(wǎng)絡(luò)設(shè)備所需完成的功能包括:①控制支撐功能(垂直通信):與SDN控制平面進(jìn)行交互,依賴資源-控制接口支持?jǐn)?shù)據(jù)平面可編程特性,交換機(jī)與控制器之間的通信以及控制器對(duì)網(wǎng)絡(luò)設(shè)備的管理都是通過OpenFlow協(xié)議進(jìn)行;②數(shù)據(jù)轉(zhuǎn)發(fā)功能(水平通信):從端系統(tǒng)接收到達(dá)的數(shù)據(jù)流,并將它們沿計(jì)算和建立好的數(shù)據(jù)轉(zhuǎn)發(fā)路徑轉(zhuǎn)發(fā)出去,轉(zhuǎn)發(fā)路徑主要根據(jù)SDN應(yīng)用程序定義的規(guī)則決定。
2.2.2 OpenFlow定義的邏輯交換機(jī)體系結(jié)構(gòu)
基于OpenFlow的SDN是SDN最早商業(yè)化的實(shí)例。OpenFlow不僅是數(shù)據(jù)平面功能的邏輯規(guī)范,而且是網(wǎng)絡(luò)設(shè)備與SDN控制器之間的通信協(xié)議。流表、端口、通信信道和數(shù)據(jù)結(jié)構(gòu)是構(gòu)成OpenFlow規(guī)范主要4個(gè)部分。OpenFlow工作原理如圖4所示,主要體現(xiàn)了OpenFlow轉(zhuǎn)發(fā)數(shù)據(jù)分組流的處理機(jī)制。邏輯交換機(jī)體系結(jié)構(gòu)的基本組成塊是流表,每個(gè)進(jìn)入交換機(jī)的組成分組都會(huì)經(jīng)過一個(gè)或者多個(gè)流表,而每個(gè)流表都包含若干行,即表項(xiàng)。每個(gè)表項(xiàng)都包括3部分:①匹配:匹配規(guī)則,根據(jù)數(shù)據(jù)包報(bào)頭字段、輸入端口號(hào)以及前一個(gè)流表所傳遞的信息等進(jìn)行匹配流表項(xiàng);②計(jì)數(shù):對(duì)成功匹配的數(shù)據(jù)包進(jìn)行計(jì)數(shù),同時(shí)保存技術(shù)信息;③操作:對(duì)已匹配的數(shù)據(jù)包執(zhí)行的操作,包括將匹配成功的數(shù)據(jù)分組轉(zhuǎn)發(fā)到輸出端口、失配的數(shù)據(jù)包封裝后上傳給SDN控制器或直接丟棄等操作[4]。
當(dāng)一個(gè)新數(shù)據(jù)包到達(dá)時(shí),查找過程從第一個(gè)流表開始,以一個(gè)流表中的匹配結(jié)束,或者當(dāng)沒有為該數(shù)據(jù)包找到默認(rèn)規(guī)則時(shí)以失配結(jié)束。可以通過組合不同的匹配字段來定義流規(guī)則。如果沒有默認(rèn)規(guī)則,數(shù)據(jù)包失配后將會(huì)被丟棄。但是,常見的情況是默認(rèn)一個(gè)規(guī)則,告訴交換機(jī)將包發(fā)送到控制器。
2.3 SDN控制平面
SDN控制平面也稱為NOS,位于SDN三層架構(gòu)的中間層,作為應(yīng)用平面與數(shù)據(jù)平面相互聯(lián)系、通信的橋梁。它向上可以通過北向接口為網(wǎng)絡(luò)應(yīng)用層軟件提供底層硬件的操作抽象;向下可以通過南向接口支配和管理底層硬件。頂層應(yīng)用平面的網(wǎng)絡(luò)應(yīng)用軟件需要根據(jù)SDN控制器提供的網(wǎng)絡(luò)信息執(zhí)行特定的網(wǎng)絡(luò)控制算法,并通過控制器將執(zhí)行結(jié)果轉(zhuǎn)化為控制命令向下轉(zhuǎn)發(fā)給網(wǎng)絡(luò)轉(zhuǎn)發(fā)設(shè)備[5]。
SDN控制平面整體設(shè)計(jì)存在的主要問題是:單一控制器的處理能力有限,遇到了網(wǎng)絡(luò)性能瓶頸且難以擴(kuò)展。解決方法有:①采用并行技術(shù)來提高控制器自身處理能力;②采用多控制器以物理上分布而邏輯上集中的方式來提升整個(gè)控制器的處理能力。對(duì)于方法②來說,通過借助東西向接口的API實(shí)現(xiàn)多控制器邏輯集中的處理方式。
2.4 SDN應(yīng)用平面與北向接口
應(yīng)用平面包括應(yīng)用和服務(wù),主要對(duì)網(wǎng)絡(luò)行為和資源進(jìn)行定義、使用、控制和監(jiān)視。這些應(yīng)用和服務(wù)通過應(yīng)用-控制接口與SDN控制平面進(jìn)行交互,使SDN控制平面可以靈活地定制網(wǎng)絡(luò)設(shè)備的行為和性能。SDN應(yīng)用利用了SDN控制平面提供的網(wǎng)絡(luò)資源抽象視圖,該視圖是通過應(yīng)用-控制接口的信息和數(shù)據(jù)模型獲取的。
SDN網(wǎng)絡(luò)生態(tài)系統(tǒng)中2個(gè)重要抽象是南北向接口。南向接口(如OpenFlow)已得到廣泛應(yīng)用,然而北向接口規(guī)范尚不明確。一些廠商使用基于表述性狀態(tài)轉(zhuǎn)移(Representational State Transfer,REST)作為SDN控制器的北向接口。
SDN應(yīng)用平面功能和接口如圖5所示。網(wǎng)絡(luò)服務(wù)抽象層處于網(wǎng)絡(luò)應(yīng)用程序與控制平面之間,該層具有以下功能:①提供底層基礎(chǔ)網(wǎng)絡(luò)資源的抽象視圖,從而隱藏底層數(shù)據(jù)平面基礎(chǔ)網(wǎng)絡(luò)設(shè)備的具體細(xì)節(jié);②提供控制平面功能的整體視圖,這樣上層網(wǎng)絡(luò)應(yīng)用可以運(yùn)行在多種控制器上。
SDN主要實(shí)現(xiàn)4個(gè)方面的功能:①網(wǎng)絡(luò)基礎(chǔ)設(shè)備中數(shù)據(jù)轉(zhuǎn)發(fā)功能與網(wǎng)絡(luò)控制功能解耦合,將控制功能從網(wǎng)絡(luò)轉(zhuǎn)發(fā)設(shè)備中刪除,使之成為簡單的轉(zhuǎn)發(fā)元素,便于統(tǒng)一支配和管理。②數(shù)據(jù)轉(zhuǎn)發(fā)策略不是基于數(shù)據(jù)包目的地,而是基于數(shù)據(jù)流。數(shù)據(jù)流由一組作為匹配準(zhǔn)則(作為過濾器)、操作分組字段(作為操作指令)、數(shù)據(jù)分組匹配計(jì)數(shù)進(jìn)行定義。流抽象可以統(tǒng)一路由器等不同類型網(wǎng)絡(luò)設(shè)備的行為,流編程的實(shí)現(xiàn)使網(wǎng)絡(luò)配置和管理具有更大的靈活性。③將底層轉(zhuǎn)發(fā)設(shè)備的控制邏輯上移到SDN控制平面上的SDN控制器,其功能類似于計(jì)算機(jī)OS。④網(wǎng)絡(luò)開發(fā)者通過網(wǎng)絡(luò)開發(fā)應(yīng)用程序?qū)崿F(xiàn)網(wǎng)絡(luò)編程需求,而網(wǎng)絡(luò)開發(fā)應(yīng)用程序運(yùn)行在NOS上。
3 SDN發(fā)展趨勢
3.1 SDN/NFV與OPEN-O
網(wǎng)絡(luò)功能虛擬化(Network Function Virtualization,NFV)同SDN一樣也是現(xiàn)代備受關(guān)注的新型網(wǎng)絡(luò)體系結(jié)構(gòu)之一。SDN/NFV結(jié)構(gòu)體系各自獨(dú)立卻可以相互補(bǔ)充,如何將二者整合部署以提高網(wǎng)絡(luò)功能、數(shù)據(jù)平面可編程性以及網(wǎng)絡(luò)資源動(dòng)態(tài)調(diào)整,成為當(dāng)前網(wǎng)絡(luò)熱門研究方向。SDN網(wǎng)絡(luò)設(shè)備的數(shù)據(jù)轉(zhuǎn)發(fā)與網(wǎng)絡(luò)控制解耦和便于網(wǎng)絡(luò)管理,提供靈活路由;而NFV利用虛擬化技術(shù)將網(wǎng)絡(luò)功能從特定硬件平臺(tái)分離出來,以便實(shí)現(xiàn)更高效的網(wǎng)絡(luò)功能。這2種技術(shù)硬件和軟件上結(jié)合起來可以獲得更大的利益。SDN與NFV整合部署適用于很多網(wǎng)絡(luò)場景中,如WiFi等[6]。
為了促進(jìn)二者的融合,Linux基金會(huì)于2016年2月23日巴薩羅納移動(dòng)世界大會(huì)上宣布開展OEPN-O項(xiàng)目工作,旨在發(fā)展網(wǎng)絡(luò)行業(yè)第一個(gè)網(wǎng)絡(luò)架構(gòu)編排器和開源軟件框架。OPEN-O項(xiàng)目很快受到了中國移動(dòng)、Red Hat等的支持[7]。
3.2 5G與SDN
5G屬于蜂窩技術(shù)之一,目前正處于4G向5G蜂窩網(wǎng)發(fā)展的階段。3GPP會(huì)議在2018年6月14日美國圣地亞哥舉辦,通過了5G獨(dú)立組網(wǎng)功能凍結(jié)方案,未來5G可以網(wǎng)絡(luò)獨(dú)立部署,現(xiàn)在5G正處于商業(yè)實(shí)現(xiàn)的重要階段。與4G相比,5G將在網(wǎng)絡(luò)可靠性、可擴(kuò)展性等網(wǎng)絡(luò)性能各方面具有更大進(jìn)展[8]。面對(duì)移動(dòng)網(wǎng)絡(luò)的高需求與高負(fù)載,4G網(wǎng)絡(luò)體系結(jié)構(gòu)已經(jīng)不再適用。5G需要更大彈性的網(wǎng)絡(luò)結(jié)構(gòu)、更加靈活的網(wǎng)絡(luò)服務(wù)以及更高的網(wǎng)絡(luò)性能,在網(wǎng)絡(luò)中構(gòu)建更多的智能。SDN將是推動(dòng)5G向網(wǎng)絡(luò)智能化、多元化、綜合化和寬帶化方向發(fā)展的重要網(wǎng)絡(luò)技術(shù)。
3.3 Securing the Cloud With SDN
自云計(jì)算服務(wù)應(yīng)用以來,許多組織機(jī)構(gòu)開始傾向于將大部分IT操作轉(zhuǎn)移到接入因特網(wǎng)的基礎(chǔ)設(shè)施上,這些基礎(chǔ)設(shè)置稱為企業(yè)云計(jì)算,移動(dòng)設(shè)備和個(gè)人PC用戶等也開始使用云計(jì)算服務(wù)來備份數(shù)據(jù),以及使用個(gè)人云計(jì)算同步設(shè)備和相互共享信息。大批數(shù)據(jù)存放在云上使得信息安全邊界變得模糊,網(wǎng)絡(luò)安全防御能力受到挑戰(zhàn)。SDN提供了網(wǎng)絡(luò)控制與數(shù)據(jù)轉(zhuǎn)發(fā)解耦和的網(wǎng)絡(luò)體系架構(gòu)和靈活的調(diào)度機(jī)制來調(diào)度和編排云安全服務(wù),并將其融入云管理中。基于SDN的云安全將是云安全服務(wù)體系結(jié)構(gòu)主要發(fā)展方向[9]。
4結(jié)束語
不論是計(jì)算機(jī)模式的發(fā)展還是網(wǎng)絡(luò)體系結(jié)構(gòu)的發(fā)展,發(fā)展的基礎(chǔ)都是將底層硬件設(shè)備的功能單一化、結(jié)構(gòu)化。就好比社會(huì)發(fā)展過程中,生產(chǎn)分工不斷精細(xì)化,學(xué)科不斷專業(yè)化。與傳統(tǒng)網(wǎng)絡(luò)相比,SDN更易于簡化網(wǎng)絡(luò)配置、實(shí)現(xiàn)新型網(wǎng)絡(luò)抽象和促進(jìn)網(wǎng)絡(luò)進(jìn)化。而SDN的發(fā)展趨勢,一方面是自身體系結(jié)構(gòu)的不斷完善與發(fā)展;另一方面是與其他網(wǎng)絡(luò)技術(shù)相結(jié)合來優(yōu)化網(wǎng)絡(luò)性能、網(wǎng)絡(luò)配置及其網(wǎng)絡(luò)使用環(huán)境。
參考文獻(xiàn)
[1] Stallings W.現(xiàn)代網(wǎng)絡(luò)技術(shù)SDN、NFV、QoE、物聯(lián)網(wǎng)和云計(jì)算[M].胡超,邢長友,陳鳴,譯.北京:機(jī)械工業(yè)出版社,2018.
[2] Goransson P,Black C.軟件定義網(wǎng)絡(luò):原理、技術(shù)與實(shí)踐[M].王海,張娟,于衛(wèi)波,等,譯.北京:電子工業(yè)出版社,2016.
[3]鄭毅,華一強(qiáng),何曉峰.SDN的特征、發(fā)展現(xiàn)狀及趨勢[J].電信科學(xué),2013,29(9):102-107.
[4]左青云,陳鳴,趙廣松,等.基于OpenFlow的SDN技術(shù)研究[J].軟件學(xué)報(bào),2013,24(5):1078-1097.
[5]孔慶偉.基于SDN的高校校園網(wǎng)設(shè)計(jì)及應(yīng)用研究[J].山東社會(huì)科學(xué),2015(S2):280-281.
[6] Chowdhary A,Dixit V H,Tiwari N, et al.Science DMZ: SDN Based Secured Cloud Testbed[C]// IEEE Conference on Network Function Virtualization & Software Defined Networks,IEEE,2017.
[7] Munoz R,Vilalta R,Casellas R,et al. Integrated SDN/NFV Management and Orchestration Architecture for Dynamic Deployment of Virtual SDN Control Instances for Virtual Tenant Networks [J].Journal of Optical Communications and Networking 2015,7(11):62-70.
[8] Dávid S,F(xiàn)elician N,Balázs S, et al.Towards the 5G Revolution: A Software Defined Network Architecture Exploiting Network Coding as a Service.[C]//ACM Conference on Special Interest Group on Data Communication,ACM, 2015.
[9] Levin A, Massonet P. Enabling Federated Cloud Networking[C]//ACM International Systems & Storage Conference, ACM,2015.