劉惠臨, 林亞飛
(安徽理工大學(xué) 計算機(jī)科學(xué)與工程學(xué)院,安徽 淮南 232001)
軟件定義網(wǎng)絡(luò)(Software Defined Networking,SDN)是一項(xiàng)新興的網(wǎng)絡(luò)技術(shù),針對目前互聯(lián)網(wǎng)中云計算、大數(shù)據(jù)等業(yè)務(wù)需要快速、靈活的實(shí)時配置和調(diào)度網(wǎng)絡(luò)資源的需求,創(chuàng)造性地提出了網(wǎng)絡(luò)控制功能和數(shù)據(jù)轉(zhuǎn)發(fā)功能分離的設(shè)計思想,實(shí)現(xiàn)網(wǎng)絡(luò)狀態(tài)在邏輯上的集中控制。其中遠(yuǎn)程的SDN控制器實(shí)現(xiàn)鏈路發(fā)現(xiàn)、拓?fù)涔芾?、流表下發(fā)等一系列基本操作;交換設(shè)備只負(fù)責(zé)高效率的數(shù)據(jù)轉(zhuǎn)發(fā),而進(jìn)行轉(zhuǎn)發(fā)決策的指導(dǎo)規(guī)則也下發(fā)自集中控制器[1]。
目前在SDN技術(shù)中,ONF標(biāo)準(zhǔn)化組織提出的架構(gòu)在業(yè)界的影響力最大,該架構(gòu)中面向數(shù)據(jù)層的南向接口為OpenFlow協(xié)議,該協(xié)議對轉(zhuǎn)發(fā)規(guī)則抽象稱之為流表(Flow Table),相當(dāng)于傳統(tǒng)網(wǎng)絡(luò)設(shè)備的二層MAC地址轉(zhuǎn)發(fā)表和三層IP路由表。
OpenFlow協(xié)議中流表項(xiàng)主要由3部分構(gòu)成,如圖1所示。
圖1 OpenFlow控制系統(tǒng)簡單架構(gòu)
其中Header fields(包頭域)用來和交換機(jī)接收到的數(shù)據(jù)包的包頭做匹配;而Counter(計數(shù)器)記錄交換機(jī)數(shù)據(jù)流的相關(guān)計量信息;Actions用來決定匹配后的數(shù)據(jù)包下一步應(yīng)該怎么處理(見圖1),交換機(jī)所能執(zhí)行的Actions(動作)大致可以分為4種:
1)轉(zhuǎn)發(fā)數(shù)據(jù)包給設(shè)備的物理端口或一系列的虛擬端口;
2)沒有明確轉(zhuǎn)發(fā)動作的表項(xiàng),將丟棄其匹配的數(shù)據(jù)包;
3)修改數(shù)據(jù)包的包頭內(nèi)容;
4)轉(zhuǎn)發(fā)數(shù)據(jù)包給控制器做下一步處理[2]。
在SDN技術(shù)所提出的概念中,傳統(tǒng)網(wǎng)絡(luò)的層次化架構(gòu)被消除,源 MAC地址、目的 MAC地址、VLAN id、源IP地址、目的IP地址、TCP/UDP端口等這些原本屬于各網(wǎng)絡(luò)層級的信息,被統(tǒng)一封裝到1個流表項(xiàng)中,集中控制器由于相對傳統(tǒng)分布式網(wǎng)絡(luò)的各獨(dú)立設(shè)備具有全局拓?fù)湟晥D能力,從而能更有效地利用各類路由算法生成數(shù)據(jù)轉(zhuǎn)發(fā)策略并下發(fā)。流表下發(fā)到交換機(jī)后,存儲在三態(tài)內(nèi)容尋址存儲器(Ternary Content addressable Memory,TCAM)上。
OpenFlow流表的更新過程相對比較復(fù)雜,因?yàn)橐?guī)則的制訂是由集中控制器完成,而不是依靠各交換設(shè)備的獨(dú)立算法在本地實(shí)現(xiàn)。如果控制器能夠確保在多個交換機(jī)上的流表更新是實(shí)時和同步完成的,那么對于所有數(shù)據(jù)包的處理就具有一個統(tǒng)一的指導(dǎo)原則;但是實(shí)際情況并非如此,控制器向分布式的多個交換機(jī)寫入的新流表項(xiàng)的動作是按照先后順序執(zhí)行的,這會導(dǎo)致數(shù)據(jù)包在不同交換機(jī)上可能按新規(guī)則處理,也可能按舊規(guī)則處理。同時,由于常規(guī)的SDN網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)中,控制器只設(shè)置1個,從而給控制器帶來了繁重的處理負(fù)擔(dān)和安全風(fēng)險(一旦控制器故障或遭破壞,則整個SDN網(wǎng)絡(luò)運(yùn)轉(zhuǎn)可能會陷入癱瘓)。
根據(jù)以上相關(guān)知識的描述,可以總結(jié)歸納出流表運(yùn)行維護(hù)過程中幾個亟待解決的關(guān)鍵問題:首先是更新一致性[3],即由于數(shù)據(jù)轉(zhuǎn)發(fā)層面的分布式特性,任意數(shù)據(jù)包在傳輸過程中,只能按照統(tǒng)一規(guī)則匹配處理,而不能在不同交換機(jī)上依次按舊、新規(guī)則中的流表項(xiàng)處理;其次是集中控制系統(tǒng)所帶來的可靠性和安全風(fēng)險問題?,F(xiàn)有研究中對這些問題尚未有較為成熟的方案,因此,針對它們展開研究,對SDN網(wǎng)絡(luò)技術(shù)的發(fā)展具有重要意義。
針對前文提出的兩方面問題,首先關(guān)注控制器的可靠性問題,后續(xù)工作中搭建的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)為規(guī)避控制器帶來的系統(tǒng)風(fēng)險,需依賴此問題的解決方案。
OpenFlow控制器的可靠性受制于集中化所帶來的缺陷,單一控制器出現(xiàn)的意外狀況會給整個網(wǎng)絡(luò)帶來巨大影響,所以,在這里引入控制集群(或稱多控制器)的概念,即通過多個控制器的分工協(xié)作分散風(fēng)險和決策處理負(fù)擔(dān)。網(wǎng)絡(luò)中的交換機(jī)在初始化階段需建立一個或多個控制器的鏈接。多個控制器之間為主從關(guān)系,即選擇1臺控制器作為主控制器,基本的設(shè)計架構(gòu)如圖2所示。
目前的SDN網(wǎng)絡(luò)領(lǐng)域尚未有多控制器之間建立聯(lián)系的東西向擴(kuò)展技術(shù),但實(shí)際上目前的SDN控制器都是軟件方法實(shí)現(xiàn)的,所以控制器是安裝在服務(wù)器平臺上的,為此,文中利用現(xiàn)在已相當(dāng)成熟的服務(wù)器集群技術(shù)來搭建控制器集群,如Lifekeeper,ROSE等集群軟件。當(dāng)然控制器集群有其特殊性,最為關(guān)鍵的是主控制器的選擇,主控制器負(fù)責(zé)全網(wǎng)域內(nèi)的交換機(jī)和其它控制器狀態(tài)信息的生成和維護(hù),全網(wǎng)拓?fù)湫畔⒌臍w集和下發(fā)。
主控制器的選取可以利用已有的多種分布式集群的主節(jié)點(diǎn)選取算法,實(shí)現(xiàn)難度并不大,但需要考慮算法的復(fù)雜度以及由網(wǎng)絡(luò)質(zhì)量問題引起的延遲等。為進(jìn)一步提高控制集群的協(xié)同性,可以在協(xié)議中增加一種“身份”消息用來明確控制器之間的主從關(guān)系。該消息的值設(shè)置有3種,缺省值是EQUAL,此時控制器的“身份”為可以響應(yīng)交換機(jī)發(fā)來的請求;該值還可以設(shè)為SLAVE,此時控制器只能監(jiān)聽網(wǎng)絡(luò)狀態(tài)但不能響應(yīng),實(shí)際相當(dāng)于將控制器設(shè)定為“副”控制器;當(dāng)值設(shè)為 MASTER時,該控制器就作為“主控制器”存在,但集群系統(tǒng)中有且只有1個MASTER。
為了解決流表的更新一致性問題,文中提出一種基于過渡規(guī)則的機(jī)制,這里的過渡規(guī)則指的是新規(guī)則集向舊規(guī)則集轉(zhuǎn)換的過程中同時出現(xiàn)在兩套規(guī)則中的共同流表項(xiàng)。
根據(jù)對數(shù)據(jù)更新一致性問題的理解,利用上述函數(shù)標(biāo)記規(guī)定如下形式的兩條定義:
1)對任意數(shù)據(jù)包 p,H (p)=H1(p)或H2(p);
2)假如對數(shù)據(jù)包p有H(p)=H2(p),那么對于同一數(shù)據(jù)流中的后繼數(shù)據(jù)包q,也應(yīng)有H(q)=H2(q)。
對流表更新機(jī)制而言,如果SDN網(wǎng)絡(luò)對數(shù)據(jù)包的轉(zhuǎn)發(fā)結(jié)果符合上述兩條定義,則可以稱作該機(jī)制滿足數(shù)據(jù)更新一致性。綜合上述研究基礎(chǔ)以及定義,可以詳細(xì)敘述該機(jī)制的實(shí)施方案,文中將該方案的運(yùn)作分為如下4個時間段:
為了進(jìn)一步闡述更新機(jī)制,我們建立了一個SDN網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),在該結(jié)構(gòu)中,對控制器采用了控制集群的形式,以避免系統(tǒng)在更新過程中由控制系統(tǒng)帶來的風(fēng)險和隱患。數(shù)據(jù)流從主機(jī)Host 1到達(dá)Host 2所經(jīng)由的交換機(jī)集合為{u,t,s,v,r,w,y,z};基于規(guī)則1的數(shù)據(jù)轉(zhuǎn)發(fā)路徑用實(shí)線表示,而基于規(guī)則2的數(shù)據(jù)轉(zhuǎn)發(fā)路徑用虛線表示,如圖3所示。
圖3 SDN網(wǎng)絡(luò)拓?fù)?/p>
數(shù)據(jù)包上傳的對象是控制器集群,這里采用主、副兩部控制器,它們之間通過負(fù)載均衡技術(shù)實(shí)現(xiàn)協(xié)作運(yùn)行(分擔(dān)數(shù)據(jù)包的接收、規(guī)則的下發(fā)等工作)。過渡規(guī)則的數(shù)據(jù)包轉(zhuǎn)發(fā)示例如圖4所示。
圖4 過渡規(guī)則的數(shù)據(jù)包轉(zhuǎn)發(fā)示例
圖4中,基于過渡規(guī)則的數(shù)據(jù)轉(zhuǎn)發(fā)用帶箭頭的虛線表示,交換機(jī)u,v將數(shù)據(jù)包上傳給了控制集群,但w,y,s,z和t卻沒有上傳,原因如下:數(shù)據(jù)包從Host1到達(dá)Host2的轉(zhuǎn)發(fā)過程中,如基于h1處理,則無法到達(dá)w,y,t,在處理規(guī)則轉(zhuǎn)變?yōu)閔12時,數(shù)據(jù)包或者是被交換機(jī)u,v攔截后上傳控制集群,或者是繼續(xù)按照規(guī)則1繼續(xù)轉(zhuǎn)發(fā);經(jīng)過s,z轉(zhuǎn)發(fā)的數(shù)據(jù)包,其處理方式保持不變,如果s,z已經(jīng)加載了過渡規(guī)則后,仍然接收到數(shù)據(jù)包,那么則說明u,v還沒有完成過渡規(guī)則的替換,所以s,z對此時接收到的數(shù)據(jù)包可以繼續(xù)按照規(guī)則1路徑轉(zhuǎn)發(fā)。
文獻(xiàn)[4-5]對一致性機(jī)制進(jìn)行邏輯證明,實(shí)際就是驗(yàn)證該機(jī)制能否滿足文中兩條定義的要求,其中主要是定義1的驗(yàn)證,證明的過程可以拆解為3個部分:
綜上所述,對任意數(shù)據(jù)包p,在網(wǎng)絡(luò)中轉(zhuǎn)發(fā)時H(p)=H1(p)或 H2(p)。
文中提出的更新機(jī)制解決了流表更新一致性的問題,具有一定的通用性,并且利用控制集群有效降低了控制負(fù)載,提高了可靠性。在后期研究過程中,還有一些需要關(guān)注的方面,例如OpenFlow流表項(xiàng)存儲開銷幾倍于傳統(tǒng)交換機(jī),但是TCAM存儲器又比較昂貴,所以需要精簡流表的尺寸;控制集群的相互通信機(jī)制也需要進(jìn)一步改進(jìn)[7-8]。
[1]畢軍.軟件定義網(wǎng)絡(luò)SDN與OpenFlow解析[M].北京:人民郵電出版社,2014:65-103.
[2]雷葆華,王峰.SDN核心技術(shù)剖析和實(shí)戰(zhàn)指南[M].北京:電子工業(yè)出版社,2013:29-78.
[3]Reitblatt M,F(xiàn)oster N,Rexford J,et al.Abstractions for network update[C]//Proceedings of the ACM SIGCOMM Conference on Applications,Technologies.New York:Architectures and Protocols for Computer Communication,2012:323-33.
[4]McGeer R.A safe,efficient update protocol for openFlow networks[C]//Proceedings of the First Workshop on Hot Topics in Software Defined Networks.New York:ACM,2012:61-66.
[5]左青云,陳鳴.基于OpenFlow的SDN技術(shù)研究[J].軟件學(xué)報,2013,24(5):1078-1097.
[6]王淑玲,李濟(jì)漢.SDN架構(gòu)及安全性研究[J].電信科學(xué),2013,3(20):117-122.
[7]王明倩,任月鷗.基于 Web服務(wù)的應(yīng)用集成研究[J].長春工業(yè)大學(xué)學(xué)報:自然科學(xué)版,2008,29(6):705-708.
[8]裘曉峰,趙糧,高騰.VSA和SDS兩種SDN網(wǎng)絡(luò)安全架構(gòu)的研究[J].小型微型計算機(jī)系統(tǒng),2014,34(10):2298-2303.