吳 博,吳 靜,羅 威,朱 劼
1.武漢大學(xué) 電子信息學(xué)院,武漢430072
2.中國艦船研究設(shè)計(jì)中心,武漢430064
面對越來越豐富的網(wǎng)絡(luò)業(yè)務(wù),人們對于網(wǎng)絡(luò)服務(wù)質(zhì)量的要求也不斷提高。如何靈活調(diào)度網(wǎng)絡(luò)資源,實(shí)現(xiàn)特定業(yè)務(wù)流量的路徑規(guī)劃成為一個(gè)問題。軟件定義網(wǎng)絡(luò)中將交換機(jī)的控制和轉(zhuǎn)發(fā)解耦,形成一種由數(shù)據(jù)面、控制面和應(yīng)用面組成的三層架構(gòu)。控制器具有全局邏輯視圖,交換機(jī)成為簡單的轉(zhuǎn)發(fā)設(shè)備,實(shí)現(xiàn)了對網(wǎng)絡(luò)進(jìn)行集中式的管理。
在SDN框架下,控制器對網(wǎng)絡(luò)節(jié)點(diǎn)進(jìn)行全局的控制,通過對網(wǎng)絡(luò)狀態(tài)的收集,實(shí)現(xiàn)了對數(shù)據(jù)流的全局調(diào)度。文獻(xiàn)[1]提出一種方法,根據(jù)鏈路間的距離、帶寬等因素周期性地更新網(wǎng)絡(luò)狀態(tài),計(jì)算出多條路徑,然后在其中選出一條鏈路利用率最小的路徑進(jìn)行流量傳輸,即使網(wǎng)絡(luò)出現(xiàn)故障也可以動(dòng)態(tài)調(diào)節(jié),但是該方法沒有考慮業(yè)務(wù)的屬性;文獻(xiàn)[2]通過SDN控制器對數(shù)據(jù)層的網(wǎng)絡(luò)節(jié)點(diǎn)進(jìn)行探測,根據(jù)鏈路帶寬,應(yīng)用ECMP實(shí)現(xiàn)路由選路,提高了網(wǎng)絡(luò)的負(fù)載均衡度;文獻(xiàn)[3]使用鏈路的時(shí)延帶寬作為選路約束,將問題抽象為多約束問題,對于優(yōu)先級別高的數(shù)據(jù)進(jìn)行優(yōu)先路由,但是這種方法只保證了一種數(shù)據(jù)流的屬性;文獻(xiàn)[4]通過在控制器中實(shí)行基于DPI的流量分類技術(shù),根據(jù)流的需求,動(dòng)態(tài)分配帶寬給流,從而提高流的QoS,但是控制器運(yùn)行dpi引擎需要較高CPU資源,當(dāng)網(wǎng)絡(luò)繁忙或網(wǎng)絡(luò)規(guī)模大時(shí),控制器負(fù)荷較大。文獻(xiàn)[5]通過控制器向交換機(jī)發(fā)起packet_in指令獲取流的ToS字段,以此判斷業(yè)務(wù)類型并利用K最短路徑算法為該業(yè)務(wù)進(jìn)行路由,但是此方法需要控制器對于每條流都發(fā)起詢問,效率很慢。以上方法普遍通過控制器的全局視野,利用獲取到的網(wǎng)絡(luò)參數(shù),在算法上進(jìn)行改進(jìn)實(shí)現(xiàn)路由規(guī)劃,數(shù)據(jù)平面只是作為單純的轉(zhuǎn)發(fā)設(shè)備進(jìn)行轉(zhuǎn)發(fā)操作,在處理流量時(shí),并沒有為流量業(yè)務(wù)屬性進(jìn)行快速的劃分。
可編程數(shù)據(jù)平面[6]拓寬了對網(wǎng)絡(luò)自定義的能力。通過改進(jìn)可編程數(shù)據(jù)平面的處理流水線,對解析器、匹配器和處理器進(jìn)行編程,可以實(shí)現(xiàn)對業(yè)務(wù)的識別;同時(shí),可編程數(shù)據(jù)平面支持對TCP/IP協(xié)議外的新型網(wǎng)絡(luò)協(xié)議數(shù)據(jù)包的處理,可以實(shí)現(xiàn)數(shù)據(jù)包本身對網(wǎng)絡(luò)狀態(tài)進(jìn)行采集。這為網(wǎng)絡(luò)帶來了巨大的靈活性。
根據(jù)3GPP對網(wǎng)絡(luò)中數(shù)據(jù)流的分類,可分為:信息會話類業(yè)務(wù)、數(shù)據(jù)傳輸類業(yè)務(wù)、流媒體業(yè)務(wù)、網(wǎng)絡(luò)交互類業(yè)務(wù)[7]。根據(jù)業(yè)務(wù)類型的不同,數(shù)據(jù)在網(wǎng)絡(luò)傳輸中會有不同的傳輸需求。例如,對于會話類型的業(yè)務(wù),此類業(yè)務(wù)數(shù)據(jù)量一般較小,但是需要保證業(yè)務(wù)數(shù)據(jù)及時(shí)的交付,因此此類業(yè)務(wù)要求傳輸延時(shí)一定要小,而對帶寬沒有特殊的要求;而對于類似文件傳輸、視頻點(diǎn)播這種業(yè)務(wù),由于其傳輸?shù)臄?shù)據(jù)量大,因此對網(wǎng)絡(luò)的帶寬有較高的要求,而對時(shí)延并不敏感。
本文在SDN的框架下,結(jié)合可編程數(shù)據(jù)平面的特性,通過重新定義交換機(jī)處理數(shù)據(jù)包的流程,提出一種基于業(yè)務(wù)屬性的路由方法,可以在數(shù)據(jù)平面上實(shí)現(xiàn)業(yè)務(wù)的自動(dòng)區(qū)分和網(wǎng)絡(luò)鏈路狀態(tài)的收集,并在控制面上為不同業(yè)務(wù)選路。最后通過搭建實(shí)驗(yàn)平臺驗(yàn)證了本文所提方法的可行性和有效性。
為了實(shí)現(xiàn)一種業(yè)務(wù)相關(guān)的路由選路,需要考慮以下問題。
(1)首先,為了分擔(dān)控制面上的處理壓力,應(yīng)該如何在數(shù)據(jù)面上協(xié)助實(shí)現(xiàn)業(yè)務(wù)流量的自動(dòng)識別。
在SDN架構(gòu)下,數(shù)據(jù)面上的交換機(jī)是一種白盒設(shè)備,往往僅做匹配轉(zhuǎn)發(fā)動(dòng)作,自身并沒有決策能力,所有分析決策能力被集中在控制器上,這就導(dǎo)致了控制器的處理壓力巨大。并且交換機(jī)將功能固化在芯片中,嚴(yán)重依賴于廠商,在協(xié)議擴(kuò)展上不具有靈活性且更新周期長。而在可編程數(shù)據(jù)平面上,由于不再受限于傳統(tǒng)的TCP/IP協(xié)議棧的束縛,可以自定義數(shù)據(jù)包的結(jié)構(gòu),通過改變交換機(jī)處理數(shù)據(jù)包的業(yè)務(wù)邏輯,識別包頭中的特定字段,就可以實(shí)現(xiàn)數(shù)據(jù)面對于流量的自動(dòng)識別,分擔(dān)了控制面的處理壓力。
(2)其次,在獲取網(wǎng)絡(luò)鏈路參數(shù)時(shí),應(yīng)該如何確保信息的時(shí)效性。
為了能夠保證業(yè)務(wù)傳輸?shù)男枨?,只有獲取了網(wǎng)絡(luò)的狀態(tài)參數(shù),才能以此作為依據(jù)為業(yè)務(wù)數(shù)據(jù)選擇一條符合傳輸要求的路徑。對于網(wǎng)絡(luò)鏈路參數(shù)的采集[8],大多普遍采用南向接口,例如通過OpenFlow輪詢獲取交換機(jī)的信息推算出鏈路的狀態(tài)[9];或者通過在交換機(jī)上安放sflow周期性采樣[10];或者通過額外流量探針探測網(wǎng)絡(luò)的狀態(tài)[11]。這些方法收集的數(shù)據(jù)細(xì)粒度大,準(zhǔn)確度低,不能很好地反映當(dāng)前的網(wǎng)絡(luò)狀態(tài)。而在可編程交換機(jī)上,可以在數(shù)據(jù)包上嵌入所需要的交換機(jī)內(nèi)部信息,例如時(shí)間信息、隊(duì)列信息、出口計(jì)數(shù)器的信息等[12],這樣每當(dāng)數(shù)據(jù)包流經(jīng)交換機(jī),測量信息隨著業(yè)務(wù)流量進(jìn)行傳輸。由于測量數(shù)據(jù)為傳輸過程中交換機(jī)本身的數(shù)據(jù),細(xì)粒度高,可以很好地反映網(wǎng)絡(luò)的狀態(tài)。
(3)最后,如何針對特定業(yè)務(wù),規(guī)劃出適合不同業(yè)務(wù)的路徑。
不同業(yè)務(wù)在傳輸中對網(wǎng)絡(luò)狀態(tài)的要求不同,為了能夠?qū)崿F(xiàn)在全網(wǎng)中根據(jù)業(yè)務(wù)的要求進(jìn)行選路,需要針對性地改進(jìn)選路算法。在算法中,面對不同業(yè)務(wù)類型的流量,特定的改變算法中的約束條件,使之規(guī)劃出的路徑能夠滿足傳輸要求,保證業(yè)務(wù)質(zhì)量。
基于上述問題,在數(shù)據(jù)面上采用可編程交換機(jī),發(fā)揮可編程交換機(jī)的可自定義的優(yōu)勢,利用P4[13](Programming Protocol-Independent Packet Processors)語言對其進(jìn)行編程,改變數(shù)據(jù)轉(zhuǎn)發(fā)流水線的邏輯,實(shí)現(xiàn)業(yè)務(wù)流量的自動(dòng)劃分,分擔(dān)控制器的處理壓力,同時(shí)對網(wǎng)絡(luò)鏈路的狀態(tài)參數(shù)進(jìn)行采集;在控制器上根據(jù)收集到的鏈路狀態(tài)信息,由選路應(yīng)用為不同業(yè)務(wù)規(guī)劃路徑。因此本文提出的基于可編程數(shù)據(jù)平面的業(yè)務(wù)路由(Business Routing Based on Programmable DataPlane,BR-DP)總體框架如圖1所示。
圖1 總體架構(gòu)圖
在數(shù)據(jù)包的IP包頭中存在6個(gè)比特的DSCP字段,用于區(qū)分服務(wù)代碼。利用這6個(gè)比特可以將業(yè)務(wù)分為4個(gè)類型[14],如圖2所示,分別是類選擇器CS、加速轉(zhuǎn)發(fā)EF、確保轉(zhuǎn)發(fā)AF和默認(rèn)BE。典型的DSCP值有流式視頻CS4(100000)、交互式語音EF(101110)、大塊數(shù)據(jù)AF11(001010)等。
圖2 DSCP分類圖
為了能夠在交換機(jī)內(nèi)實(shí)現(xiàn)對業(yè)務(wù)種類的識別并進(jìn)行相應(yīng)的操作,需要在原有轉(zhuǎn)發(fā)基礎(chǔ)上改進(jìn)交換機(jī)對于數(shù)據(jù)包的處理流水線,增加對特定字段的匹配操作實(shí)現(xiàn)對業(yè)務(wù)的識別,在識別到業(yè)務(wù)屬性后將流分配到不同流表中執(zhí)行對應(yīng)的轉(zhuǎn)發(fā)規(guī)則,整個(gè)處理流程如圖3所示。在整個(gè)流水線中,可編程交換機(jī)對數(shù)據(jù)的處理基于“匹配-動(dòng)作”模式。
首先,進(jìn)入“匹配”階段,為了能夠自動(dòng)識別流量的業(yè)務(wù)類型,在匹配過程中,包頭解析器不僅需要提取數(shù)據(jù)包的源地址、目的地址、源端口和目的端口用于基本的轉(zhuǎn)發(fā),而且要添加對DSCP字段的獲取。通過對DSCP字段進(jìn)行匹配,交換機(jī)可以實(shí)現(xiàn)對業(yè)務(wù)種類的自動(dòng)識別。當(dāng)識別到流量所屬業(yè)務(wù)類型后,就要進(jìn)入“動(dòng)作”階段。
圖3 業(yè)務(wù)處理流程圖
在動(dòng)作階段中,要在交換機(jī)中定義不同的流表,如類選擇器型業(yè)務(wù)流表、加速轉(zhuǎn)發(fā)型業(yè)務(wù)流表、確保轉(zhuǎn)發(fā)型業(yè)務(wù)流表和默認(rèn)流表。每個(gè)流表對應(yīng)著不同DSCP類型的業(yè)務(wù)。上層控制器上的選路應(yīng)用會為不同屬性的業(yè)務(wù)規(guī)劃出相應(yīng)合適的路徑,并以流規(guī)則的形式通過南向接口分發(fā)至對應(yīng)的流表中,指導(dǎo)數(shù)據(jù)包的轉(zhuǎn)發(fā)規(guī)則。數(shù)據(jù)包在匹配階段中識別到流量業(yè)務(wù)屬性后,根據(jù)業(yè)務(wù)的屬性,由交換機(jī)將數(shù)據(jù)流分配到不同的流表,并按照流表中的轉(zhuǎn)發(fā)規(guī)則進(jìn)行相應(yīng)的轉(zhuǎn)發(fā)。
為了給接下來的選路應(yīng)用提供選路依據(jù),需要對網(wǎng)絡(luò)的鏈路狀態(tài)信息進(jìn)行采集。在可編程數(shù)據(jù)平面上,可以通過數(shù)據(jù)包本身攜帶測量信息的方式或者控制器通過南向接口采集的方式,得到多種網(wǎng)絡(luò)狀態(tài)參數(shù),例如時(shí)間、隊(duì)列、端口信息等。本文選取時(shí)間敏感的語音業(yè)務(wù)和帶寬敏感的視頻業(yè)務(wù)為例進(jìn)行說明,對網(wǎng)絡(luò)的鏈路延時(shí)和剩余帶寬容量進(jìn)行采集。
3.2.1時(shí)延測量
時(shí)延在為對時(shí)間敏感型的業(yè)務(wù)路由規(guī)劃時(shí)是一項(xiàng)重要的參照指標(biāo)。本文對于每跳鏈路的時(shí)延采集采用帶內(nèi)測量的方式。首先,利用P4語言編寫可編程交換機(jī)處理數(shù)據(jù)包流程,根據(jù)需求,可以指定需要測量的具體指標(biāo),每個(gè)交換機(jī)根據(jù)指令會將相應(yīng)的指標(biāo)嵌入到數(shù)據(jù)包中。編譯好的文件經(jīng)由控制器通過南向接口部署到每臺交換機(jī)上。其次,控制器具有全局視圖,可以獲知交換機(jī)是否處于數(shù)據(jù)包傳輸路徑上的邊緣節(jié)點(diǎn)。當(dāng)正常的數(shù)據(jù)包進(jìn)入到網(wǎng)絡(luò)中,在開始的邊緣節(jié)點(diǎn)交換機(jī)上會被打入帶內(nèi)測量指令標(biāo)簽。然后,數(shù)據(jù)包流經(jīng)每臺交換機(jī),交換機(jī)根據(jù)指令,將自己的內(nèi)部信息封裝到每個(gè)包頭里。最后,在最后一跳交換機(jī)上,控制器識別并指導(dǎo)交換機(jī)彈出帶內(nèi)測量信息報(bào)告,剩余部分恢復(fù)為正常數(shù)據(jù)包交付到目的主機(jī),流程如圖4所示。
當(dāng)數(shù)據(jù)包通過每個(gè)交換機(jī)時(shí),交換機(jī)在每個(gè)數(shù)據(jù)包頭上嵌入此數(shù)據(jù)包從入口進(jìn)入交換機(jī)的時(shí)間戳,那么數(shù)據(jù)包從這一跳的i交換機(jī)到下一跳的j交換機(jī)的鏈路延時(shí)dij如公式(1)所示,其中包括了這一跳鏈路的處理延時(shí)、排隊(duì)延時(shí)、傳輸延時(shí)和傳播延時(shí)。
圖4 帶內(nèi)測量示意圖
3.2.2 剩余帶寬測量
每條鏈路的剩余帶寬對于帶寬敏感型的業(yè)務(wù)流量有重要意義。在可編程交換機(jī)中,通過編程在每個(gè)表項(xiàng)添加一個(gè)計(jì)數(shù)器counter。每完成一次流表項(xiàng)匹配操作后對計(jì)數(shù)器進(jìn)行更新,這樣就可以記錄每個(gè)端口流經(jīng)的包的個(gè)數(shù)和比特大小。在每一個(gè)測量周期Δt內(nèi),通過南向接口命令來獲取counter的值,在每次獲取到值后再將counter清零,以此來記錄這段測量周期內(nèi)流經(jīng)的數(shù)據(jù)信息。
對于交換機(jī)Si的i端口,在一個(gè)測量周期內(nèi)發(fā)送的數(shù)據(jù)包字節(jié)數(shù)為tx_bytes,接收到的數(shù)據(jù)包字節(jié)數(shù)為rx_bytes,則鏈路的輸入吞吐率和輸出吞吐量分別如公式(2)和(3)所示:
那么數(shù)據(jù)占用的帶寬B(Sii)和剩余帶寬B_available(Sii)如公式(4)和(5)所示:
3.3.1 算法基礎(chǔ)
蟻群算法[15]是一種受啟于蟻群覓食行為的算法。相比于傳統(tǒng)路由算法,蟻群算法簡單,收斂速度快,可以動(dòng)態(tài)地適應(yīng)網(wǎng)絡(luò)拓?fù)涞淖兓?,具有極高的適應(yīng)性和擴(kuò)展性,且是一種全局搜索算法,能夠有效地避免局部最優(yōu)。
獲取到了每段鏈路的延時(shí)和剩余帶寬后,就可以構(gòu)建網(wǎng)絡(luò)的延時(shí)矩陣和剩余帶寬矩陣,用延時(shí)和剩余帶寬取代路徑長短的概念,將問題抽象為網(wǎng)絡(luò)模型如公式(6)描述:
網(wǎng)絡(luò)中有i個(gè)節(jié)點(diǎn),j條邊,用圖G(N,E)表示,其中節(jié)點(diǎn)n1,n2,…,ni的集合為N,表示每個(gè)交換機(jī)代表一個(gè)節(jié)點(diǎn);邊e1,e2,…,ej的集合為E,表示每兩個(gè)節(jié)點(diǎn)間的鏈路。
基本的蟻群算法描述如下,螞蟻k從i節(jié)點(diǎn)到j(luò)節(jié)點(diǎn)的跳轉(zhuǎn)概率如公式(7):
其中,τij(t)為在時(shí)間t時(shí)刻鏈路eij殘留的信息素;ηij(t)為選擇下一跳為新路徑的啟發(fā)函數(shù);α作為信息素函數(shù)的作用系數(shù),表示在螞蟻選路的過程中信息素的影響能力;β為啟發(fā)函數(shù)的作用系數(shù),表示選路過程中受啟發(fā)函數(shù)的影響能力。對于作用系數(shù)來說,如果α越大,信息素的影響力就越強(qiáng),會造成局部最優(yōu)的狀況,而β越大,啟發(fā)函數(shù)的影響能力越強(qiáng),選擇路徑時(shí)更加隨機(jī),會造成收斂慢的狀況。nodesk為螞蟻下一跳可選的路徑節(jié)點(diǎn)集合,為了防止螞蟻?zhàn)呋芈窢顩r的出現(xiàn),每當(dāng)走過一個(gè)節(jié)點(diǎn),就從nodesk集合中剔除這個(gè)節(jié)點(diǎn)。
在尋路過程中,螞蟻?zhàn)哌^的路徑會留下信息素,而信息素也在不停的揮發(fā),因此,網(wǎng)絡(luò)中路徑的信息素會不停的更新。因此信息素按照公式(8)和(9)進(jìn)行更新。
其中,ρ為揮發(fā)系數(shù),(1-ρ)為信息素剩余系數(shù),因此下一時(shí)刻的信息素濃度為上一時(shí)刻剩余信息素濃度與信息素濃度增量的和。其中Q為信息素濃度強(qiáng)度,Lk表示螞蟻k所經(jīng)過的路徑長度。
3.3.2 參數(shù)重定義
在經(jīng)典蟻群算法中,路徑長短作為影響因子。為了適應(yīng)對于不同業(yè)務(wù)傳輸過程中的不同的需求,引入獲取得到的鏈路指標(biāo)作為選路的參考信息。在判定業(yè)務(wù)類型后,將對應(yīng)的網(wǎng)絡(luò)性能參數(shù)運(yùn)用在啟發(fā)函數(shù)和信息素更新的計(jì)算中,實(shí)現(xiàn)對不同業(yè)務(wù)的路由。
針對不同業(yè)務(wù)在網(wǎng)絡(luò)傳輸中的需求不同,對應(yīng)改變算法中的參數(shù)設(shè)置。當(dāng)業(yè)務(wù)判定為時(shí)延敏感的語音業(yè)務(wù)時(shí),令啟發(fā)函數(shù)ηij(t)=1/dij(t),信息素更新函數(shù)中的Lk為所經(jīng)過路徑的延遲之和,表示延時(shí)越低,留下的信息素越多;當(dāng)業(yè)務(wù)判定為帶寬敏感的視頻業(yè)務(wù)時(shí),令啟發(fā)函數(shù)ηij(t)=B_availableij(t),信息素更新函數(shù)中的Lk為所經(jīng)過路徑的剩余帶寬之和的倒數(shù),表示剩余帶寬越多,留下的信息素就越多。
3.3.3算法流程
基于業(yè)務(wù)性質(zhì)的選路步驟如圖5所示。
圖5 算法流程圖
根據(jù)不同的啟發(fā)函數(shù),分別為時(shí)延和帶寬生成兩條最優(yōu)路徑,通過控制器分別下發(fā)到路徑上的交換機(jī)的對應(yīng)的流表中。當(dāng)數(shù)據(jù)經(jīng)過交換機(jī)時(shí),交換機(jī)會匹配包頭中的DSCP字段,判斷數(shù)據(jù)包所屬的業(yè)務(wù)類型,然后執(zhí)行對應(yīng)流表中的轉(zhuǎn)發(fā)規(guī)則,以此實(shí)現(xiàn)流量的業(yè)務(wù)屬性自動(dòng)識別和轉(zhuǎn)發(fā)。
園區(qū)網(wǎng)中承載著文件傳輸,視頻點(diǎn)播,語音聊天等各種業(yè)務(wù),為了模擬這一場景,驗(yàn)證本文方法的可行性,利用mininet搭建小型網(wǎng)絡(luò)拓?fù)?,其中使用的交換機(jī)是支持P4語言的bmv2交換機(jī),拓?fù)淙鐖D6所示。
圖6 實(shí)驗(yàn)拓?fù)鋱D
圖中包含8臺bmv2交換機(jī),設(shè)定每條鏈路帶寬為80 Mb/s,延遲3 ms。同時(shí)為了模擬真實(shí)的網(wǎng)絡(luò)場景,讓H1用iperf分別向H2~H5主機(jī)打UDP流量作為背景流量。實(shí)驗(yàn)過程中,以H1為發(fā)送端,H6為接受端,以5 Mb/s的增幅分別傳輸DSCP為101110和100000的流量,以此模擬語音業(yè)務(wù)和視頻業(yè)務(wù)。
配合網(wǎng)絡(luò)節(jié)點(diǎn)的數(shù)量,設(shè)置蟻群的參數(shù)初始值,其中螞蟻數(shù)量為30,迭代50次,信息素和啟發(fā)函數(shù)的啟發(fā)因子分別為1和5,揮發(fā)系數(shù)0.5,總量Q為10。根據(jù)獲得的延時(shí)拓?fù)浜褪S鄮捦負(fù)?,分別為不同業(yè)務(wù)生成相關(guān)路由規(guī)劃策略,以流表項(xiàng)的形式下發(fā)至交換機(jī)中。
對比實(shí)驗(yàn)中,數(shù)據(jù)平面向控制平面發(fā)送OpenFlow信息,控制器通過解析ToS字段判定業(yè)務(wù)屬性;并通過對OpenFlow攜帶的信息進(jìn)行處理,獲取到鏈路的狀態(tài),而控制器的選路采用蟻群算法,稱這種基于OpenFlow的方法為BR-OF。另一個(gè)對比實(shí)驗(yàn)中,業(yè)務(wù)的判斷以及網(wǎng)絡(luò)狀態(tài)的采集同樣采用OpenFlow信息獲取,而控制器的選路應(yīng)用采用K最短路徑算法,利用多元素的路徑權(quán)值進(jìn)行路由規(guī)劃,簡稱為BR-K。本文設(shè)置四個(gè)對比實(shí)驗(yàn),分別從端到端響應(yīng)時(shí)間、時(shí)延和吞吐量比較三種方法在業(yè)務(wù)識別時(shí)的響應(yīng)速度和最終的選路效果以及在本文方法下不同業(yè)務(wù)的表現(xiàn)。
(1)端到端響應(yīng)時(shí)間比較
首先觀察端到端響應(yīng)時(shí)間的表現(xiàn),即從源主機(jī)發(fā)送數(shù)據(jù)到目的主機(jī)接收所經(jīng)過的時(shí)間。為了盡量減少鏈路時(shí)延對于結(jié)果的影響,讓三種方法下路由算法輸入的鏈路參數(shù)一致,并采用視頻流量進(jìn)行實(shí)驗(yàn)。實(shí)驗(yàn)中,對業(yè)務(wù)流量處理方法不同,導(dǎo)致對業(yè)務(wù)流量響應(yīng)的時(shí)間也不相同。在BR-OF、BR-K方法中,當(dāng)數(shù)據(jù)包輸入網(wǎng)絡(luò)后,控制器會發(fā)起OpenFlow請求,通過OpenFlow詢問數(shù)據(jù)流量所屬的業(yè)務(wù),在判斷業(yè)務(wù)屬性后,為該流進(jìn)行路由計(jì)算,在整個(gè)過程中,OpenFlow信息的傳輸和路由計(jì)算都會產(chǎn)生額外時(shí)間;而本文的BR-PD方法,業(yè)務(wù)屬性的判斷發(fā)生在交換機(jī)解析數(shù)據(jù)包的過程中,節(jié)約了控制器詢問的時(shí)間;在判別數(shù)據(jù)所屬業(yè)務(wù)后,數(shù)據(jù)會執(zhí)行對應(yīng)流表中的表項(xiàng),進(jìn)行相應(yīng)的轉(zhuǎn)發(fā),而流表中的轉(zhuǎn)發(fā)規(guī)則是控制器周期性獲取鏈路狀態(tài)后預(yù)先下放的,這也節(jié)約了一部分路由計(jì)算的時(shí)間。因此由圖7可知,在同樣的場景設(shè)定下,BR-PD的端到端響應(yīng)時(shí)間要明顯低于BR-OF和BR-K,同時(shí),隨著源主機(jī)發(fā)送業(yè)務(wù)速率的提高,響應(yīng)時(shí)間呈上升趨勢,這可能由于隨著負(fù)載的加重,擁塞導(dǎo)致的延時(shí)變大。由此可以說明,BR-PD在自動(dòng)識別業(yè)務(wù)響應(yīng)速度方面有一定優(yōu)勢。
(2)延時(shí)比較
圖7 端到端響應(yīng)時(shí)間
在另一組實(shí)驗(yàn)中,觀察語音流在不同方法下的延時(shí)情況。如圖8所示,可以看到BR-PD下的延時(shí)明顯低于BR-OF和BR-K。這是因?yàn)椋贐R-OF和BR-K中,鏈路延時(shí)的采集是通過在兩個(gè)節(jié)點(diǎn)間反復(fù)發(fā)送OpenFlow信息,然后整合這些信息推算出測量時(shí)刻的鏈路延時(shí),推算過程中包含控制器到交換機(jī)間的rtt;另外,測量的延時(shí)反映的僅僅是測量那一時(shí)刻的鏈路狀態(tài),而鏈路的延時(shí)是一個(gè)時(shí)變的參數(shù),因此BR-OF和BR-K方法獲取的鏈路延時(shí)不夠準(zhǔn)確。并且,BR-K是將多個(gè)鏈路參數(shù)加權(quán)進(jìn)行選路的,因此對于只單純從延時(shí)角度看不占優(yōu)勢。而BR-PD方法采用帶內(nèi)測量的方式,延時(shí)信息是交換機(jī)嵌入的自身實(shí)時(shí)信息,通過收集測量周期內(nèi)所有的鏈路延時(shí)并取平均值,可以反映這段時(shí)間該鏈路的延時(shí)平均水平,相較于另外兩種方法,獲得的延時(shí)信息比較準(zhǔn)確。準(zhǔn)確的鏈路狀態(tài)信息可以為后續(xù)的選路提供準(zhǔn)確的參考,因此BR-PD方法可以為時(shí)間敏感的語音流提供一條延時(shí)較小的路徑。
圖8 時(shí)延
(3)吞吐量比較
在H1向H6持續(xù)10 s發(fā)送80 Mb/s的視頻流量,吞吐量結(jié)果如圖9所示,可以看到三者的差異并不是很大。這是因?yàn)椋讷@取鏈路的可用帶寬時(shí),BR-OF、BR-K是通過OpenFlow獲取交換機(jī)端口計(jì)數(shù)器的數(shù)據(jù),而BR-PD是通過可編程交換機(jī)的P4Runtime接口獲取交換機(jī)計(jì)數(shù)器的數(shù)據(jù)。三者都是通過南向接口訪問交換機(jī)獲取到鏈路端口的使用狀態(tài),因此三者獲取的鏈路可用帶寬信息大同小異,總體上為視頻流規(guī)劃的路徑所表現(xiàn)的性能相當(dāng),但BR-K是由多參數(shù)進(jìn)行加權(quán)選路,單從吞吐量來看結(jié)果略遜。
圖9 吞吐量
(4)不同業(yè)務(wù)比較
在BR-PD方法下,對比語音流和視頻流兩種業(yè)務(wù)的延時(shí)和吞吐量,結(jié)果如圖10和圖11所示??梢缘弥?,該方法可以對不同業(yè)務(wù)進(jìn)行相應(yīng)的路由規(guī)劃,對于時(shí)間敏感的業(yè)務(wù),語音流的延時(shí)要小于視頻流的;而對于帶寬敏感的業(yè)務(wù),視頻流的吞吐量要略大于語音流。
圖10 不同業(yè)務(wù)時(shí)延
圖11 不同業(yè)務(wù)吞吐量
根據(jù)以上的對比結(jié)果可以得出,BR-PD方法可以在數(shù)據(jù)面上快速地自動(dòng)識別業(yè)務(wù)流量的屬性,并能為選路應(yīng)用提供時(shí)效性網(wǎng)絡(luò)參數(shù),根據(jù)不同業(yè)務(wù)對于網(wǎng)絡(luò)的不同需求,可以規(guī)劃出合適的路徑進(jìn)行傳輸,滿足業(yè)務(wù)的傳輸要求。
本文在SDN的網(wǎng)絡(luò)框架下,發(fā)揮可編程數(shù)據(jù)平面的特性,提出了一種數(shù)據(jù)面與控制面協(xié)作的選路方法。在可編程數(shù)據(jù)面上,通過對字段進(jìn)行解析,匹配不同的流表,實(shí)現(xiàn)了在交換機(jī)上快速自動(dòng)判別數(shù)據(jù)的業(yè)務(wù)屬性并進(jìn)行相應(yīng)轉(zhuǎn)發(fā);同時(shí)通過帶內(nèi)測量的方法,在不引入額外網(wǎng)絡(luò)負(fù)擔(dān)的前提下,可以統(tǒng)計(jì)到網(wǎng)絡(luò)中各個(gè)節(jié)點(diǎn)的時(shí)效性參數(shù)。在控制面上,將網(wǎng)絡(luò)的實(shí)時(shí)性能參數(shù)應(yīng)用到蟻群算法中,生成匹配的路由規(guī)則并下發(fā)至數(shù)據(jù)面。下一步,將對流量的業(yè)務(wù)類型做出更細(xì)致的區(qū)分,并對控制器中的算法進(jìn)一步優(yōu)化,使其成為一種更優(yōu)的路由方案。