高強(qiáng) 韓青
摘要:文章首先介紹了SDN的技術(shù)是基于OpenFlow的體系結(jié)構(gòu)和關(guān)鍵技術(shù),然后從SDN體系結(jié)構(gòu)的設(shè)計(jì)方面、OpenFlow協(xié)議標(biāo)準(zhǔn)的持續(xù)演進(jìn)以及控制器設(shè)計(jì)問(wèn)題三個(gè)方面分析了SDN的研究現(xiàn)狀,最后分析了SDN面臨的挑戰(zhàn)以及發(fā)展趨勢(shì)。
關(guān)鍵詞:云計(jì)算;網(wǎng)絡(luò)技術(shù);SDN;OpenFlow;控制器文獻(xiàn)標(biāo)識(shí)碼:A
中圖分類號(hào):TP301文章編號(hào):1009-2374(2016)04-0051-02DOI:10.13535/j.cnki.11-4406/n.2016.04.026
近年來(lái),關(guān)于云計(jì)算的研究頗多。隨著云計(jì)算的興起,傳統(tǒng)的網(wǎng)絡(luò)技術(shù)越來(lái)越不適應(yīng)按需提供網(wǎng)絡(luò)質(zhì)量的要求,并且錯(cuò)綜復(fù)雜的網(wǎng)絡(luò)環(huán)境變化過(guò)快,網(wǎng)絡(luò)管理要求的工作量也日益增多,不能很好地支持以云計(jì)算、大數(shù)據(jù)為代表的新型應(yīng)用。軟件定義網(wǎng)絡(luò)(Software Defined Network,SDN)的提出改變了這個(gè)現(xiàn)狀。SDN技術(shù)是以分離網(wǎng)絡(luò)的控制平面和數(shù)據(jù)平面為核心,通過(guò)從網(wǎng)絡(luò)設(shè)備中分離出來(lái)的網(wǎng)絡(luò)控制功能,使網(wǎng)絡(luò)應(yīng)用具有可編程接口,進(jìn)而控制網(wǎng)絡(luò)資源,從而使現(xiàn)有的網(wǎng)絡(luò)架構(gòu)翻開(kāi)嶄新的一頁(yè)。
1 SDN體系架構(gòu)
1.1 SDN架構(gòu)及特征
ONF在2012的白皮書中提出了三層架構(gòu)。它具有三層:第一層是應(yīng)用層;第二層是控制層;第三層是基礎(chǔ)設(shè)施層。并且具有南、北兩向接口,其中北向接口是連接控制層和應(yīng)用層的;南向接口是連接控制層和基礎(chǔ)設(shè)施層的。OpenFlow標(biāo)準(zhǔn)開(kāi)放于ONF的南向接口,而北向接口標(biāo)準(zhǔn)尚未統(tǒng)一。應(yīng)用層通過(guò)控制層操作的API和網(wǎng)絡(luò)視圖,為使得用戶可以較為方便地通過(guò)相關(guān)軟件在邏輯上操作網(wǎng)絡(luò)控制和網(wǎng)絡(luò)服務(wù),因此第一層應(yīng)用層為API和網(wǎng)絡(luò)藍(lán)圖,但要通過(guò)控制層操作;第二層控制層以處理數(shù)據(jù)平面的資源、維護(hù)整個(gè)網(wǎng)絡(luò)藍(lán)圖為主,由控制器和網(wǎng)絡(luò)操作系統(tǒng)(Network Operating System,NOS)組成;第三層基礎(chǔ)設(shè)施層則是數(shù)據(jù)處理、轉(zhuǎn)發(fā)和收集的集中處。
業(yè)界普遍認(rèn)可的SDN應(yīng)具有的三大基本特點(diǎn):
1.1.1 集中控制:首先,在邏輯上通過(guò)集中控制能獲得整個(gè)網(wǎng)絡(luò)資源信息;其次,這些信息能根據(jù)業(yè)務(wù)大體趨勢(shì)進(jìn)行統(tǒng)一調(diào)配和優(yōu)化。流量工程、負(fù)載均衡便是典型的例子。在此基礎(chǔ)上,集中控制使得網(wǎng)絡(luò)處理快捷方便,因?yàn)樗苁谷志W(wǎng)絡(luò)在邏輯上成為一臺(tái)形象的設(shè)備,運(yùn)行、維護(hù)都相對(duì)簡(jiǎn)單,更省去了物理設(shè)備需要現(xiàn)用現(xiàn)配的麻煩。
1.1.2 開(kāi)放接口:南、北向接口均為開(kāi)放模式,因此實(shí)現(xiàn)了應(yīng)用和網(wǎng)絡(luò)的無(wú)縫集成,應(yīng)用高速網(wǎng)絡(luò)最好的運(yùn)行方式,使其能以最佳方式更好地滿足自己的需求。
1.1.3 網(wǎng)絡(luò)虛擬化:南向接口的統(tǒng)一和開(kāi)放,消除了在最下一層物理轉(zhuǎn)發(fā)設(shè)備的不同,從而透明化底層網(wǎng)絡(luò)對(duì)上層應(yīng)用。邏輯網(wǎng)絡(luò)、物理網(wǎng)絡(luò)一經(jīng)隔離,邏輯網(wǎng)絡(luò)便脫離了實(shí)際設(shè)備放置場(chǎng)所的羈絆,能依據(jù)業(yè)務(wù)延伸而配置、轉(zhuǎn)移。更多的,邏輯網(wǎng)絡(luò)也為多個(gè)用戶共同通信及其特定的需要提供了支撐。
1.2 OpenFlow交換機(jī)
OpenFlow的交換機(jī)由單個(gè)組表、單個(gè)或數(shù)個(gè)流表來(lái)執(zhí)行分組查找和轉(zhuǎn)發(fā),并有一個(gè)外部控制器OpenFlow的信道。控制器在OpenFlow協(xié)議作用下?tīng)恐平粨Q機(jī)與其進(jìn)行數(shù)據(jù)的交換。OpenFlow協(xié)議使控制器能主動(dòng)或者被動(dòng)響應(yīng)網(wǎng)路中的數(shù)據(jù)包,即能隨意添加、更新和刪除流表中的條例。在交換機(jī)中的每個(gè)流表中包含的一組流表項(xiàng);每個(gè)流表項(xiàng)包含匹配字段、計(jì)數(shù)器和一組指令,用來(lái)匹配數(shù)據(jù)包。匹配開(kāi)始于第一個(gè)流程表,并可能會(huì)繼續(xù)額外的流表。流表項(xiàng)匹配數(shù)據(jù)包按照優(yōu)先級(jí)的順序,從每個(gè)表的第一個(gè)匹配表項(xiàng)開(kāi)始。如果找到匹配的項(xiàng),那么具體流表項(xiàng)按照指令去執(zhí)行。如果在流表中未找到匹配項(xiàng),結(jié)果取決于找到匹配的流表項(xiàng)配置(例如,數(shù)據(jù)包可被轉(zhuǎn)發(fā)到OpenFlow的信道控制器、丟棄或者可以繼續(xù)到下一個(gè)的流表)。一般情況下,Order與流表項(xiàng)相聯(lián)系,流表項(xiàng)則是任何具有Action或修改流水線的數(shù)據(jù)。Action體現(xiàn)了數(shù)據(jù)包轉(zhuǎn)發(fā)、數(shù)據(jù)包修改和組表處理。流水線處理的Order批準(zhǔn)information以元數(shù)據(jù)的方式在表之間進(jìn)行交換,也批準(zhǔn)數(shù)據(jù)包在被轉(zhuǎn)發(fā)至下一層的表進(jìn)行加工處理。如果數(shù)據(jù)包被修改和轉(zhuǎn)發(fā),則因?yàn)槠浜蛦蝹€(gè)配對(duì)的流表項(xiàng)相關(guān)聯(lián)的Order集意外與下一個(gè)表錯(cuò)位,表流水線中止操作。
通常情況下,OpenFlow交換機(jī)會(huì)與控制器進(jìn)行消息的交換,控制層的控制器監(jiān)聽(tīng)某個(gè)固定端口,等待OpenFlow交換機(jī)的連接。啟動(dòng)OpenFlow交換機(jī),設(shè)置遠(yuǎn)端控制器的IP地址和端口號(hào),此時(shí)OpenFlow交換機(jī)會(huì)向控制器發(fā)送Hello消息,Hello消息包含了OpenFlow交換機(jī)支持OpenFlow協(xié)議的版本??刂破魇盏紿ello消息,會(huì)回復(fù)一個(gè)Hello消息。OpenFlow交換機(jī)收到了控制器的Hello消息,通信就建立起來(lái)了。接著,控制器會(huì)向OpenFlow交換機(jī)發(fā)送Feature request消息,詢問(wèn)OpenFlow交換機(jī)所支持的特性。OpenFlow收到Feature request消息會(huì)回復(fù)一個(gè)Feature reply消息,告知控制器自己所支持的特性。接著控制器會(huì)向OpenFlow交換機(jī)發(fā)送get config request消息,獲得OpenFlow交換機(jī)的配置信息,OpenFlow交換機(jī)收到消息會(huì)回復(fù)一個(gè)get config reply消息。此時(shí)控制器再向OpenFlow交換機(jī)發(fā)送配置消息,配置OpenFlow交換機(jī)在special situation的default行為。在OpenFlow交換機(jī)與控制器通信中,echo消息每隔一定時(shí)間就會(huì)發(fā)送,此消息用來(lái)確定控制器和OpenFlow當(dāng)前是否可用,如果沒(méi)有收到對(duì)方回復(fù)的消息,就表明對(duì)方不能正常工作。在這些通信消息中,packet in消息是控制器獲得網(wǎng)絡(luò)狀態(tài)的消息來(lái)源,一般情況下,只有在OpenFlow交換機(jī)不知道如何處理收到的包的時(shí)候,就向控制器發(fā)送packet in消息??刂破魇盏絧acket in消息可能會(huì)下發(fā)Flow mod消息也有可能發(fā)送packet out消息。Flow mod消息會(huì)告訴交換機(jī)如何處理這個(gè)數(shù)據(jù)包,而packet out消息告訴交換機(jī)你自己處理這個(gè)消息,怎么處理看交換機(jī)的配置情況。
1.3 控制器
控制器是SDN的中心,統(tǒng)一控制最下層網(wǎng)絡(luò)設(shè)備,和support最高層業(yè)務(wù)應(yīng)用的網(wǎng)絡(luò)能力支配。南向接口是SDN控制器控制網(wǎng)絡(luò)的途徑,南向接口不僅支持OpenFlow,也支持BGP-LS、OF CONFIG、SNMP、XMPP及其多種private接口??刂破魍ㄟ^(guò)其上行通道統(tǒng)一監(jiān)測(cè)和統(tǒng)計(jì)最下層交換設(shè)備上報(bào)的信息,以找到鏈路和管理其拓?fù)?。控制器利用其下行通道制定策略和下發(fā)表項(xiàng),以統(tǒng)一控制網(wǎng)絡(luò)設(shè)備。而控制器擁有的北向接口,則是面向用戶應(yīng)用的編程接口,由于其要求尚未約定,因此開(kāi)發(fā)網(wǎng)絡(luò)應(yīng)用的工程師可以自行編程來(lái)支配網(wǎng)絡(luò)資源,另外北向接口也是最高層的應(yīng)用程序整體掌握和統(tǒng)一支配網(wǎng)絡(luò)資源的途徑。
2 OpenFlow協(xié)議
OpenFlow是全新的網(wǎng)絡(luò)協(xié)議,源自Stanford大學(xué)的Clean Slate研究組。OpenFlow這種全新的網(wǎng)絡(luò)創(chuàng)造性思維是基于目前的網(wǎng)絡(luò)設(shè)備無(wú)法支持創(chuàng)造性網(wǎng)絡(luò)架構(gòu)與協(xié)議的探究與實(shí)驗(yàn),只能于真實(shí)的網(wǎng)絡(luò)條件下驗(yàn)證而出世。Stanford大學(xué)研發(fā)的控制轉(zhuǎn)發(fā)分離架構(gòu),使網(wǎng)絡(luò)業(yè)務(wù)的部署相對(duì)靈便,即從網(wǎng)絡(luò)設(shè)備中分離控制邏輯,使中央控制器統(tǒng)籌控制。同時(shí)將OpenFlow協(xié)議設(shè)定為控制器與交換機(jī)交換數(shù)據(jù)的標(biāo)準(zhǔn)接口。這幾年OpenFlow因?yàn)槠淇梢酝ㄟ^(guò)軟件來(lái)闡述網(wǎng)絡(luò),將網(wǎng)絡(luò)視為一個(gè)整體集中控制,避免了此前網(wǎng)絡(luò)為相互獨(dú)立并且分散的多個(gè)設(shè)備的弊端,顯著提升了網(wǎng)絡(luò)可用性和控制效率,從而引起了業(yè)界的廣泛關(guān)注。
3 控制器的設(shè)計(jì)
控制器是SDN的核心,統(tǒng)一控制最下層網(wǎng)絡(luò)設(shè)備、support最高層業(yè)務(wù)應(yīng)用的網(wǎng)絡(luò)能力支配,是它的首要任務(wù),因此控制器的設(shè)計(jì)決定此控制器控制的網(wǎng)絡(luò)的功能和能力。SDN的控制平面與數(shù)據(jù)平面相分離的結(jié)構(gòu),決定控制器必須掌握整個(gè)網(wǎng)絡(luò)的狀況。目前,市面上開(kāi)源的控制器可以分成兩大類:一類是推出商用級(jí)產(chǎn)品的廠商;另一類是較大開(kāi)源社區(qū)中打算開(kāi)發(fā)SDN控制器軟件的開(kāi)源項(xiàng)目/組織。許多商用級(jí)的控制器都基于開(kāi)源代碼,特別是由LinuxFoundation旗下OpenDaylight開(kāi)發(fā)的代碼。所有的控制器必須要實(shí)現(xiàn)的功能包括鏈路發(fā)現(xiàn)管理、設(shè)備管理、交換機(jī)管理、進(jìn)程池、存儲(chǔ)、拓?fù)洹⒔y(tǒng)計(jì)管理。鏈路發(fā)現(xiàn)管理就是通過(guò)控制器向交換機(jī)發(fā)送LLDP數(shù)據(jù)包,交換機(jī)收到之后以packet in消息發(fā)送給控制器,這樣控制器就知道網(wǎng)絡(luò)的鏈路狀況;存儲(chǔ)是將拓?fù)浣Y(jié)構(gòu)、端口狀態(tài)、VLAN信息等存儲(chǔ)起來(lái);進(jìn)程池為控制器的一些工作提供便利,例如交換機(jī)和控制器每隔一段時(shí)間都要發(fā)送echo消息,這可以通過(guò)進(jìn)程池提供的進(jìn)程來(lái)實(shí)現(xiàn);設(shè)備管理和交換機(jī)管理是用來(lái)記錄網(wǎng)絡(luò)里面設(shè)備和交換機(jī)的信息,包括IP地址、mac地址、VLAN信息等;拓?fù)涫怯脕?lái)收集網(wǎng)絡(luò)的拓?fù)淝闆r,由于OpenFlow交換機(jī)只負(fù)責(zé)轉(zhuǎn)發(fā),所以控制器必須知道整個(gè)網(wǎng)絡(luò)的拓?fù)?。包管理是?fù)責(zé)發(fā)送消息給OpenFlow交換機(jī),里面有一個(gè)隊(duì)列結(jié)構(gòu),控制器發(fā)送的消息先進(jìn)入到這個(gè)隊(duì)列中,然后統(tǒng)一由包管理發(fā)送出去。
參考文獻(xiàn)
[1] 鄭毅,華一強(qiáng),何曉峰.SDN的特征、發(fā)展現(xiàn)狀及趨勢(shì)[J].電信科學(xué),2013,29(9).
(責(zé)任編輯:陳 潔)