戴 冕, 程 光, 周余陽
1(東南大學(xué) 網(wǎng)絡(luò)空間安全學(xué)院,江蘇 南京 211189)
2(教育部計算機(jī)網(wǎng)絡(luò)和信息集成重點實驗室(東南大學(xué)),江蘇 南京 211189)
測量技術(shù)是狀態(tài)監(jiān)測、性能管理、安全防御等網(wǎng)絡(luò)研究工作的基礎(chǔ),在網(wǎng)絡(luò)研究領(lǐng)域具有重要地位.近年來,互聯(lián)網(wǎng)業(yè)務(wù)和應(yīng)用飛速發(fā)展,尤其是高清音、視頻服務(wù)逐漸成為主流,使得網(wǎng)絡(luò)中的數(shù)據(jù)規(guī)模急劇膨脹.由于高速鏈路上的網(wǎng)絡(luò)流量具有實時性、連續(xù)性、無界性的特點,即網(wǎng)絡(luò)無法復(fù)現(xiàn)已經(jīng)通過的流量,這使得處理算法只能對網(wǎng)絡(luò)流量進(jìn)行一次計算,因此,實時地處理海量規(guī)模的流量需要大量的計算和存儲資源,這給網(wǎng)絡(luò)測量工作帶來了極大的困難[1].
為了使用有限的計算和存儲資源對高速流量進(jìn)行測量,傳統(tǒng)網(wǎng)絡(luò)測量研究提出了兩種流量壓縮技術(shù):抽樣技術(shù)和數(shù)據(jù)流技術(shù),通過犧牲一部分測量精度,壓縮采樣流量的規(guī)模,在高速網(wǎng)絡(luò)測量研究領(lǐng)域取得了一定的成果.盡管如此,傳統(tǒng)網(wǎng)絡(luò)測量技術(shù)在實際應(yīng)用時受到了很大程度的制約[2].
· 首先是網(wǎng)絡(luò)設(shè)備的制約,設(shè)備制造商為了提高轉(zhuǎn)發(fā)性能,將設(shè)備的控制邏輯和轉(zhuǎn)發(fā)邏輯緊密耦合在硬件ASIC交換電路和網(wǎng)絡(luò)處理CPU中,導(dǎo)致設(shè)備的可擴(kuò)展性很低[3].由于設(shè)備制造商之間市場競爭的原因,設(shè)備的內(nèi)部實現(xiàn)是完全封閉的,對用戶只開放有限的接口用于配置和管理,這使得研究人員難以利用現(xiàn)有設(shè)備驗證新的測量架構(gòu)和測量算法[4];
· 其次是網(wǎng)絡(luò)架構(gòu)的制約,傳統(tǒng)網(wǎng)絡(luò)是一個完全的分布式系統(tǒng),每個網(wǎng)絡(luò)節(jié)點只感知相鄰節(jié)點的狀態(tài)信息,然后通過分布式協(xié)議的計算完成數(shù)據(jù)的轉(zhuǎn)發(fā),測量人員難以掌握準(zhǔn)確的網(wǎng)絡(luò)全局信息,無法有效地進(jìn)行網(wǎng)絡(luò)的配置和管理工作.
為突破傳統(tǒng)網(wǎng)絡(luò)封閉的發(fā)展模式,斯坦福大學(xué)Mckeown教授于2008年發(fā)表了基于OpenFlow協(xié)議的新型網(wǎng)絡(luò)原型設(shè)計的論文,并在2009年正式提出軟件定義網(wǎng)絡(luò)(software defined network,簡稱SDN)的概念,旨在打破傳統(tǒng)網(wǎng)絡(luò)控制平面和數(shù)據(jù)平面之間的緊耦合,構(gòu)建一個控制邏輯和轉(zhuǎn)發(fā)邏輯相分離的網(wǎng)絡(luò)架構(gòu)[5].2011年,Mckeown教授聯(lián)合相關(guān)研究者成立了ONF(open networking foundation,開放式網(wǎng)絡(luò)基金會),負(fù)責(zé)OpenFlow協(xié)議的標(biāo)準(zhǔn)化制定和推廣(最新版本為1.6),極大地推進(jìn)了SDN的標(biāo)準(zhǔn)化工作[6].隨著SDN成為未來互聯(lián)網(wǎng)架構(gòu)和網(wǎng)絡(luò)功能虛擬化(network function virtualization,簡稱NFV)領(lǐng)域的研究熱點,美國、歐洲、日本相繼在實驗網(wǎng)絡(luò)GENI,Internet2,OFELIA,JGN2plus中開展SDN的部署和研究,IETF,ITU,ETSI等標(biāo)準(zhǔn)化組織開始研究SDN在各自領(lǐng)域的發(fā)展前景和應(yīng)用,以Nicira,Big Switch為代表的新興廠商和Juniper,NEC,HP,IBM等老牌廠商先后發(fā)布了支持 OpenFlow協(xié)議的交換設(shè)備[7,8].2013年,Cisco聯(lián)合 BROCADE,CITRIX,DELL,ERICSSON, HP,INTEL,REDHAT,NEC等公司,與LINUX基金會合作,成立了OpenDayLight開源組織,旨在廠商之間通過技術(shù)融合的方式共同打造一個開放、標(biāo)準(zhǔn)的 SDN平臺,推動 SDN產(chǎn)業(yè)化的進(jìn)程.目前,ODL控制器已經(jīng)發(fā)布到第 8個版本(Oxygen),組織會員超過 50個,涵蓋了全球知名的設(shè)備制造商、運營商、服務(wù)商.到目前位置為止,以O(shè)nix[9],HyperFlow[10],Floodlight,Ryu,ONOS[11],OpenDayLight[12]為代表的控制器和以 Open vSwitch,Microsoft Hyper-V Virtual Switch,Cisco Nexus 1000V Virtual Switch為代表的虛擬SDN交換機(jī)已經(jīng)在云平臺數(shù)據(jù)中心[13]、5G無線移動網(wǎng)絡(luò)[14]、傳感器網(wǎng)絡(luò)[15]、物聯(lián)網(wǎng)[16]中得到了相當(dāng)程度的應(yīng)用[17,18].
軟件定義網(wǎng)絡(luò)在開放性、透明性、標(biāo)準(zhǔn)性等方面的巨大優(yōu)勢,給網(wǎng)絡(luò)測量研究工作注入了新活力[19].因此,近年來學(xué)術(shù)界在軟件定義網(wǎng)絡(luò)測量領(lǐng)域進(jìn)行了大量的研究工作,提出了很多有價值的測量架構(gòu)與測量方法,測量對象涉及各個領(lǐng)域.一些文獻(xiàn)[20-28]綜述了軟件定義網(wǎng)絡(luò)中流量工程和安全防御相關(guān)研究的進(jìn)展,但是其中涉及軟件定義網(wǎng)絡(luò)測量的相關(guān)篇幅較少,因此,本文分別從測量架構(gòu)和測量對象的角度對軟件定義網(wǎng)絡(luò)測量目前的研究成果進(jìn)行了完整和系統(tǒng)的歸納總結(jié),并分析闡述了主要的研究問題和挑戰(zhàn),最后展望了未來的研究方向.
正常運行的網(wǎng)絡(luò)由網(wǎng)絡(luò)設(shè)備、網(wǎng)絡(luò)鏈路和網(wǎng)絡(luò)流量組成,從廣義上來說,網(wǎng)絡(luò)測量是同時在物理和邏輯的層面對網(wǎng)絡(luò)每個組成部分的運行狀態(tài)和行為模式進(jìn)行監(jiān)測和統(tǒng)計,測量結(jié)果用于指導(dǎo)網(wǎng)絡(luò)管理工作,網(wǎng)絡(luò)測量與網(wǎng)絡(luò)管理的關(guān)系如圖1所示.
近年來,隨著硬件監(jiān)測技術(shù)的不斷成熟,因此當(dāng)前的網(wǎng)絡(luò)測量研究工作主要集中于對網(wǎng)絡(luò)實際流量的分析和檢測,以此來估計網(wǎng)絡(luò)的運行參數(shù).基于流量的測量方法主要包含兩個要素:測量架構(gòu)和測量對象,因此,本文就從測量架構(gòu)和測量對象這兩個角度對當(dāng)前的軟件定義網(wǎng)絡(luò)測量研究工作進(jìn)行歸納和分析.
傳統(tǒng)網(wǎng)絡(luò)測量技術(shù)由于受到網(wǎng)絡(luò)設(shè)備和網(wǎng)絡(luò)架構(gòu)的制約,測量架構(gòu)的實現(xiàn)方式非常有限,因此研究的重點在于流量的采集方法和壓縮手段.
· 采集方法從類型上可分為主動采集和被動采集兩種[29].
? 主動采集是指在網(wǎng)絡(luò)鏈路中注入特定的探測報文,然后通過實時、連續(xù)地收集探測報文在網(wǎng)絡(luò)中的行為數(shù)據(jù)并處理分析來得到所需的測量信息.這種方法可以測量網(wǎng)絡(luò)實時的行為,但是探測流量在一定程度上會增加網(wǎng)絡(luò)負(fù)載;
? 被動測量方法通過在網(wǎng)絡(luò)中若干個預(yù)先設(shè)定的節(jié)點采集數(shù)據(jù),一般由交換機(jī)根據(jù)采集規(guī)則主動地向測量服務(wù)器轉(zhuǎn)發(fā)測量流量,被動測量不引入額外的流量,可以用于較大規(guī)模流量的采集和分析;
· 流量壓縮手段主要包括抽樣技術(shù)和數(shù)據(jù)流技術(shù).
? 抽樣技術(shù)是從總體流量數(shù)據(jù)中篩選出代表性的子集,通過對該子集的測量結(jié)果推斷原始流量的特征信息.NetFlow和SFlow是抽樣技術(shù)中具有代表性的應(yīng)用實例;
? 數(shù)據(jù)流技術(shù)是使用特定的哈希函數(shù)對報文進(jìn)行計算,將原始報文數(shù)據(jù)映射存儲到 sketch中.sketch是一種專門設(shè)計的數(shù)據(jù)結(jié)構(gòu),它利用哈希函數(shù)的性質(zhì),可以用很少的存儲空間保存大量數(shù)據(jù)的統(tǒng)計特征信息.基于sketch數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)流算法在流量分析領(lǐng)域得到了廣泛應(yīng)用,一般來說,一種sketch結(jié)構(gòu)針對一種或者幾種流量統(tǒng)計特征而設(shè)計,常用的sketch結(jié)構(gòu)有Bitmap,Bloom Filter,Count-min sketch,Count sketch等,結(jié)合若干個 sketch可以實現(xiàn)更加復(fù)雜的流量特征的測量.基于數(shù)據(jù)流技術(shù)的主要流量分析算法包括流量熵估計、流量矩陣(traffic matrix,簡稱TM)估計、網(wǎng)絡(luò)節(jié)點連接度估計、流長分布估計等.
軟件定義網(wǎng)絡(luò)在不改變 IP網(wǎng)絡(luò)基礎(chǔ)的前提下重構(gòu)了網(wǎng)絡(luò)控制平面和數(shù)據(jù)平面,一方面使得傳統(tǒng)網(wǎng)絡(luò)測量技術(shù)中的流量采集方法和壓縮手段可以應(yīng)用在軟件定義網(wǎng)絡(luò)測量中;另一方面,使得網(wǎng)絡(luò)測量架構(gòu)的設(shè)計靈活性大大增加.軟件定義網(wǎng)絡(luò)測量的優(yōu)勢主要體現(xiàn)在以下幾個方面.
1) 測量控制平面和測量數(shù)據(jù)平面相分離.在網(wǎng)絡(luò)測量架構(gòu)中,測量算法的部署離不開控制平面和數(shù)據(jù)平面的支持,SDN在分離控制平面和數(shù)據(jù)平面的同時,也意味著將測量控制平面和測量數(shù)據(jù)平面相分離,這大大增強(qiáng)了測量架構(gòu)的設(shè)計靈活性,使得待測流量的獲取方式、測量節(jié)點的部署位置、測量算法的處理流程、測量結(jié)果的反饋機(jī)制變得更加自由;
2) 基于OpenFlow協(xié)議的交互機(jī)制.軟件定義網(wǎng)絡(luò)提供了標(biāo)準(zhǔn)的南向協(xié)議OpenFlow用于控制器與交換機(jī)之間的通信,控制器通過 OpenFlow消息下發(fā)測量流表規(guī)則,查詢報文統(tǒng)計信息,交換機(jī)通過OpenFlow異步消息向控制器發(fā)送通知.軟件定義網(wǎng)絡(luò)測量方法可以充分地利用 OpenFlow協(xié)議消息所攜帶的信息進(jìn)行測量;
3) 基于流表規(guī)則的報文處理機(jī)制.SDN交換機(jī)基于控制器下發(fā)的流表項對報文進(jìn)行轉(zhuǎn)發(fā),流表頭域的元組包含了網(wǎng)絡(luò)層和傳輸層的協(xié)議字段,這使得網(wǎng)絡(luò)處理過程扁平化,支持對流量更加細(xì)粒度的測量;
4) 標(biāo)準(zhǔn)的編程接口.SDN控制器支持控制器內(nèi)部擴(kuò)展模塊的開發(fā),同時提供標(biāo)準(zhǔn)的北向API給上層應(yīng)用使用,這使得測量應(yīng)用可以快速地開發(fā)和部署;
5) 與傳統(tǒng)網(wǎng)絡(luò)測量技術(shù)的兼容性.軟件定義網(wǎng)絡(luò)雖然重構(gòu)了網(wǎng)絡(luò)控制平面和數(shù)據(jù)平面,但是并沒有改變底層的IP協(xié)議,這使得傳統(tǒng)網(wǎng)絡(luò)測量研究的成果可以應(yīng)用在軟件定義網(wǎng)絡(luò)測量中,并且結(jié)合 SDN的優(yōu)勢以更加靈活的方式實現(xiàn).
測量架構(gòu)是網(wǎng)絡(luò)測量的總體閉環(huán)過程,結(jié)合文獻(xiàn)[2],該過程可以分為 3個主要步驟——流量的采集和預(yù)處理、流量的傳輸和存儲以及流量的分析與反饋.
1) 流量的采集和預(yù)處理.該步驟是流量測量過程中最重要的一環(huán),主要包含 4個問題——采集方法、采集位置、采集頻率和處理格式:采集方法是指流量通過何種方式采集,從類型上可分為主動采集和被動采集;采集位置代表在網(wǎng)絡(luò)中的哪些節(jié)點進(jìn)行采集;采集頻率代表兩次采集之間的時間間隔;采集格式代表原始流量經(jīng)過預(yù)處理后的傳輸和存儲格式.由于原始報文體積較大,一般在處理時只提取針對測量對象所需的信息,通常是報文頭部的若干元組或者報文的固定字節(jié)區(qū)域等;
2) 流量的傳輸和存儲.該步驟包含兩個方面的問題:一方面是經(jīng)過采集和預(yù)處理后的測量流量通過何種方式轉(zhuǎn)發(fā)至何處進(jìn)行臨時存儲,另一方面是如何將臨時存儲的測量流量發(fā)送至分析服務(wù).不同的傳輸和存儲機(jī)制對測量架構(gòu)所占用的帶寬、存儲資源和測量實時性有著較大影響;
3) 流量的分析和反饋.該步驟根據(jù)測量對象選取算法對流量數(shù)據(jù)進(jìn)行分析處理,獲取所需的流量統(tǒng)計特征信息,例如流量類型、報文數(shù)量統(tǒng)計、流長統(tǒng)計、流量熵估計等.同時,將測量結(jié)果以實時、半實時或者離線的方式反饋給網(wǎng)絡(luò)管理者,用于網(wǎng)絡(luò)的優(yōu)化配置.
結(jié)合傳統(tǒng)高速網(wǎng)絡(luò)測量方法的評價指標(biāo),本文將軟件定義網(wǎng)絡(luò)測量架構(gòu)的評價指標(biāo)定義如下.
1) 實時性.反映測量架構(gòu)線速地處理分析高速流量數(shù)據(jù)的能力;
2) 并發(fā)性.反映測量架構(gòu)同時執(zhí)行多個網(wǎng)絡(luò)測量任務(wù)的能力;
3) 可擴(kuò)展性.反映測量架構(gòu)支持多個種類的測量任務(wù)的能力;
4) 準(zhǔn)確性.反映測量架構(gòu)保障測量任務(wù)測量精度的能力;
5) 復(fù)雜性.可分為計算復(fù)雜性、存儲復(fù)雜性和通信復(fù)雜性:計算復(fù)雜性反映測量架構(gòu)占用控制器中計算資源的程度,存儲復(fù)雜性反映測量架構(gòu)占用交換機(jī)存儲資源的程度,通信復(fù)雜性反映測量架構(gòu)引入的控制器和交換機(jī)之間鏈路開銷的程度.
這些指標(biāo)在一定程度上存在互相矛盾的關(guān)系,即測量架構(gòu)針對某一指標(biāo)性能的優(yōu)化可能導(dǎo)致另一指標(biāo)性能的下降.因此,軟件定義網(wǎng)絡(luò)測量架構(gòu)研究工作主要圍繞如何平衡上述指標(biāo)之間的關(guān)系,尋求最優(yōu)化的解決方案.本節(jié)基于測量架構(gòu)所包含的3個方面對當(dāng)前的研究工作進(jìn)行歸納總結(jié).
軟件定義網(wǎng)絡(luò)測量中的流量采集方法類似于傳統(tǒng)網(wǎng)絡(luò)的主動采集和被動采集,可以分為基于查詢的采集方法和基于推送的采集方法.由于SDN交換機(jī)中部署的流表本身記錄流量的基本統(tǒng)計信息,并且支持SDN控制器通過OpenFlow消息進(jìn)行查詢,所以基于查詢的采集方法就是利用控制器周期性地輪詢交換機(jī)上流級別的統(tǒng)計信息.這種方法會造成一定的網(wǎng)絡(luò)開銷,因此需要對查詢頻率和測量精度進(jìn)行平衡.基于推送的采集方法是通過控制器向SDN交換機(jī)下發(fā)測量流表規(guī)則,將匹配規(guī)則的待測流量轉(zhuǎn)發(fā)至測量服務(wù)器.這種方法緩解了控制器的性能壓力,不引入額外流量,但是需要占用交換機(jī)中有限的流表空間,對交換機(jī)造成一定的額外性能開銷.傳統(tǒng)網(wǎng)絡(luò)測量一般通過在交換機(jī)上開啟端口鏡像或者部署測量代理的方式采集流量,成本較高且靈活性較差.軟件定義測量中可以通過控制器動態(tài)地調(diào)整采集位置和采集頻率.在流量的預(yù)處理階段,相較于傳統(tǒng)網(wǎng)絡(luò)測量一般使用的五元組或七元組過濾規(guī)則,軟件定義網(wǎng)絡(luò)測量支持流表頭域所包含元組的任意組合的規(guī)則,可以實現(xiàn)更加特定的流量采集.
2.1.1 基于流表規(guī)則
軟件定義網(wǎng)絡(luò)中,控制器通過安全通道來配置、管理交換機(jī),下發(fā)、更新交換機(jī)中部署的流表規(guī)則,交換機(jī)按照流表規(guī)則對流量進(jìn)行處理(轉(zhuǎn)發(fā)、丟棄、緩存).流表由若干條流表項組成,標(biāo)準(zhǔn)OpenFlow協(xié)議中規(guī)定了流表項包含 3個部分:頭域(header fields)、統(tǒng)計域(counters)和動作域(actions).其中,頭域定義了報文的匹配規(guī)則,動作域指定了對匹配報文的操作,而統(tǒng)計域則保存了該條流表項所匹配報文的基本統(tǒng)計信息.統(tǒng)計域提供了基于4個維度(流表、流、接口、隊列)的統(tǒng)計信息,該域內(nèi)所有統(tǒng)計項的值都在SDN交換機(jī)運行時自動更新.一些研究工作通過控制器直接獲取交換機(jī)流表中的統(tǒng)計數(shù)據(jù),并利用這些信息進(jìn)行測量.OpenTM[30]使用基于查詢的采集方法,利用控制器路由模塊中的路由信息探測并跟蹤全網(wǎng)絡(luò)的活動流量,然后周期性地從流量經(jīng)過的交換機(jī)的流表中逐項查詢并獲取統(tǒng)計域的信息.Payless[31]通過在控制器中部署測量模塊,將上層測量應(yīng)用發(fā)起的測量任務(wù)解析為對交換機(jī)流表統(tǒng)計域的查詢請求.除了直接獲取交換機(jī)提供的標(biāo)準(zhǔn)統(tǒng)計信息之外,還可以通過控制器主動下發(fā)測量流表規(guī)則來針對特定的流量進(jìn)行測量.OpenFlow協(xié)議 1.0版本規(guī)定流表項的匹配域包含十二元組,長度為250比特.在后續(xù)的更新中,為了擴(kuò)展功能又陸續(xù)加入了元數(shù)據(jù)、MPLS標(biāo)簽、MPLS類型、IPv6、可選字段等,因此,靈活地組合流表項中的匹配域字段可以構(gòu)造更細(xì)粒度的測量規(guī)則,滿足更加精細(xì)化的測量需求.SLAM[32]通過主動構(gòu)造并下發(fā)測量流表規(guī)則實現(xiàn)了端到端的時延測量,該方法事先在源交換機(jī)和目的交換機(jī)之間指定報文的轉(zhuǎn)發(fā)路徑,然后在該路徑上的每個交換機(jī)中部署測量流表規(guī)則,控制器下發(fā)符合測量規(guī)則的探測報文,該報文按照指定路徑轉(zhuǎn)發(fā)時,在沿途的每個交換機(jī)觸發(fā)帶有時間戳的異步OpenFlow消息返回至控制器,控制器根據(jù)這些時間戳來估算鏈路時延.與 SLAM[32]類似,OpenNetMon[33]預(yù)先在數(shù)據(jù)平面下發(fā)好測量流表規(guī)則,然后從終端主機(jī)向網(wǎng)絡(luò)中主動地發(fā)送探測報文,通過在設(shè)定好的網(wǎng)絡(luò)節(jié)點上依次捕獲探測報文并解析其中所含的網(wǎng)絡(luò)狀態(tài)信息,判斷端到端的 QoS參數(shù)是否對每條流正確的生效.OpenMeasure[34]使用基于學(xué)習(xí)的預(yù)測方法動態(tài)地通過控制器更新交換機(jī)測量流表規(guī)則.典型的基于流表規(guī)則的測量架構(gòu)如圖2所示.
2.1.2 基于端口鏡像和代理
基于流表規(guī)則的流量采集和預(yù)處理方法的優(yōu)點是實現(xiàn)方便,使用商用SDN交換機(jī)即可部署,不需要額外的軟硬件支持.但是頻繁地操作控制器對交換機(jī)進(jìn)行查詢會給控制器和交換機(jī)造成不小的性能壓力,在控制器帶內(nèi)(in band)部署的情況下還會占用一定的帶寬資源,可能對網(wǎng)絡(luò)正常的轉(zhuǎn)發(fā)性能產(chǎn)生影響.因此在采集較大規(guī)模的流量時,一些研究工作使用基于端口鏡像或者代理的方法.
端口鏡像是指交換機(jī)將從一個端口接收的流量鏡像復(fù)制到另一個端口中發(fā)送,商用交換機(jī)一般都具備此功能,該方法在不超過端口容量限制的前提下可以實現(xiàn)線速地轉(zhuǎn)發(fā).PLANCK[35]在商用SDN交換機(jī)中利用端口鏡像技術(shù)將測量流量轉(zhuǎn)發(fā)至獨立的測量服務(wù)器進(jìn)行離線的分析處理,測量報文間隔在1Gbps的線速下為280μs~7ms,在10Gbps的線速下為275μs~4ms.
測量代理是實現(xiàn)了特定測量功能的軟件或者硬件模塊,一般部署在網(wǎng)絡(luò)設(shè)備之上或者作為中間件(middle box)部署在網(wǎng)絡(luò)設(shè)備之間.測量代理對經(jīng)過的流量進(jìn)行攔截、修改并重定向,將流量重新引導(dǎo)至測量服務(wù)器.代理分散了控制器的性能壓力,并且不受控制器本身錯誤的影響,但是實現(xiàn)成本較高,靈活性較低.MicroTE[36]以數(shù)據(jù)中心中的機(jī)架為單位統(tǒng)計流量信息,用于網(wǎng)絡(luò)全局的路由決策.該方法在數(shù)據(jù)中心的每臺服務(wù)器上部署代理測量模塊,將服務(wù)器的流量信息發(fā)送至該機(jī)架的 ToR(top of rack)服務(wù)器,ToR匯總流量后再發(fā)送至控制器.Hone[37]同樣通過部署在主機(jī)上的軟件代理采集流量數(shù)據(jù).OpenSample[38]在數(shù)據(jù)平面使用部署了sFlow代理的OpenFlow交換機(jī),網(wǎng)絡(luò)流量根據(jù)流表中部署的測量規(guī)則進(jìn)行過濾后,再經(jīng)過sFlow代理抽樣匯總至sFlow流量采集器,提供給上層的流分析器和端口分析器使用.OFRewind[39]以軟件代理的方式串聯(lián)部署在控制平面與數(shù)據(jù)平面之間的控制鏈路中,攔截并修改控制器發(fā)送的控制消息,指導(dǎo)數(shù)據(jù)平面交換機(jī)將所需要的流量轉(zhuǎn)發(fā)至專門的流量存儲服務(wù)器中.Veriflow[40]在控制器和交換機(jī)之間部署代理服務(wù)器,對控制器和交換機(jī)之間雙向通信的每條OpenFlow控制消息進(jìn)行檢測,在每條OpenFlow轉(zhuǎn)發(fā)規(guī)則下發(fā)時檢測網(wǎng)絡(luò)的一致性沖突,判斷該次更新是否會產(chǎn)生網(wǎng)絡(luò)異常.NetSight[41]在控制器和交換機(jī)之間部署代理服務(wù)器,通過修改控制消息在網(wǎng)絡(luò)中的每臺交換上增加處理探測報文的規(guī)則.典型的基于代理的測量架構(gòu)如圖3所示.
2.1.3 基于可編程SDN交換機(jī)
在基于商用 SDN交換機(jī)實現(xiàn)的軟件定義網(wǎng)絡(luò)測量架構(gòu)研究之外,一些文獻(xiàn)開始研究對測量數(shù)據(jù)平面進(jìn)行改造,結(jié)合抽樣技術(shù)和數(shù)據(jù)流技術(shù)在數(shù)據(jù)平面部署測量機(jī)制和算法,以實現(xiàn)更加復(fù)雜的測量架構(gòu).為了對 SDN交換機(jī)的數(shù)據(jù)平面進(jìn)行改造,這些研究工作使用可編程網(wǎng)絡(luò)設(shè)備進(jìn)行組網(wǎng)驗證.可編程網(wǎng)絡(luò)設(shè)備分為軟件和硬件兩種實現(xiàn):軟件實現(xiàn)目前以虛擬交換機(jī)Open vSwitch為代表,硬件實現(xiàn)主要以高性能可重構(gòu)硬件FPGA作為核心進(jìn)行編程改造.基于虛擬SDN交換機(jī)實現(xiàn)的測量架構(gòu)開發(fā)和部署較為方便,可以在較大規(guī)模的網(wǎng)絡(luò)環(huán)境中進(jìn)行驗證.基于硬件SDN交換機(jī)實現(xiàn)的測量架構(gòu)由于可以充分利用高速TCAM存儲器和SRAM存儲器,可以達(dá)到較高的性能.
基于可編程 SDN交換機(jī)實現(xiàn)的流量采集和預(yù)處理方法的核心思想是直接在交換機(jī)數(shù)據(jù)平面報文處理流程中部署過濾、抽樣和哈希算法,直接對原始流量進(jìn)行處理.vPROM[42]基于改造的Open vSwitch(UMON[43])設(shè)計了測量系統(tǒng),它對OpenFlow協(xié)議進(jìn)行了擴(kuò)展,使得RYU控制器可以直接控制UMON交換機(jī),部署在控制器中的Pyretic模塊將上層測量應(yīng)用解析為流表規(guī)則下發(fā)至交換機(jī)進(jìn)行流量采集.iSTAMP[44]使用硬件高速TCAM存儲器對流量進(jìn)行采集和預(yù)處理,由于交換機(jī)中的TCAM容量相當(dāng)有限,無法對每條流進(jìn)行統(tǒng)計,因此iSTAMP將TCAM分為兩部分:一部分用于流量的聚合,測量聚合后流量的統(tǒng)計信息,同時標(biāo)記被認(rèn)為帶有重要信息的流量;另一部分用于流量的解聚合,將被標(biāo)記的特定流從流量聚合中還原出來單獨進(jìn)行測量.OpenSketch[45]在基于NetFPGA實現(xiàn)的可編程SDN交換機(jī)中部署了哈希-分類-計數(shù)的三級數(shù)據(jù)處理管道:第1級管道提供多種哈希算法用于壓縮存儲流量數(shù)據(jù),第2級管道使用TCAM中的通配符規(guī)則對流量進(jìn)行分類,第3級管道使用SRAM作為計數(shù)器統(tǒng)計流量信息.Yu等人[46]在數(shù)據(jù)平面部署了一個兩級的過濾算法,并將處理后的報文存放在Bloom Filter中.Wellem等人[47-51]基于NetFPGA實現(xiàn)了可編程SDN交換機(jī)的原型系統(tǒng)并進(jìn)行了大量的相關(guān)研究工作,在數(shù)據(jù)平面實現(xiàn)了解析-哈希-緩存-計數(shù)的報文處理流程,支持10Gbps線速下的實時測量.Dai[52]基于FPGA實現(xiàn)的可編程SDN交換機(jī)FAST設(shè)計了網(wǎng)絡(luò)拓?fù)浜蛨笪穆窂降臋z測方法,該方法在數(shù)據(jù)平面部署哈希函數(shù)對探測報文的頭部進(jìn)行計算,并將報文的路徑信息存放在SRAM中.典型的基于可編程SDN交換機(jī)的測量架構(gòu)如圖4所示.
傳統(tǒng)網(wǎng)絡(luò)測量由于設(shè)備的封閉性,待測流量一般通過代理轉(zhuǎn)發(fā)或鏡像轉(zhuǎn)發(fā)至獨立的測量服務(wù)器進(jìn)行存儲.軟件定義網(wǎng)絡(luò)測量方法中一方面可以通過標(biāo)準(zhǔn)的OpenFlow同步和異步消息將測量流量傳輸至控制器;另一方面,一些研究工作對可編程SDN軟硬件交換機(jī)的數(shù)據(jù)平面進(jìn)行改造,將少量測量結(jié)果的統(tǒng)計數(shù)據(jù)保存在數(shù)據(jù)平面,通過犧牲一定的可擴(kuò)展性提高測量速率.
2.2.1 基于OpenFlow協(xié)議
軟件定義網(wǎng)絡(luò)中控制器和交換機(jī)之間通過OpenFlow協(xié)議進(jìn)行交互,控制器向交換機(jī)發(fā)送的消息類型包括Features,Configuration,Modify-State,Read-State,Send-Packet和 Barrier,交換機(jī)向控制器主動發(fā)起的異步消息類型包括 Packet-in,Flow-Removed,Port-State和 Error.其中,與網(wǎng)絡(luò)測量相關(guān)的消息類型主要是 Read-State,Send-Packet,Packet-in和Flow-Removed.控制器通過Read-State消息獲取交換機(jī)中的流量統(tǒng)計信息,發(fā)送Stat-Request請求通知交換機(jī),交換機(jī)將流表統(tǒng)計域中存儲的計數(shù)值通過 Stats_Reply消息返回至控制器,OpenFlow1.0協(xié)議中原生的SSR(single stat-request)請求,可以獲取一條特定流的統(tǒng)計信息.Send-Packet消息用于控制器向指定交換機(jī)的指定端口發(fā)送報文,在主動發(fā)送探測報文的測量架構(gòu)中,不但可以從主機(jī)向網(wǎng)絡(luò)中注入探測流量,還可以利用這一消息操作控制器向網(wǎng)絡(luò)中注入探測流量.Packet-in消息是當(dāng)交換機(jī)接收到的報文無法在流表中查詢到匹配項時向控制器發(fā)送的事件消息,消息中包含報文的頭部信息.Flow-Removed消息是當(dāng)交換機(jī)流表中某一流表項因長期無報文匹配而觸發(fā)超時時向控制器發(fā)送的事件消息.Openflow1.5版本中加入了FEST(flow entry statistics trigger)功能,可以在流表統(tǒng)計域中設(shè)置閾值,當(dāng)統(tǒng)計值超過閾值時,觸發(fā)交換機(jī)向控制器發(fā)送異步事件消息.
通過 OpenFlow協(xié)議消息,可以方便地在控制器和交換機(jī)之間傳輸測量數(shù)據(jù),并且具有較好的實時性.文獻(xiàn)[30,31,33,53]利用Read-State消息從交換機(jī)獲取流量統(tǒng)計信息,CeMon[53]對在控制器分布式部署的環(huán)境下,Stat-Request查詢請求聚合的方法進(jìn)行了研究.文獻(xiàn)[32,54-56]利用交換機(jī)主動發(fā)送的異步消息來進(jìn)行測量.Wang等人[57]結(jié)合了監(jiān)聽FEST消息、監(jiān)聽Flow-Removed消息、主動查詢這3種方式,使用可編程SDN交換機(jī)NetMagic獲取流量信息.Flowsense[54]持續(xù)地監(jiān)聽交換機(jī)和控制器之間交互的PacketIn消息和FlowRemoved消息,根據(jù)這兩條消息的時間戳得到一條流在網(wǎng)絡(luò)中的持續(xù)時間.SLAM[32]和 SDNtraceroute[55]主動向網(wǎng)絡(luò)中發(fā)送探測報文,利用探測報文經(jīng)過每一跳交換機(jī)返回的PacketIn消息進(jìn)行測量,SLAM記錄報文經(jīng)過每一跳的時間戳用于鏈路時延的估計,SDNtraceroute記錄報文的真實轉(zhuǎn)發(fā)路徑.Suárez-Varela等人[56]根據(jù)交換機(jī)發(fā)送的FlowRemoved事件消息來觸發(fā)控制器對該條流的統(tǒng)計值的查詢.
2.2.2 基于數(shù)據(jù)平面sketch
基于可編程SDN交換機(jī)實現(xiàn)的測量架構(gòu)研究一般將預(yù)處理后的流量數(shù)據(jù)以sketch結(jié)構(gòu)的格式緩存在數(shù)據(jù)平面內(nèi)存或 SRAM存儲器中,在每個測量周期結(jié)束后將緩存數(shù)據(jù)發(fā)送至控制器進(jìn)行分析.一些研究工作還在可編程SDN交換機(jī)中部署了協(xié)議適配層,將自定義的控制協(xié)議與OpenFlow協(xié)議進(jìn)行適配和擴(kuò)展,使得改造后的交換機(jī)可以通過OpenFlow協(xié)議進(jìn)行管理.
Wellem等[47,48,51]分別針對超點(Superspreader)檢測、變化(Heavy Change)檢測和大流(Heavy Hitter)檢測在數(shù)據(jù)平面設(shè)計了基于 sketch數(shù)據(jù)結(jié)構(gòu)的報文處理結(jié)構(gòu),該結(jié)構(gòu)組合了緩存隊列和多種 sketch,實現(xiàn)了在較高線速下流量的實時處理.JOTA[58]和 SCREAM[59]討論了如何通過動態(tài)資源調(diào)度的方式利用數(shù)據(jù)平面有限的TCAM 和 SRAM 資源實現(xiàn)不同類型測量任務(wù)的并發(fā)執(zhí)行,并保證一定的精度,測量架構(gòu)使用了包括 PCSA sketch、Count-min sketch、HyperLogLog sketch在內(nèi)的多種sketch數(shù)據(jù)結(jié)構(gòu)進(jìn)行了驗證.SketchVisor[60]基于虛擬交換機(jī) Open vSwitch設(shè)計了基于 sketch的數(shù)據(jù)平面,并對目前主流的 sketch數(shù)據(jù)結(jié)構(gòu)(FlowRadar[61],RevSketch[62],UnivMon[63],Deltoid[64],OpenSketch[45],FM[65],kMin[66],Linear Counting[67],MRAC[68])進(jìn)行了驗證.OpenSketch[45]在數(shù)據(jù)平面部署了一個測量庫,其中包含了多種哈希算法和sketch數(shù)據(jù)結(jié)構(gòu),提供了API來支持不同測量任務(wù)的開發(fā)和部署,使用這個測量庫可以自動的為不同的sketch配置數(shù)據(jù)平面管道并且分配相應(yīng)的交換機(jī)資源使得任務(wù)達(dá)到最大的精度.UnivMon[63]在數(shù)據(jù)平面使用多個Count sketch數(shù)據(jù)結(jié)構(gòu)對測量數(shù)據(jù)進(jìn)行并行抽樣計算,支持多種測量算法.
傳統(tǒng)網(wǎng)絡(luò)測量中需要部署獨立的測量服務(wù)器對待測流量進(jìn)行離線地分析,網(wǎng)絡(luò)管理者根據(jù)測量結(jié)果人為地調(diào)整網(wǎng)絡(luò)配置.軟件定義網(wǎng)絡(luò)測量中,由于軟件定義網(wǎng)絡(luò)采用中心管控的架構(gòu),網(wǎng)絡(luò)中的所有交換機(jī)都可以通過控制器進(jìn)行集中地配置和管理.在待測流量較小、實時性要求較高的測量任務(wù)中,可以通過在控制器中部署擴(kuò)展模塊,利用監(jiān)聽程序直接獲取測量數(shù)據(jù)并分析,測量結(jié)果實時反饋至控制器對網(wǎng)絡(luò)配置進(jìn)行調(diào)整.在對實時性要求相對較低的半實時測量任務(wù)中,可以在控制器北向部署測量應(yīng)用通過北向 API與控制器交互進(jìn)行更大規(guī)模流量的測量分析.測量模塊主要基于控制器部署,根據(jù)應(yīng)用場景的不同可分為兩種部署方式.
· 一種方式是作為擴(kuò)展模塊部署在控制器內(nèi)部,此方式需要修改和擴(kuò)展控制器程序,開發(fā)難度較大.優(yōu)點在于部署在控制器內(nèi)部的測量模塊可以監(jiān)聽控制器發(fā)送和接收的全部流量,并接管控制器內(nèi)部的處理流程,調(diào)用控制器發(fā)送和接收控制 OpenFlow消息和測量數(shù)據(jù),適用于實時性較高的測量任務(wù).文獻(xiàn)[30,31,33,54]通過在控制器中部署測量模塊的方式實現(xiàn),其中,Payless[31]在 FloodLight控制器中以RESTAPI的形式編寫了上層服務(wù)接口,支持用戶自定義的測量構(gòu)件,測量任務(wù)使用 JSON格式的文件來定義,交換機(jī)反饋的統(tǒng)計信息匯總到控制器進(jìn)行處理,為上層應(yīng)用提供一個抽象的網(wǎng)絡(luò)信息視圖;
· 在控制器內(nèi)部部署擴(kuò)展模塊的方式會對控制器性能造成一定影響,同時受到控制器有限的計算資源和存儲資源的顯示,因此涉及較大規(guī)模流量、較為復(fù)雜算法的測量任務(wù)通常使用另一種部署方式,這種方式中,測量模塊部署在控制器之上的應(yīng)用層,通過北向 API與控制器進(jìn)行交互,這種方式一般用于半實時的測量結(jié)果反饋(通常以一個測量周期為單位).文獻(xiàn)[56,58,59,69,70]將多種較為復(fù)雜的流量檢測算法部署在控制器之上的應(yīng)用層,在每個測量周期結(jié)束后通過控制器獲取網(wǎng)絡(luò)中所有交換機(jī)數(shù)據(jù)平面中的 sketch數(shù)據(jù)進(jìn)行分析處理.測量結(jié)果反饋到控制器,指導(dǎo)下一個測量周期內(nèi)交換機(jī)測量參數(shù)的配置.
測量對象一般可分為網(wǎng)絡(luò)狀態(tài)參數(shù)、網(wǎng)絡(luò)性能參數(shù)和網(wǎng)絡(luò)流量參數(shù):網(wǎng)絡(luò)狀態(tài)參數(shù)包含網(wǎng)絡(luò)節(jié)點的配置信息、網(wǎng)絡(luò)鏈路的狀態(tài)信息以及網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu),是網(wǎng)絡(luò)的基本參數(shù);網(wǎng)絡(luò)性能參數(shù)包括鏈路吞吐率、鏈路丟包率和鏈路時延等,該參數(shù)對測量的實時性要求較高,反映網(wǎng)絡(luò)的瞬時運行狀態(tài);網(wǎng)絡(luò)流量參數(shù)一般通過對一定周期內(nèi)的網(wǎng)絡(luò)流量進(jìn)行收集分析獲得,是一個統(tǒng)計參數(shù),例如報文數(shù)量統(tǒng)計、流長統(tǒng)計等,對流量參數(shù)進(jìn)行深入挖掘可以獲得網(wǎng)絡(luò)潛在的信息.
網(wǎng)絡(luò)運行狀態(tài)包含拓?fù)浣Y(jié)構(gòu)、鏈路狀態(tài)、控制邏輯等,對其進(jìn)行測量的主要目的是監(jiān)測網(wǎng)絡(luò)運行時的相關(guān)指標(biāo)和行為,及時地發(fā)現(xiàn)網(wǎng)絡(luò)異常和故障,確保網(wǎng)絡(luò)運行在正確狀態(tài).
3.1.1 故障檢測
SDN控制器通過LLDP協(xié)議來探測網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),控制器將LLDP報文作為Packet-out消息發(fā)送至全網(wǎng)的交換機(jī),SDN交換機(jī)收到報文后將其轉(zhuǎn)發(fā)至所有相鄰的交換機(jī),相鄰交換機(jī)收到報文后,會以Packet-in的形式傳回控制器.這樣,控制器就得到了所有交換機(jī)的相鄰信息,并以此構(gòu)建出整個網(wǎng)絡(luò)拓?fù)?當(dāng)網(wǎng)絡(luò)因為故障導(dǎo)致拓?fù)浣Y(jié)構(gòu)和鏈路狀態(tài)發(fā)生改變時,需要通過測量手段及時的定位故障.OFRewind[39]在控制器和交換機(jī)之間部署了流量記錄與流量重放模塊:流量記錄模塊控制交換機(jī)將測量流量轉(zhuǎn)發(fā)至流量存儲服務(wù)器中,流量重放模塊控制流量存儲服務(wù)器將流量數(shù)據(jù)重新注入到網(wǎng)絡(luò)中.通過這種方式,該方法可以在全網(wǎng)絡(luò)范圍內(nèi)復(fù)現(xiàn)網(wǎng)絡(luò)流量,方便故障診斷工作的定位.Zeng等人[71]提出了一種自動化測試報文生成工具——ATPG(automatic test packet generation),ATPG通過讀取路由配置文件生成設(shè)備無關(guān)的模型.該模型被用來生成最小的測試報文集,生成的測試報文最少測試網(wǎng)絡(luò)中的每條鏈路,最多測試網(wǎng)絡(luò)中的每條規(guī)則.ATPG的目標(biāo)是檢測靜態(tài)狀態(tài)的故障,但是該方法不能檢測動態(tài)變化網(wǎng)絡(luò)中的故障.Kempf等人[72]實現(xiàn)了一個可擴(kuò)展的故障管理系統(tǒng),通過控制器向邏輯上的組端口發(fā)送探測報文來檢測網(wǎng)絡(luò)故障.
3.1.2 邏輯一致性檢測
網(wǎng)絡(luò)控制邏輯和轉(zhuǎn)發(fā)邏輯一致性是指數(shù)據(jù)平面在對報文進(jìn)行轉(zhuǎn)發(fā)的過程中,完全按照控制器下發(fā)的規(guī)則執(zhí)行正確的行為.在軟件定義網(wǎng)絡(luò)中,盡管數(shù)據(jù)平面得到了簡化,但是控制平面存在很高的軟件復(fù)雜度.盡管控制平面掌握網(wǎng)絡(luò)的全局信息,將高層的控制平面邏輯描述解析成為低層的數(shù)據(jù)平面轉(zhuǎn)發(fā)行為,對數(shù)據(jù)平面進(jìn)行統(tǒng)一地調(diào)度部署,理論上可以保證網(wǎng)絡(luò)配置策略的一致性,但是也存在一定的隱患.控制平面部署的多個 SDN應(yīng)用并發(fā)執(zhí)行時,下發(fā)的流表規(guī)則可能發(fā)生潛在的邏輯沖突,或者當(dāng)控制器和交換機(jī)內(nèi)部發(fā)生一些錯誤時,可能會導(dǎo)致控制平面的轉(zhuǎn)發(fā)邏輯與數(shù)據(jù)平面的實際行為不一致,而控制器本身并不能對這一情況進(jìn)行感知.為了對這樣的故障進(jìn)行檢測,就需要對數(shù)據(jù)平面的真實行為進(jìn)行測量.Veriflow[40]設(shè)計了面向 SDN 網(wǎng)絡(luò)的實時一致性檢測工具,它對控制器和交換機(jī)之間雙向通信的每條OpenFlow控制消息進(jìn)行檢測,通過圖搜索技術(shù)結(jié)合網(wǎng)絡(luò)拓?fù)鋪眚炞C網(wǎng)絡(luò)中的不變量,只有當(dāng)不變量成立時才將流表規(guī)則下發(fā)至網(wǎng)絡(luò)設(shè)備,從而保證下發(fā)規(guī)則的正確性.VeriFlow根據(jù)最長前綴匹配規(guī)則將全網(wǎng)報文基于目的 IP地址進(jìn)行分類,無論是轉(zhuǎn)發(fā)規(guī)則的插入、更新或是刪除,一次規(guī)則檢測只會影響到以一個前綴為目的地址的報文.通過這種方式,在平均每條流表規(guī)則的下發(fā)間隔小于10ms的SDN網(wǎng)絡(luò)中,VeriFlow可以在數(shù)百毫秒的時間內(nèi)完成驗證.
對報文在網(wǎng)絡(luò)中的真實轉(zhuǎn)發(fā)路徑進(jìn)行測量,也是檢測控制平面與數(shù)據(jù)平面邏輯一致性的有效手段.NetSight[41]通過主動發(fā)送探測報文的方式檢測報文在網(wǎng)絡(luò)中的真實路徑,它在網(wǎng)絡(luò)中的每臺交換機(jī)上部署處理探測報文的流表規(guī)則.當(dāng)探測報文經(jīng)過網(wǎng)絡(luò)中每一跳交換機(jī)時,除了被正常轉(zhuǎn)發(fā)之外,還將事件記錄作為一個postcard發(fā)送至專門的測量服務(wù)器,每個postcard包含報文頭、交換機(jī)ID、出端口、交換機(jī)狀態(tài).測量服務(wù)器通過將所有postcard與網(wǎng)絡(luò)的拓?fù)湫畔⑾嘟Y(jié)合,就可以重建出報文的實際路徑.CherryPick[73]通過將路徑信息存放在報文頭部中來測量報文路徑,它利用數(shù)據(jù)中心網(wǎng)絡(luò)中 Fat-Tree拓?fù)浣Y(jié)構(gòu)的性質(zhì),通過邊緣著色算法對網(wǎng)絡(luò)中非必要的鏈路進(jìn)行刪減,有效地減少了交換機(jī)中所需部署的測量規(guī)則的數(shù)量以及報文頭部的空間占用,同時保證報文路徑的正確恢復(fù).SDNtraceroute[55]充分利用了軟件定義網(wǎng)絡(luò)中控制平面和數(shù)據(jù)平面交互的實時性,通過在網(wǎng)絡(luò)中所有交換機(jī)上部署測量規(guī)則,使得探測流量每經(jīng)過一個交換機(jī)都通過 PacketIn消息發(fā)送回控制器.控制器解析探測報文中的路徑信息,對其作一定修改再重新下發(fā)回網(wǎng)絡(luò)中.這樣,控制器根據(jù)探測報文每一跳的信息可以容易地重建其真實的轉(zhuǎn)發(fā)路徑.Dai[52]基于FPGA實現(xiàn)的SDN交換機(jī)FAST設(shè)計了檢測網(wǎng)絡(luò)拓?fù)浜蛨笪穆窂降臏y量方法,該方法通過在FAST中添加3條流表規(guī)則,對探測報文進(jìn)行匹配處理.FAST中部署的哈希函數(shù)對探測報文的頭部信息進(jìn)行計算,并將計算結(jié)果作為 SRAM索引地址,然后將相關(guān)的路徑信息存入相應(yīng)的內(nèi)存空間.控制器中部署相同的哈希函數(shù),計算得到探測報文在SRAM中的存放地址,根據(jù)該地址收集報文的全部路徑信息.該測量機(jī)制支持一定規(guī)模的并發(fā)路徑探測任務(wù).
網(wǎng)絡(luò)轉(zhuǎn)發(fā)性能一般通過3個指標(biāo)反映——吞吐量、丟包率和時延.
1) 吞吐量分為端口吞吐量和鏈路吞吐量,是指端口、鏈路在單位時間內(nèi)成功傳送數(shù)據(jù)的數(shù)量.其中,端口吞吐量測量的基本方法是:由控制器向交換機(jī)發(fā)送 ofp_port_stats_request消息,查詢交換機(jī)中的端口統(tǒng)計信息,交換機(jī)返回ofp_port_stats消息,通過對其中的rx_bytes和tx_bytes數(shù)值進(jìn)行計算得出.鏈路吞吐量由構(gòu)成鏈路的兩個端口的吞吐量決定,其值等于二者中的較小者;
2) 丟包率是通過鏈路兩端的報文數(shù)量之差與源端報文總數(shù)之比.測量丟包率的基本方法是:分別在t1時刻和t2時刻通過控制器發(fā)送ofp_port_stats_request消息,獲取鏈路兩端交換機(jī)端口的發(fā)送報文數(shù)目和接收報文數(shù)目.假設(shè)t1時刻和t2時刻sw1交換機(jī)port2端口發(fā)送報文數(shù)量差值為(Δtx_packets),sw2交換機(jī)port1端口接收報文數(shù)量差值為(Δrx_packets),則鏈路((sw1,port2),(sw2,port1))在(sw1,sw2)方向的丟包率為:(Δtx_packets-Δrx_packets)/Δtx_packets;
3) 數(shù)據(jù)報文在網(wǎng)絡(luò)中的時延由兩部分組成:鏈路傳播時延和交換機(jī)處理時延.鏈路傳播時延是指數(shù)據(jù)報文在交換機(jī)連接介質(zhì)上進(jìn)行傳輸所花費的時間,由傳輸介質(zhì)的物理性質(zhì)決定;交換機(jī)處理時延是數(shù)據(jù)報文經(jīng)過交換機(jī)時所花費的時間,在SDN交換機(jī)中處理時延由3部分組成:查找時延、轉(zhuǎn)發(fā)時延和控制時延.查找時延是新報文到達(dá)時,交換機(jī)查找流表匹配項所花費的時間;轉(zhuǎn)發(fā)時延是交換機(jī)將報文從入端口遷移到出端口所花費的時間,報文在出端口發(fā)送隊列停留的時間受隊列中的報文數(shù)量和優(yōu)先級影響;控制時延是當(dāng)新報文在交換機(jī)流表中查詢不到匹配項時,交換機(jī)向控制器請求下發(fā)新流表項所花費的時間.
Flowsense[54]是一個基于推送的被動測量方法,它利用交換機(jī)主動向控制器發(fā)送的 PacketIn消息和FlowRemoved消息中攜帶的信息計算鏈路的吞吐率.Flowsense的優(yōu)勢在于其較低的測量開銷,但是由于被動方式采集到的信息時間點較為離散,對于持續(xù)時間較長的流進(jìn)行測量時精度較低.SLAM[32]在網(wǎng)絡(luò)中任意交換機(jī)之間測量時延,測量架構(gòu)包含4個模塊:規(guī)則生成器、流量生成器、流量監(jiān)聽器和實驗估計器.測量分為3個步驟:首先指定端到端的轉(zhuǎn)發(fā)路徑,在路徑上的每個交換機(jī)上部署測量流表規(guī)則;然后,控制器下發(fā)探測報文,探測報文每經(jīng)過一個交換機(jī)會觸發(fā)一個packet_in消息發(fā)送至控制器;最后,控制器根據(jù)每個packet_in消息的時間戳來估算時延.SLAM通過Statistics_Request消息和Statistics_Reply消息消除了控制時延帶來的誤差,但是沒有考慮查找時延和轉(zhuǎn)發(fā)時延,因此測量精度會受到交換機(jī)本身性能和負(fù)載的影響.PLANCK[35]通過跟蹤TCP報文的序列號和接收時間來計算 TCP流的吞吐量,然后將一條鏈路上所有流的吞吐量相疊加來計算鏈路利用率.OpenNetMon[33]設(shè)計了一個 SDN網(wǎng)絡(luò)性能測量系統(tǒng),根據(jù)在預(yù)設(shè)網(wǎng)絡(luò)節(jié)點上查詢到的探測報文信息持續(xù)地估算網(wǎng)絡(luò)的性能參數(shù),具體的計算方式為:對流量轉(zhuǎn)發(fā)路徑上的最后一個交換機(jī)進(jìn)行查詢,獲取交換機(jī)端口計數(shù)器中測量周期T內(nèi)通過的報文數(shù)目S,通過計算S/T可以得到吞吐率;分別查詢轉(zhuǎn)發(fā)路徑上的第1個和最后一個交換機(jī)中測量周期T內(nèi)的報文增量,兩者的差值除以第1個交換機(jī)的報文增量值可以得到這兩個節(jié)點之間的丟包率;主動發(fā)送探測報文穿過所有預(yù)定節(jié)點后返回控制器,根據(jù)控制器記錄的時間戳之差再減去控制器到數(shù)據(jù)平面之間的往返時延可以得到所探測路徑的鏈路傳輸時延.
網(wǎng)絡(luò)中傳輸?shù)牧髁渴蔷W(wǎng)絡(luò)測量研究工作中最重要的測量對象,對流量進(jìn)行深入地挖掘和分析可以發(fā)現(xiàn)網(wǎng)絡(luò)中潛在的問題,這是指導(dǎo)網(wǎng)絡(luò)管理和安全工作的重要依據(jù).網(wǎng)絡(luò)管理者根據(jù)流量的統(tǒng)計特征可以制定更好的管理策略和安全策略.流量統(tǒng)計特征的主要表征參數(shù)包括:
1) Cardinality:一個測量周期內(nèi)測量的不同流的數(shù)量;
2) Flow size distribution:一個測量周期內(nèi)所有流的大小的分布比例;
3) Entropy:流長分布的熵值;
4) Heavy Hitter:測量周期內(nèi)一條流的大小超過一定閾值;
5) Hierarchical Heavy Hitter:Heavy Hitter的擴(kuò)展,基于報文頭部的某個或者某些字段最長前綴聚合的Heavy Hitter,且它的大小減去所有子Heavy Hitter節(jié)點的大小之和后仍然超過一定閾值;
6) Heavy Change:一條流在相鄰周期之間的大小之差超過一定的閾值;
7) DDoS(distributed denial of service):一個目的主機(jī)在測量周期內(nèi)接收的來自不同源主機(jī)請求的數(shù)量超過一定閾值;
8) Superspreader:一個源主機(jī)在測量周期內(nèi)向不同目的主機(jī)發(fā)送請求的數(shù)量超過一定閾值.
3.3.1 流量工程
網(wǎng)絡(luò)流量特征可以有效地指導(dǎo)流量工程相關(guān)的研究工作通過調(diào)度網(wǎng)絡(luò)流量、優(yōu)化網(wǎng)絡(luò)資源來實現(xiàn)優(yōu)化網(wǎng)絡(luò)性能、保證服務(wù)質(zhì)量、降低網(wǎng)絡(luò)能耗的需求.
數(shù)據(jù)中心局域網(wǎng)具有網(wǎng)絡(luò)節(jié)點密集、網(wǎng)絡(luò)流量集中的特點,如何高效地利用帶寬資源是主要的研究問題.同時,大型互聯(lián)網(wǎng)服務(wù)提供商一般擁有多個地理位置跨度較大的數(shù)據(jù)中心,如何保證廣域網(wǎng)數(shù)據(jù)中心之間高效互聯(lián)并對外提供高質(zhì)量、高可靠的服務(wù),也是重要的工程問題.由于軟件定義網(wǎng)絡(luò)使用中心管控的架構(gòu),通過對鏈路中傳輸流量的狀態(tài)信息進(jìn)行測量,可以有效地指導(dǎo)控制器調(diào)整路由配置,均衡網(wǎng)絡(luò)負(fù)載,提高網(wǎng)絡(luò)鏈路利用率,非常適合數(shù)據(jù)中心的需求,因此得到了一定程度的應(yīng)用.目前,大規(guī)模的軟件定義網(wǎng)絡(luò)測量實例包括 Micosoft的SWAN系統(tǒng)和Google的B4系統(tǒng).SWAN[74](software-driven WAN)是Micosoft提出的跨數(shù)據(jù)中心WAN解決方案,通過為不同等級的網(wǎng)絡(luò)服務(wù)設(shè)置相應(yīng)的發(fā)送速率和網(wǎng)絡(luò)路徑來改善網(wǎng)絡(luò)整體的資源利用率.SWAN將網(wǎng)絡(luò)流量按照優(yōu)先級從高到低的順序分為 3類:交互流量、彈性流量和背景流量,中央控制器嚴(yán)格按照流量優(yōu)先級順序為每個服務(wù)分配相適應(yīng)的鏈路資源.為了降低網(wǎng)絡(luò)擁塞造成的影響,SWAN會保留一部分最短路徑的鏈路資源和交換機(jī)資源,在緊急情況時供最高優(yōu)先級的服務(wù)使用.相較于單純使用MPLS技術(shù)的跨數(shù)據(jù)中心WAN,SWAN可以將鏈路利用率從 60%提高到 98%.Google在其廣域網(wǎng)數(shù)據(jù)中心中部署了基于 OpenFlow技術(shù)的B4[75]系統(tǒng),該系統(tǒng)使用Google自行研發(fā)的專用SDN設(shè)備,用于WAN級的流量管控.WAN網(wǎng)絡(luò)在數(shù)以千計的獨立鏈路上以總和 TB每秒的數(shù)量級傳輸數(shù)據(jù)時會面臨嚴(yán)重的性能和可靠性問題,在不考慮鏈路故障的情況下,一般鏈路利用率在 30%~40%之間.B4的核心是中央流量管控模塊,該模塊實時地監(jiān)測全網(wǎng)的拓?fù)浣Y(jié)構(gòu)和可用資源信息,它將網(wǎng)站服務(wù)抽象為網(wǎng)絡(luò)節(jié)點,網(wǎng)站與網(wǎng)站之間的連通性抽象為網(wǎng)絡(luò)鏈路,網(wǎng)絡(luò)流量抽象為以三元組(源網(wǎng)站,目的網(wǎng)站,QoS)表示的Flow Group,然后通過基于哈希的ECMP算法動態(tài)地平衡流量.Google表明,B4系統(tǒng)可以使廣域網(wǎng)鏈路的長期平均利用率保持在70%以上,部分鏈路利用率可達(dá)99%以上.
通過對流量大小進(jìn)行感知和對流量類型進(jìn)行識別,可以根據(jù)網(wǎng)絡(luò)實時的負(fù)載情況調(diào)整路由策略,保證網(wǎng)絡(luò)應(yīng)用的服務(wù)質(zhì)量.流量矩陣由網(wǎng)絡(luò)中全部節(jié)點兩兩之間的流量大小構(gòu)成,是反映網(wǎng)絡(luò)狀態(tài)的重要參數(shù),文獻(xiàn)[30,76,77]通過將相同源地址和目的地址的流統(tǒng)計信息合并來構(gòu)造并維護(hù)全網(wǎng)的流量矩陣.MicroTE[36]周期性地將瞬時流速與歷史平均流速相比較,當(dāng)流量大小顯著變化時觸發(fā)一次流量信息匯總,檢測流量中是否包含大流:如果包含,則啟動啟發(fā)式的 ECMP算法對網(wǎng)絡(luò)全局路由進(jìn)行優(yōu)化.Suárez-Varela等人[56,78,79]基于控制器OpenDaylight和軟件交換機(jī)openvswitch實現(xiàn)了一個測量系統(tǒng),對網(wǎng)絡(luò)流量進(jìn)行過濾、抽樣,并使用深度包檢測算法(deep packet inspection,簡稱DPI)和機(jī)器學(xué)習(xí)(machine learning,簡稱ML)算法對其中的DNS流量、HTTP流量和加密流量進(jìn)行識別分類.該系統(tǒng)在交換機(jī)中部署了三級流表:第1級為過濾規(guī)則,第2級為抽樣規(guī)則,第3級為轉(zhuǎn)發(fā)規(guī)則,然后統(tǒng)計待測流量的報文計數(shù)、流長計數(shù)和流持續(xù)時間信息.系統(tǒng)實現(xiàn)了兩種抽樣算法:一種是基于IP后綴的抽樣,保證抽樣報文來自不同的子網(wǎng),抽樣速率為1/(2m·2n),m是源IP后綴比特數(shù),n是目的IP后綴比特數(shù);另一種是基于哈希的抽樣,利用OpenFlow協(xié)議1.3中組表(action buckets)的功能對報文頭五元組進(jìn)行哈希,如果結(jié)果落在指定范圍內(nèi)則抽樣.測量模塊部署在控制器中,處理優(yōu)先級設(shè)置為最高,當(dāng)監(jiān)聽到控制器收到Flow-Removed消息時,觸發(fā)控制器發(fā)送Multipart-Request消息獲取交換機(jī)上的統(tǒng)計信息.
近年來,隨著全人類節(jié)約能源和保護(hù)環(huán)境的意識不斷提高,節(jié)約發(fā)展、清潔發(fā)展成為未來的主流發(fā)展模式.有研究表明:在發(fā)達(dá)國家中,數(shù)據(jù)和通信網(wǎng)絡(luò)消耗的能源占社會總能源消耗的 5%,并且以每年 10%的速率增加.因此,研究如何降低網(wǎng)絡(luò)的運行能耗是非常有意義的.軟件定義網(wǎng)絡(luò)由于可以從全局的視角根據(jù)網(wǎng)絡(luò)中流量的分布狀態(tài)動態(tài)地優(yōu)化網(wǎng)絡(luò)資源的分配,在一定程度上降低網(wǎng)絡(luò)的能耗,引發(fā)了一些研究工作的關(guān)注.
Kaup等人[80]提出了一個測量軟件定義網(wǎng)絡(luò)能耗的模型,它同時考慮硬件 OpenFlow交換機(jī)和部署在服務(wù)器上的軟件OpenFlow交換機(jī)的能耗,根據(jù)網(wǎng)絡(luò)狀態(tài)信息的測量結(jié)果,動態(tài)地將部分OpenFlow交換機(jī)調(diào)整至睡眠模式.實驗結(jié)果表明:在10Mbps的組網(wǎng)環(huán)境下,該方法在硬件OpenFlow交換機(jī)和軟件OpenFlow交換機(jī)上的能耗測量誤差分別小于1%和8%,可以降低6.6%網(wǎng)絡(luò)總體能耗.文獻(xiàn)[81,82]通過將多條鏈路的流量合并至一條鏈路,然后關(guān)閉其余鏈路相關(guān)的交換機(jī)端口來節(jié)約能耗.
3.3.2 安全防御
基于網(wǎng)絡(luò)層面的安全防御研究工作通過對流量的統(tǒng)計特征進(jìn)行分析,發(fā)現(xiàn)隱藏在正常流量中的攻擊流量,然后通過定位攻擊模式、追溯攻擊源頭、轉(zhuǎn)移攻擊目標(biāo)、屏蔽攻擊流量的方式來防御網(wǎng)絡(luò)攻擊,保障網(wǎng)絡(luò)設(shè)備和主機(jī)設(shè)備的正常運行以及網(wǎng)絡(luò)服務(wù)的正常訪問.常用的安全相關(guān)的流量檢測算法包括大流(heavy hitter)檢測、分級大流(hierarchical heavy hitter)檢測、變化(heavy change)檢測、超點(superspreader)檢測、DDoS檢測等,涵蓋了主流的網(wǎng)絡(luò)攻擊手段.
OpenSample[38]提出,數(shù)據(jù)中心流量中超過 99%都是 TCP流,通過計算同一個流中相鄰兩個采樣報文中TCP數(shù)據(jù)包頭部序號的差值,再除以報文各自對應(yīng)的sFlow采樣時間戳的差值,就可以計算出該TCP流在測量周期內(nèi)的估計速率值.根據(jù)這一機(jī)制,OpenSample實現(xiàn)了對大流的快速檢測,并且可以實時地生成網(wǎng)絡(luò)狀態(tài)快照提供給上層應(yīng)用使用.Openwatch[69]提出了一個自適應(yīng)的流量計數(shù)方法,使用線性預(yù)測算法動態(tài)地調(diào)整異常流量檢測的間隔,預(yù)測到攻擊可能發(fā)生時進(jìn)行細(xì)粒度測量,否則進(jìn)行粗粒度的測量.Mehdi等人[83]在軟件定義測量架構(gòu)中驗證了多種異常檢測算法,實現(xiàn)了端口速率限制、可疑報文過濾、異常分類等功能.iSTAMP[44]實現(xiàn)了網(wǎng)絡(luò)中 Top-k的大流檢測,并且使用智能的 MAB(multi-armed bandit)算法估算全網(wǎng)的流長分布.vPROMGUARD[42]在基于改造的Open vSwitch實現(xiàn)的測量架構(gòu)中,對DDoS檢測算法和端口掃描檢測算法進(jìn)行了驗證.Moshref等人[84]設(shè)計了Max-Cover HHH算法用于檢測網(wǎng)絡(luò)中的重要節(jié)點,并且在交換機(jī)數(shù)據(jù)平面直接部署了用于分級大流檢測(hierarchical heavy hitter,簡稱HHH)的哈希算法和sketch數(shù)據(jù)結(jié)構(gòu).HashPipe[85]在數(shù)據(jù)平面使用哈希算法對原始報文進(jìn)行壓縮處理,存儲報文的標(biāo)識符和計數(shù)值,用于跟蹤網(wǎng)絡(luò)中的大流(heavy hitter,簡稱HH).Dream[70]和 Scream[59]設(shè)計了可以并發(fā)運行大流檢測、分級大流檢測、超點檢測算法的測量架構(gòu),并且可以保證用戶指定的精度.Univmon[63,86]基于一種測量結(jié)構(gòu)實現(xiàn)了所有主流的流量檢測算法,并達(dá)到較好的精度.
表1總結(jié)了軟件定義網(wǎng)絡(luò)測量方法的相關(guān)研究成果.

Table 1 Summary of software defined measurement technology表1 軟件定義網(wǎng)絡(luò)測量方法總結(jié)
本節(jié)基于這些研究將軟件定義網(wǎng)絡(luò)測量的主要研究問題和挑戰(zhàn)歸納為 4個方面:測量資源與測量精度的平衡、測量實時性與測量精度的平衡、高效通用的測量架構(gòu)、多控制器下分布式協(xié)同測量.
軟件定義網(wǎng)絡(luò)中的流量可以分為兩種類型:控制流量和數(shù)據(jù)流量.控制流量是 SDN控制器與 SDN交換機(jī)之間傳輸?shù)牧髁?數(shù)據(jù)流量是 SDN交換機(jī)之間傳輸?shù)牧髁?網(wǎng)絡(luò)的正常運行離不開控制流量的正常傳輸,但是SDN測量任務(wù)往往需要在控制器和交換機(jī)之間進(jìn)行額外的通信,或者在控制流量中攜帶額外的測量信息,這給有限的控制器和交換機(jī)之間的帶寬資源帶來了一定的壓力,尤其是在控制器的帶內(nèi)(in band)部署的情況下.Ahmed等人[93]討論了控制器帶外部署的組網(wǎng)設(shè)計,在這種情況下,協(xié)議控制信令通過專門的控制器到交換機(jī)鏈路傳輸,傳輸開銷與查詢的交換機(jī)數(shù)量和流的條數(shù)相關(guān),與控制器部署的位置無關(guān).而控制器帶內(nèi)部署的情況下,控制流量與數(shù)據(jù)流量共享帶寬,控制通信開銷的計算變得更加復(fù)雜,傳輸跳數(shù)也需要加入考慮.在軟件定義網(wǎng)絡(luò)中,為了保證網(wǎng)絡(luò)的正常運行,控制平面和數(shù)據(jù)平面之間需要不斷地交換 OpenFlow消息.然而控制平面和數(shù)據(jù)平面之間的鏈路帶寬是有限的,鏈路負(fù)載會隨著網(wǎng)絡(luò)規(guī)模的增加不斷升高.如果測量方法過于頻繁地利用控制器讀取交換機(jī)中的計數(shù)器信息,會造成控制器與交換機(jī)之間的鏈路負(fù)載飽和,影響網(wǎng)絡(luò)的穩(wěn)定運行.此外,主動測量方法中使用較大規(guī)模的探測報文也有可能對網(wǎng)絡(luò)中的生產(chǎn)流量造成一定影響.
同時,由于軟件定義網(wǎng)絡(luò)開放了控制平面的編程接口,控制器中部署的測量擴(kuò)展模塊會占用一定的控制器計算資源,可能對控制器性能造成影響.另外,SDN交換機(jī)的流表空間是有限的,在流表中部署過多的測量規(guī)則可能導(dǎo)致對交換機(jī)硬件資源的過度消耗.OpenFlow協(xié)議1.0版本中流表項匹配域的長度為250比特,在后續(xù)的更新中新字段不斷加入,使得匹配域長度不斷增加,遠(yuǎn)遠(yuǎn)超出了傳統(tǒng)網(wǎng)絡(luò)中的匹配域長度.過長的匹配域極大增加了硬件的查表成本,盡管OpenFlow協(xié)議1.1版本發(fā)布了多級流表和流水線處理結(jié)構(gòu)來壓縮單張流表的大小,降低查表時的硬件資源消耗,但是也導(dǎo)致了SDN交換機(jī)硬件設(shè)計復(fù)雜度和報文轉(zhuǎn)發(fā)時延的增加.
一些研究工作利用SDN交換機(jī)中的硬件存儲器資源進(jìn)行測量,使用TCAM存儲器對報文進(jìn)行高速地匹配和查找,使用SRAM存儲器緩存預(yù)處理后的測量數(shù)據(jù).在這些測量架構(gòu)中,分配給測量任務(wù)的TCAM存儲器大小和SRAM存儲器大小與測量精度直接相關(guān),然而交換機(jī)上的TCAM資源和SRAM資源是非常有限的,并發(fā)執(zhí)行多個測量任務(wù)時所需的資源可能超出硬件的容量.
綜上所述,在軟件定義網(wǎng)絡(luò)中部署額外的測量機(jī)制需要消耗額外的網(wǎng)絡(luò)資源,包括鏈路的帶寬資源、SDN控制器和 SDN交換機(jī)的計算和存儲資源,可能對網(wǎng)絡(luò)的運行性能造成一定影響.因此,如何在保證合理的測量精度的前提下盡可能地降低對網(wǎng)絡(luò)資源的消耗,是軟件定義網(wǎng)絡(luò)測量的重要研究問題.基于查詢的測量方法一般通過動態(tài)地調(diào)整查詢頻率或減少查詢的交換機(jī)數(shù)量來減少帶寬資源的開銷.OpenTM[30]通過在流量轉(zhuǎn)發(fā)路徑中選取部分交換機(jī)進(jìn)行查詢的方式來降低網(wǎng)絡(luò)通信的開銷,并使用多種選擇算法對測量精度進(jìn)行了驗證.Payless[31]為降低網(wǎng)絡(luò)開銷采用了自適應(yīng)調(diào)度算法,根據(jù)流量特征,動態(tài)地調(diào)整查詢交換機(jī)的頻率.與普通輪詢算法每秒13.5個查詢請求相比較,PayLess每秒只需發(fā)送6.6個查詢請求.Narayana等人[94]設(shè)計了一個自定義查詢語言,實現(xiàn)了自適應(yīng)的數(shù)據(jù)查詢,降低了查詢造成的開銷.SDN-Mon[95]在控制器中部署 GMT(global monitoring table,全局測量表)對全網(wǎng)交換機(jī)的測量統(tǒng)計信息和實時負(fù)載情況進(jìn)行匯總,檢測多個交換機(jī)對同一條流進(jìn)行冗余測量的情況,選擇一個負(fù)載最低的交換機(jī)對該流進(jìn)行測量,刪除其他交換機(jī)中的測量規(guī)則.一些工作研究如何在不影響測量精度的前提下對流表中的測量流表項數(shù)量進(jìn)行壓縮.Yu等人[96]對流表項的壓縮機(jī)制進(jìn)行了深入的研究,他們通過設(shè)置超時時間、限制匹配域長度、合并相似規(guī)則等方式對流表進(jìn)行壓縮,壓縮導(dǎo)致的錯誤流表項數(shù)量小于 1%.DevoFlow[97]通過移除不重要的流表項來減少對流表資源的占用.Hone[37]使用被稱為 Lazy Materialization的方法將流量的統(tǒng)計特征數(shù)據(jù)壓縮為類似數(shù)據(jù)庫表的格式.一些工作研究在網(wǎng)絡(luò)中并發(fā)執(zhí)行多類型多數(shù)量的測量任務(wù)時,如何在時間層面和空間層面對測量資源進(jìn)行復(fù)用,并動態(tài)地在測量任務(wù)之間調(diào)度和分配,保證全局測量精度的最優(yōu)化.Dream[70]和 Scream[59]發(fā)現(xiàn):測量架構(gòu)可以在空間層面將大流分解,然后通過地址前綴和端口號聚集小的流量;在時間層面,可以在不同的測量周期內(nèi)采集數(shù)據(jù).兩篇文獻(xiàn)分別從商用 SDN交換機(jī)和可編程SDN交換機(jī)的角度對該問題進(jìn)行了研究,設(shè)計了一個高效復(fù)用網(wǎng)絡(luò)資源的測量架構(gòu).該架構(gòu)可以動態(tài)地調(diào)整測量資源在不同測量任務(wù)之間的分配,保證測量結(jié)果的精度在用戶指定的范圍之內(nèi).該研究表明:分配給測量任務(wù)的資源大小與測量精度之間存在一個收益遞減點,當(dāng)精度超過一定閾值后,繼續(xù)增加測量資源得到的收益極低.此外,測量任務(wù)僅需要在有與規(guī)則匹配的流經(jīng)過的交換機(jī)上分配資源,并且所需資源的多少由流量的大小和分布所決定.因此,可以通過全局的測量資源的調(diào)度實現(xiàn)最大化的資源利用率和最高的全局精度.測量系統(tǒng)由任務(wù)實體、精度估計器和資源分配器組成,工作流程如下:當(dāng)新的測量任務(wù)被下發(fā)時,系統(tǒng)首先根據(jù)目前可用的資源決定是否接受該任務(wù),如果接受該任務(wù)會導(dǎo)致正在運行的測量任務(wù)的精度低于期望值,該任務(wù)會被丟棄.一旦任務(wù)被接受,系統(tǒng)會為新任務(wù)創(chuàng)建一個任務(wù)實體,并在交換機(jī)上分配默認(rèn)數(shù)量的資源.系統(tǒng)周期性地從交換機(jī)中獲取測量結(jié)果并傳遞給任務(wù)實體,每個任務(wù)實體包含一個精度估計器來估算當(dāng)前的任務(wù)精度.系統(tǒng)為每種測量算法(HH,HHH,SS)都設(shè)計了精度估計算法,結(jié)果傳遞給資源分配器,資源分配器根據(jù)結(jié)果決定分配給該任務(wù)的資源數(shù)量.任務(wù)實體獲取測量資源后,決定如何分配這些資源.如果一個測量任務(wù)被終止,系統(tǒng)會刪除其相關(guān)任務(wù)實體并且釋放所有相關(guān)的資源.MOZART[98]在Dream[70]和Scream[59]的基礎(chǔ)之上對SDN交換機(jī)之間時間層面上的資源復(fù)用進(jìn)行了更深入的研究.Su等人[58,87,88]對動態(tài)分配測量任務(wù)、優(yōu)化調(diào)度測量資源的測量架構(gòu)進(jìn)行了研究,測量架構(gòu)包含 4個層面,自上而下分別是應(yīng)用層、資源調(diào)度層、任務(wù)分配層和數(shù)據(jù)平面層,其中,數(shù)據(jù)平面層使用和OpenSketch[45]相同的設(shè)計.該研究對測量任務(wù)建立數(shù)學(xué)模型,將交換機(jī)、鏈路、每個交換機(jī)的TCAM資源、每個交換機(jī)的SRAM資源、測量任務(wù)集、運行測量任務(wù)的交換機(jī)集、分配給任務(wù)的TCAM資源、分配給任務(wù)的SRAM資源、測量任務(wù)的理論精度、實際精度、權(quán)重完全參數(shù)化,然后使用兩級啟發(fā)式算法進(jìn)行計算.資源調(diào)度層估算測量任務(wù)所需資源,定位資源位置,壓縮資源占用;任務(wù)分配層定位交換機(jī)位置,重新分配交換機(jī)測量資源.
軟件定義網(wǎng)絡(luò)測量支持流量的實時分析和反饋,控制器根據(jù)測量結(jié)果迅速調(diào)整和優(yōu)化網(wǎng)絡(luò)配置,滿足網(wǎng)絡(luò)服務(wù)的動態(tài)需求.但是由于測量機(jī)制和算法具有一定復(fù)雜度,對流量處理需要消耗一定的時間,因此在對較大規(guī)模流量進(jìn)行線速測量時,需要在測量實時性和測量精度之間進(jìn)行平衡.Omid等人[99]對常用測量算法消耗的計算資源、存儲資源與測量精度之間的關(guān)系進(jìn)行了對比分析,提出:在內(nèi)存資源充足的情況下(如使用軟件SDN交換機(jī)),測量任務(wù)面臨的主要挑戰(zhàn)是測量速率與測量精度的矛盾.該研究表明:在進(jìn)行高速測量時,使用線性哈希表、數(shù)組等簡單數(shù)據(jù)結(jié)構(gòu)的性能甚至優(yōu)于Cukoo哈希、Count-Min sketch等復(fù)雜的測量算法.SketchVisor[60]通過改造虛擬SDN交換機(jī)Open vSwitch的數(shù)據(jù)平面,并結(jié)合數(shù)據(jù)流技術(shù),實現(xiàn)了數(shù)據(jù)中心網(wǎng)絡(luò)中流量的高速測量.該研究指出:硬件SDN交換機(jī)由于改造ASIC成本較高,難以在生產(chǎn)環(huán)境大量應(yīng)用,因此,目前數(shù)據(jù)中心主要使用基于服務(wù)器部署實現(xiàn)的軟件SDN交換機(jī).但是虛擬交換機(jī)在進(jìn)行基于sketch數(shù)據(jù)結(jié)構(gòu)的哈希計算時會消耗大量的 CPU資源,難以在數(shù)據(jù)中心生產(chǎn)環(huán)境中進(jìn)行線速地測量.因此,SketchVisor提出了一種解決方法,將數(shù)據(jù)平面進(jìn)行再分離,在普通路徑之外獨立出一條快速流量處理路徑,快速路徑通過犧牲一定的測量精度可以達(dá)到較高的處理速度.正常情況下,所有報文被轉(zhuǎn)發(fā)至普通路徑,通過一個FIFO緩存,當(dāng)緩存溢出時,額外的流量被重定向至快速路徑.快速路徑中部署了一種新型的 top-k算法對大流進(jìn)行捕捉,同時,使用一個全局計數(shù)器對小流的統(tǒng)計特征進(jìn)行計數(shù).該算法將Misra-Gries’s top-k算法和Probabilistic Lossy Counting算法相結(jié)合,可以一次性剔除多條小流,降低了算法的復(fù)雜度.普通路徑具有通用的結(jié)構(gòu),可以部署用戶指定的任意 sketch.控制器通過ZeroMQ采集數(shù)據(jù)平面的測量數(shù)據(jù),并使用矩陣疊加的方式合并普通路徑和快速路徑的 sketch數(shù)據(jù).實驗中,單CPU的吞吐量達(dá)到了17Gbps,并且快速路徑只占用若干kb大小的內(nèi)存.Naveen等人[91]認(rèn)為:隨著交換機(jī)技術(shù)的進(jìn)步,在硬件可編程 SDN交換機(jī)的軟件定義數(shù)據(jù)平面中可以靈活地部署對每個單獨報文的 MA(match and action)處理結(jié)構(gòu),但是報文處理速度受到有限的硬件狀態(tài)和硬件操作的限制.該研究通過近似技術(shù)對常用的資源優(yōu)化調(diào)度算法進(jìn)行改造,提高了報文處理速率并降低了硬件資源消耗,并在基于 FlexSwitch實現(xiàn)的原型系統(tǒng)中對XCP,RCP,CONGA等擁塞控制協(xié)議和負(fù)載均衡協(xié)議進(jìn)行了驗證.
當(dāng)前,網(wǎng)絡(luò)中部署的應(yīng)用服務(wù)數(shù)量繁多、類型豐富,需要測量架構(gòu)支持多數(shù)量、多種類測量任務(wù)的并發(fā)執(zhí)行.矛盾的是:用于流量分析的數(shù)據(jù)流算法所使用的sketch數(shù)據(jù)結(jié)構(gòu)雖然具備較好的內(nèi)存與精度的平衡性,但是與測量對象的耦合性很強(qiáng),可擴(kuò)展性非常有限,一種sketch數(shù)據(jù)結(jié)構(gòu)難以支持不同類型的測度.因此,如何通過部署額外的測量機(jī)制來加強(qiáng)測量架構(gòu)的通用性,是軟件定義網(wǎng)絡(luò)測量中重要的研究問題.
P4[100]和 ClickNP[101]分別從軟件抽象和硬件抽象的角度研究了通用可編程 SDN交換機(jī)的設(shè)計與實現(xiàn).OpenSketch[45]是基于可編程SDN交換機(jī)設(shè)計的通用測量架構(gòu),它充分利用了SDN測量控制平面和測量數(shù)據(jù)平面分離的優(yōu)勢,支持用戶自定義測量任務(wù)的并發(fā)執(zhí)行.為了使用一種硬件結(jié)構(gòu)支持多類型的測量任務(wù),OpenSketch將測量數(shù)據(jù)平面的報文處理流程抽象為哈希-分類-計數(shù)這3個步驟,這種抽象降低了數(shù)據(jù)平面功能之間的耦合性.OpenSketch部署了多種哈希算法對報文進(jìn)行處理,使用TCAM存儲器對報文進(jìn)行分類,并將統(tǒng)計結(jié)果存儲在SRAM存儲器中.交換機(jī)SRAM被劃分為若干個邏輯區(qū)域,每個區(qū)域分別被設(shè)計為不同類型和大小的sketch數(shù)據(jù)結(jié)構(gòu),以支持不同類型的測量任務(wù).在測量控制平面,OpenSketch提供了一個測量庫,用戶可以調(diào)用編程接口來下發(fā)測量任務(wù),OpenSketch根據(jù)測量任務(wù)的測量類型和精度需求自動地選擇哈希函數(shù)和 sketch數(shù)據(jù)結(jié)構(gòu)配置數(shù)據(jù)平面管道,并且分配合適的交換機(jī)資源.OpenSketch三級數(shù)據(jù)管道的設(shè)計很巧妙,把成本高但速度快的TCAM存儲器用作流量分類,速度慢但成本低的SRAM存儲器用于流量存儲,在保證處理速度的同時控制了硬件成本.實驗表明:其支持多種常用類型測量任務(wù)的并發(fā)執(zhí)行,并且保證了較高的精度.但是 OpenSketch對數(shù)據(jù)平面修改的幅度較大,其通用性是以犧牲硬件資源為代價,在執(zhí)行測量時未參與計算的 sketch數(shù)據(jù)結(jié)構(gòu)浪費了其占有的存儲空間.Univmon[63,86]通過理論研究,基于 Count sketch一種數(shù)據(jù)結(jié)構(gòu)設(shè)計了通用的測量架構(gòu),支持多種測度的測量并具有較好的精度.該方法將原始流量通過哈希抽樣分解為N條子流,并行地通過N個Count sketch進(jìn)行計算,計算結(jié)果以遞歸的方式合并.Univmon雖然在數(shù)據(jù)平面只使用了一種sketch數(shù)據(jù)機(jī)構(gòu),但是需要N個獨立的存儲空間,同樣是以犧牲存儲資源為代價換取通用性.
在較大規(guī)模的軟件定義網(wǎng)絡(luò)中,單一控制器的部署方式由于處理能力有限會造成網(wǎng)絡(luò)的性能瓶頸,因此,多控制器分布式部署是軟件定義網(wǎng)絡(luò)未來的主流部署方式.目前,關(guān)于多控制器組網(wǎng)的研究內(nèi)容主要包括控制器的部署數(shù)量、控制器的部署位置以及控制器之間的交互方式,已發(fā)表的分布式控制器部署模式可以分為 3種:第1種是主流控制器包括Onix,Hyperflow,ONOS,OpenDayLight均采用的物理分布、邏輯集中的部署模式,在這種模式中,控制器之間需要不斷地同步信息,以保證網(wǎng)絡(luò)邏輯視圖的一致性,在網(wǎng)絡(luò)狀態(tài)變化頻繁的情況下,會造成大量的網(wǎng)絡(luò)開銷;第 2種是基于兩層控制邏輯的部署模式[102],該模式中,控制器分為根控制器和從控制器,從控制器負(fù)責(zé)各自區(qū)域內(nèi)的網(wǎng)絡(luò)管理并將區(qū)域網(wǎng)絡(luò)視圖與主控制器進(jìn)行同步,主控制器掌管全局的網(wǎng)絡(luò)視圖;第3種是集群主備模式,該模式中,網(wǎng)絡(luò)的控制邏輯完全分布,根據(jù)OpenFlow協(xié)議1.3版本規(guī)定,一個交換機(jī)同時只能被一個控制器控制,因此,該模式下控制器需要雙機(jī)互備,在運控制器故障時,由備份控制器進(jìn)行替補(bǔ).
多控制器部署可以解決軟件定義網(wǎng)絡(luò)控制平面的性能瓶頸問題,但是在這種組網(wǎng)模式中,設(shè)計測量架構(gòu)需要考慮更復(fù)雜的測量機(jī)制,包括測量任務(wù)的調(diào)度、測量配置的同步、測量資源的分配、測量結(jié)果的合并等.MDCP[103]對分布式控制器組網(wǎng)環(huán)境下控制器放置位置對測量造成的影響進(jìn)行了研究.Tahaei等人[89,90]設(shè)計了在控制器完全分布式部署的模式下進(jìn)行網(wǎng)絡(luò)流量協(xié)同測量的架構(gòu),該架構(gòu)分為 3層:網(wǎng)絡(luò)層、控制器層和協(xié)作層.網(wǎng)絡(luò)層包含所有的軟件和硬件交換設(shè)備;協(xié)作層向控制器層中的本地控制器下發(fā)測量流表規(guī)則;每個控制器被指定對若干條流量進(jìn)行測量.控制器包含流跟蹤器、組表生成器、查詢生成器和采集器,以1s為測量周期查詢數(shù)據(jù)平面的測量數(shù)據(jù),并聚集后通過UDP報文的方式發(fā)送至協(xié)作層.協(xié)作層通過UDP監(jiān)聽器收集測量數(shù)據(jù)并整合形成流量矩陣,還提供東西向接口用于控制器之間的交互.該研究分析了分布式控制器組網(wǎng)情況下的控制器開銷和通信開銷,并討論了相應(yīng)的優(yōu)化手段.Gioacchino等人[92]設(shè)計了大規(guī)模多控制器組網(wǎng)環(huán)境下的去中心化網(wǎng)絡(luò)測量架構(gòu),實時地對網(wǎng)絡(luò)負(fù)載進(jìn)行監(jiān)測和平衡.該架構(gòu)在網(wǎng)絡(luò)中的每個控制器內(nèi)部署了一個本地管理器(local manager),本地管理器包含4個模塊:持久化數(shù)據(jù)存儲器負(fù)責(zé)保存網(wǎng)絡(luò)拓?fù)浜玩溌窢顟B(tài)信息;需求解析器負(fù)責(zé)將上層應(yīng)用的需求解析為流表規(guī)則;任務(wù)調(diào)度器負(fù)責(zé)建立和管理每個測量任務(wù)線程;結(jié)果處理器負(fù)責(zé)對原始流量進(jìn)行抽樣哈希,以哈希表的形式保存統(tǒng)計信息.本地管理器周期性地測量負(fù)責(zé)網(wǎng)絡(luò)區(qū)域內(nèi)的平均鏈路利用率和平均流速,并和相鄰本地管理器進(jìn)行同步,當(dāng)發(fā)生鏈路擁塞時,負(fù)責(zé)該鏈路的本地管理器首先將多余流量調(diào)度至空閑鏈路,再由相鄰的本地管理器進(jìn)行迭代的調(diào)度.實驗結(jié)果表明,該分布式控制器測量架構(gòu)造成的控制通信開銷是中心化控制器測量架構(gòu)的4倍.
軟件定義網(wǎng)絡(luò)給網(wǎng)絡(luò)測量技術(shù)研究注入了新的活力,借助于軟件定義網(wǎng)絡(luò)多方面的優(yōu)勢,很多在傳統(tǒng)網(wǎng)絡(luò)中難以部署的測量架構(gòu)和測量算法在軟件定義網(wǎng)絡(luò)中得到了實現(xiàn)和驗證.本文從測量架構(gòu)和測量對象兩方面對近年來主流的研究工作進(jìn)行了歸納分析,其中,測量架構(gòu)分為流量的采集和預(yù)處理、流量的傳輸和存儲、流量的分析和反饋這 3個步驟進(jìn)行闡述,測量對象分為運行狀態(tài)、轉(zhuǎn)發(fā)性能、流量特征這 3種類型進(jìn)行說明.最后總結(jié)了主要的研究問題和挑戰(zhàn),包括測量資源與測量精度的平衡、測量實時性與測量精度的平衡、高效通用的測量架構(gòu)、多控制器分布式協(xié)同測量這 4個方面.在現(xiàn)有成果的基礎(chǔ)之上,軟件定義網(wǎng)絡(luò)測量研究中有些領(lǐng)域值得深入地探索,未來的研究方向主要基于以下幾個方面.
1) 更強(qiáng)力的測量算法.軟件定義網(wǎng)絡(luò)測量技術(shù)離不開流量壓縮、流量分析等測量算法的支持,優(yōu)秀的測量算法可以在保證測量精度的前提下,顯著地降低對網(wǎng)絡(luò)中帶寬資源、計算資源、存儲資源的消耗,從根本上提高測量架構(gòu)的性能.因此在未來的工作中,需要對抽樣技術(shù)和數(shù)據(jù)流技術(shù)中的基礎(chǔ)算法開展進(jìn)一步的研究,降低算法的復(fù)雜度,提高算法的通用性.Univmon[63,86]雖然犧牲了一定的存儲資源,但是大大提高了sketch數(shù)據(jù)結(jié)構(gòu)的通用性,并且達(dá)到了較好的執(zhí)行效率,未來需要在目前的研究基礎(chǔ)上探索更加高效的哈希算法和更加通用的sketch數(shù)據(jù)結(jié)構(gòu);
2) 更智能的測量機(jī)制.未來的軟件定義網(wǎng)絡(luò)測量技術(shù)應(yīng)該充分利用控制平面掌握網(wǎng)絡(luò)全局信息的優(yōu)勢,根據(jù)網(wǎng)絡(luò)運行狀態(tài)的變化,在全網(wǎng)范圍內(nèi)動態(tài)地調(diào)度和復(fù)用測量資源,提高測量資源的利用率.在數(shù)據(jù)平面需要部署更加智能的流表管理機(jī)制,根據(jù)流量特征對測量流表項數(shù)量進(jìn)行壓縮,節(jié)約寶貴的流表資源.在控制平面需要部署更加智能的流量查詢機(jī)制,根據(jù)網(wǎng)絡(luò)負(fù)載動態(tài)地調(diào)整查詢的對象和頻率,減少控制平面和數(shù)據(jù)平面之間的通信流量,降低對網(wǎng)絡(luò)性能的影響.Su等人[58,87,88]所提出的網(wǎng)絡(luò)參數(shù)化模型和兩級啟發(fā)式算法提供了一個測量機(jī)制的建模思路,值得進(jìn)一步的探索;
3) 云服務(wù)環(huán)境中的應(yīng)用感知測量.云服務(wù)環(huán)境中部署的網(wǎng)絡(luò)應(yīng)用類型豐富,對網(wǎng)絡(luò)性能保障的需求各不相同.實時性需求較高的應(yīng)用對延遲非常敏感,例如:無線移動服務(wù)需要實時跟蹤用戶信道的切換;遠(yuǎn)程會議服務(wù)需要全程的 QoS保障;而網(wǎng)絡(luò)直播服務(wù)則需要靈活的帶寬保障,在流行節(jié)目播出時,面對短時間內(nèi)大量用戶的涌入,需要及時地增加帶寬容量保證視頻流量的高效分發(fā),直播結(jié)束后,需要及時地釋放帶寬資源.軟件定義網(wǎng)絡(luò)測量由于支持測量數(shù)據(jù)的實時分析和反饋,并且根據(jù)測量需求的變化動態(tài)地調(diào)整測量配置,因此在云服務(wù)環(huán)境中可以針對不同類型的應(yīng)用服務(wù)提供定制化的感知測量.這要求測量算法能夠快速地預(yù)測網(wǎng)絡(luò)資源和應(yīng)用需求的未來變化,并整合為具體的網(wǎng)絡(luò)配置,指導(dǎo)控制器進(jìn)行調(diào)整;
4) 網(wǎng)絡(luò)空間安全領(lǐng)域的支撐.近年來,隨著大規(guī)模網(wǎng)絡(luò)安全事件的不斷爆發(fā),網(wǎng)絡(luò)空間安全研究工作的重要性不斷提高.現(xiàn)有的基于網(wǎng)絡(luò)攻擊層面的安全防御手段主要通過動態(tài)地調(diào)整主機(jī)地址、網(wǎng)絡(luò)路由、應(yīng)用端口的方式轉(zhuǎn)移受攻擊的網(wǎng)絡(luò)對象,同時將攻擊流量引導(dǎo)至虛假的目標(biāo),切斷后續(xù)的攻擊流量.由于軟件定義網(wǎng)絡(luò)測量架構(gòu)具備流量采集、流量分析、異常檢測、配置調(diào)整的閉環(huán)測量過程,能夠做到威脅檢測、配置調(diào)整、攻擊面轉(zhuǎn)移的自動化,有效地支撐網(wǎng)絡(luò)空間安全的主動防御技術(shù);
5) 多自治域的域間測量.目前,軟件定義網(wǎng)絡(luò)測量的相關(guān)研究工作主要集中于單一自治域的域內(nèi)測量,沒有涉及到多個自治域的域間測量,雖然有文獻(xiàn)研究了多控制器下的分布式協(xié)同測量,但仍然在同個自治域內(nèi).在多個自治域間進(jìn)行測量時,需要消除傳輸抖動對測量過程造成的影響,這對測量機(jī)制和測量架構(gòu)提出了更高的要求.