王蒞晟,伊 鵬,谷允捷,江逸茗
(中國人民解放軍戰(zhàn)略支援部隊(duì)信息工程大學(xué) 信息技術(shù)研究所,鄭州 450002)
軟件定義網(wǎng)絡(luò)(Software-Defined Network,SDN)作為未來最有可能取代傳統(tǒng)網(wǎng)絡(luò)的新型網(wǎng)絡(luò)體系結(jié)構(gòu)之一,在近幾年得到了廣泛的應(yīng)用研究[1-3]。軟件定義網(wǎng)絡(luò)采用了數(shù)控分離的機(jī)制,相對于傳統(tǒng)網(wǎng)絡(luò)架構(gòu),擁有控制邏輯集中、開放可編程、細(xì)粒度流管控的優(yōu)勢。
軟件定義網(wǎng)絡(luò)的控制平面通過OpenFlow[4]協(xié)議掌握數(shù)據(jù)平面的全局拓?fù)?當(dāng)系統(tǒng)中到達(dá)一條新流時(shí),交換機(jī)首先會(huì)在已存儲(chǔ)的流表項(xiàng)中查找是否有匹配條目,如果存在與該流匹配的流表項(xiàng),則根據(jù)流表項(xiàng)對新流進(jìn)行轉(zhuǎn)發(fā)。如果沒有匹配條目,則數(shù)據(jù)平面的交換機(jī)將元數(shù)據(jù)與新流前128 MB的內(nèi)容封裝成Packet-In消息通過OpenFlow代理(OpenFlow Agent,OFA)向上傳遞給控制平面,控制平面對路由進(jìn)行計(jì)算后通過下放流表的方式在沿途交換機(jī)上安裝相應(yīng)轉(zhuǎn)發(fā)規(guī)則,新流根據(jù)流表中的轉(zhuǎn)發(fā)規(guī)則進(jìn)行轉(zhuǎn)發(fā),下放的流表均安裝在三態(tài)內(nèi)容尋址存儲(chǔ)器(Ternary Content Addressable Memory,TCAM)[5]中。
在軟件定義網(wǎng)絡(luò)中,TCAM模塊負(fù)責(zé)流表項(xiàng)的更新、存儲(chǔ)和查找工作,然而由于TCAM并非專為OpenFlow交換機(jī)設(shè)計(jì),其具有成本高、功耗大、容量小、流表更新操作速率較慢等缺陷,導(dǎo)致數(shù)據(jù)包下行鏈路存在性能瓶頸問題,基于Pica8交換機(jī)[6]測出的TCAM流表安裝速率僅為每秒200條,相比早期控制平面,單個(gè)NOX[7]控制器達(dá)到了每秒30 000條處理速度,在使用并行的Maestro控制器[8]下甚至達(dá)到每秒600 000條的請求處理速度,每秒200條的流安裝速率很容易出現(xiàn)流表安裝速率跟不上控制器處理速率,進(jìn)而出現(xiàn)下行控制鏈路擁塞以及流請求無法得到及時(shí)傳輸,嚴(yán)重影響通信質(zhì)量的情況。
研究人員對TCAM的研究大多集中在流表存儲(chǔ)容量[9-12]。文獻(xiàn)[9]介紹了一種表項(xiàng)聚合的方式,通過將多個(gè)表項(xiàng)通過特征合并為一個(gè)表項(xiàng),節(jié)省流表項(xiàng)空間,表項(xiàng)聚合分為非前綴聚合和前綴聚合,然而SDN中許多多元匹配字段不適合聚合,因此表項(xiàng)聚合并不適用于大多數(shù)情況。文獻(xiàn)[10]介紹了一種針對timeout的表項(xiàng)優(yōu)化方式,通過動(dòng)態(tài)改變表項(xiàng)存活時(shí)間來降低表項(xiàng)容量浪費(fèi)的情況,但是這種方式可能會(huì)增加下行控制鏈路的壓力,造成某些流表多次下發(fā)。
現(xiàn)有的研究多數(shù)忽略了交換機(jī)下行控制鏈路可能出現(xiàn)的擁塞問題,這可能導(dǎo)致當(dāng)短時(shí)間內(nèi)控制器向交換機(jī)下發(fā)大量流表時(shí),交換機(jī)TCAM中仍然存在存儲(chǔ)空間,但是由于流表更新速率過慢導(dǎo)致無法快速安裝流表,進(jìn)而導(dǎo)致下行控制鏈路擁塞,引起TCAM資源的浪費(fèi)以及用戶服務(wù)延時(shí)的增加。文獻(xiàn)[13-14]指出現(xiàn)有網(wǎng)絡(luò)硬件條件下軟件定義網(wǎng)絡(luò)控制鏈路存在性能瓶頸。文獻(xiàn)[8]提出將流請求重定向到虛擬交換機(jī),利用虛擬交換機(jī)較強(qiáng)的CPU處理能力進(jìn)行packet-in消息上傳和流表項(xiàng)安裝,然而虛擬交換機(jī)具有較高的部署成本,不適用于大規(guī)模網(wǎng)絡(luò)部署。文獻(xiàn)[15]針對該問題提出了一種改進(jìn)的基于隨機(jī)Runting的路由部署(Random Ruting Dployment,RRD)算法,通過添加約束的方法從所有可能路由路徑中選出最優(yōu)路徑,然而該問題是一個(gè)NP難問題,只能得到近似解,且計(jì)算過程較為復(fù)雜。
本文結(jié)合文獻(xiàn)[16]提出的數(shù)據(jù)包封裝多協(xié)議標(biāo)簽交換(Multi-Protocol Label Switching,MPLS)與分段路由(Segment Routing,SR)的方法,提出一種基于流重定向的MPLS標(biāo)簽算法FRML。通過設(shè)置觸發(fā)閾值,當(dāng)路徑中需安裝的流表數(shù)超過閾值時(shí),選取路徑上合適的交換機(jī),僅向該交換機(jī)下發(fā)添加標(biāo)簽的流表,之后的交換機(jī)只需根據(jù)打好的標(biāo)簽即可選擇相應(yīng)端口的轉(zhuǎn)發(fā)操作,以緩解交換機(jī)中下行控制鏈路資源緊張的狀況。
從OpenFlow交換機(jī)工作原理可以發(fā)現(xiàn),SDN網(wǎng)絡(luò)數(shù)據(jù)包傳輸依賴于OpenFlow交換機(jī)與SDN控制器之間的信息交互,然而由于TCAM性能限制,流表項(xiàng)更新速率僅為每秒200條,這就導(dǎo)致當(dāng)系統(tǒng)內(nèi)突發(fā)流量過大或遇到惡意攻擊時(shí)很可能會(huì)出現(xiàn)TCAM存儲(chǔ)空間仍然充足,但是流表無法及時(shí)更新到TCAM中的情況,使得SDN網(wǎng)絡(luò)下行控制鏈路擁塞,進(jìn)而導(dǎo)致新流無法得到及時(shí)傳輸,嚴(yán)重影響系統(tǒng)性能。
對于下行控制鏈路擁塞問題,將形成擁塞的流表項(xiàng)分為兩類:一類是下發(fā)到源節(jié)點(diǎn)的流表項(xiàng),數(shù)據(jù)最初存儲(chǔ)于源節(jié)點(diǎn)的緩存中,因此無論是傳統(tǒng)方法還是本文采用的MPLS算法都需要在源節(jié)點(diǎn)下發(fā)流表,此類流表的負(fù)載始終存在,只能通過重定向等方法利用其他交換機(jī)分擔(dān);另一類是控制器計(jì)算出流路徑后在路徑上的交換機(jī)中下發(fā)的流表項(xiàng),此類流表項(xiàng)可以使用MPLS算法用數(shù)據(jù)前綴的方式代替,因此屬于不是必須的下行控制鏈路負(fù)載,但是需要占用數(shù)據(jù)鏈路帶寬,在數(shù)據(jù)鏈路負(fù)載和線性控制鏈路負(fù)載之間做出權(quán)衡,選擇路徑中部分交換機(jī)下發(fā)流表進(jìn)行數(shù)據(jù)流的轉(zhuǎn)發(fā)操作。
1.2.1 系統(tǒng)元素
系統(tǒng)元素主要包括以下3種:
1)底層網(wǎng)絡(luò)。本文考慮將軟件定義網(wǎng)絡(luò)結(jié)構(gòu)用一個(gè)三元組來表示,即S(U,V,E)。其中,U={u1,u2,…,um}代表所有控制器,V={v1,v2,…,vm}代表所有交換機(jī),m=|U|表示控制器數(shù)量,n=|V|表示交換機(jī)數(shù)量。在多控制器SDN中,有m 2)閾值設(shè)定。對于交換機(jī)vi,用F(vi)(條)表示待下發(fā)流表數(shù),并定義其閾值,如式(1)所示: Ri=cd(vi)·B (1) 其中,B為其重定向閾值因子。對于源節(jié)點(diǎn),當(dāng)預(yù)計(jì)下發(fā)流表數(shù)超過閾值時(shí),先將部分流通過通配符的方式重定向到鄰居負(fù)載較低的交換機(jī)中,用Vi表示與vi距離只有一跳的所有交換機(jī)集合,pi=|Vi|。規(guī)定所有超出閾值的交換機(jī)集合為V′。當(dāng)超過閾值時(shí),將ft(vi,vij)條流量從vi重定向到vij,j=1,2,…,pi,vij∈Vi。對于路徑交換機(jī),若某一條流的路徑上有交換機(jī)負(fù)載超過閾值,則啟用MPLS方式進(jìn)行流表下發(fā),在路徑交換機(jī)中選擇n個(gè)負(fù)載最低的交換機(jī)下發(fā)流表。為方便討論,假設(shè)所有下行鏈路具有相同的鏈路容量,即所有交換機(jī)鏈路容量均為cd(v)·B,則閾值可以統(tǒng)一表示為: R=cd(v)·B (2) 對于源節(jié)點(diǎn)重定向過程,為增加系統(tǒng)彈性,設(shè)定重定向下限T,其中T 3)鏈路開銷。每個(gè)MPLS標(biāo)簽的大小為4 MB,因此,定義其額外鏈路開銷如式(3)所示: (3) 其中,lf表示流f的路徑向量,即: (4) (5) 1.2.2 優(yōu)化目標(biāo)與約束條件 優(yōu)化目標(biāo)與約束條件如下: 1)優(yōu)化目標(biāo) 對于本文提出的下行控制鏈路擁塞問題,將該問題定義為一個(gè)最優(yōu)化問題,優(yōu)化目標(biāo)為使下行控制鏈路負(fù)載因子最小,交換機(jī)下行控制鏈路負(fù)載因子如式(6)所示: (6) ω越接近于1,證明系統(tǒng)總的負(fù)載越大,超過1則證明系統(tǒng)中待安裝流表超過了系統(tǒng)能夠承載的最大值,可能會(huì)出現(xiàn)系統(tǒng)崩潰等極其惡劣的情況。 該最優(yōu)化問題優(yōu)化目標(biāo)如式(7)所示: minω,?vi∈V (7) 2)約束條件 約束條件主要包括以下3種: (8) (9) 其中: (10) (3)數(shù)據(jù)鏈路開銷約束。采用MPLS算法進(jìn)行流表項(xiàng)下發(fā)的同時(shí),也需要考慮可能會(huì)給數(shù)據(jù)鏈路帶來的額外開銷,每條流給數(shù)據(jù)鏈路帶來的額外開銷不得高于給定閾值C(f),則有: Inf(lf) (11) 針對下行控制鏈路擁塞問題,本文采用一種改進(jìn)的MPLS算法進(jìn)行解決,主要方法如下:1)基于OpenFlow協(xié)議周期性收集流表安裝分布情況和接口狀況;2)預(yù)測下一個(gè)周期的各交換機(jī)流表安裝負(fù)載,將下周期可能超載的源節(jié)點(diǎn)交換機(jī)的流量重定向到相鄰的負(fù)載較低的交換機(jī),作為新的源節(jié)點(diǎn)進(jìn)行路徑計(jì)算;3)計(jì)算路徑中如果存在下行控制鏈路負(fù)載超過閾值的交換機(jī),則對該條流采用MPLS方式下發(fā)流表,選取路徑中負(fù)載較低的幾個(gè)交換機(jī)下發(fā)流表,借用一部分?jǐn)?shù)據(jù)鏈路的帶寬來緩解下行控制鏈路負(fù)載過高的問題。 針對上述提出的約束條件和優(yōu)化目標(biāo),首先通過一個(gè)實(shí)例對工作流程進(jìn)行說明。對于如圖1所示的拓?fù)?參考文獻(xiàn)[6]的數(shù)據(jù),假設(shè)拓?fù)渲薪粨Q機(jī)安裝流表項(xiàng)的速度為每秒200條,在單位時(shí)間內(nèi)存在兩組流f1、f2先后到達(dá)交換機(jī)v2,流f1目的節(jié)點(diǎn)為v6,流f2目的節(jié)點(diǎn)為v4,兩組流均包含200條子流,且f1先于f2進(jìn)入系統(tǒng),則進(jìn)行優(yōu)化前,流傳輸路徑及下行控制鏈路負(fù)載如圖1(a)所示??梢钥闯?流f1與流f2均需經(jīng)過路徑v2~v4,這就導(dǎo)致交換機(jī)v2和v4均需安裝400條流表,嚴(yán)重超過了交換機(jī)安裝速率的每秒200條,此時(shí)會(huì)導(dǎo)致下行控制鏈路擁塞,流表無法及時(shí)安裝到系統(tǒng)中,造成流傳輸?shù)难訒r(shí),影響用戶體驗(yàn)。 針對以上情況,本文提出的算法流程如圖1(b)所示,首先將f2的流重定向到v1中,由v1作為新的源節(jié)點(diǎn)接收控制器的流表,然后控制器下發(fā)的流表為在f2的數(shù)據(jù)包中插入MPLS標(biāo)簽,該標(biāo)簽告知交換機(jī)數(shù)據(jù)從哪個(gè)端口發(fā)出,發(fā)出后交換機(jī)對本交換機(jī)對應(yīng)的MPLS標(biāo)簽做刪除處理,通過重定向和MPLS標(biāo)簽的方式共同作用緩解系統(tǒng)下行控制鏈路擁塞問題。可以看出,使用本文方法可以降低復(fù)用路徑上的流表安裝負(fù)載,且能夠利用鄰居節(jié)點(diǎn)來分擔(dān)源節(jié)點(diǎn)的流表安裝負(fù)載,付出的代價(jià)為增加數(shù)據(jù)鏈路的負(fù)擔(dān),如本實(shí)例減少了兩個(gè)擁塞交換機(jī)上的流表安裝負(fù)載,在數(shù)據(jù)鏈路每條流增加了(2+1)×4=12個(gè)字節(jié)的開銷,單條鏈路每條流最多增加了2×4=8個(gè)字節(jié)的開銷,相比于在兩個(gè)交換機(jī)各多出200條的流表安裝負(fù)載,顯然擁有更好的效果。 圖1 MPLS算法流程示意圖Fig.1 Schematic diagram of MPLS algorithm procedure 根據(jù)系統(tǒng)對下一單位時(shí)間流表下發(fā)的預(yù)測,當(dāng)源節(jié)點(diǎn)可能發(fā)生下行控制鏈路擁塞時(shí),提前在交換機(jī)中安裝通配符,將指定數(shù)目的流向鄰居交換機(jī)進(jìn)行重定向,由空閑的鄰居節(jié)點(diǎn)作為新的源節(jié)點(diǎn)進(jìn)行Packet-In消息的上報(bào)和流表下發(fā)節(jié)點(diǎn),鄰居節(jié)點(diǎn)間負(fù)載差距有多種情況,因此針對各種情況制定規(guī)則對流量進(jìn)行重定向: 假設(shè)vi有鄰居交換機(jī)vi1,vi2,…,vip∈Vi,且F(vi1) 規(guī)則1當(dāng)F(vi) ft(vi,vij)=0 (12) 規(guī)則2若對于vi1,有F(vi1) ft(vi,vi1)=F(vi)-T (13) (14) ft(vi,vij)=R-F(vij),j=1,2,…,m (15) 規(guī)則5若對于vi1,有F(vi1)>R,且F(vi)-R>F(vi1)-R,即鄰居節(jié)點(diǎn)均超載但仍有負(fù)載低于vi的節(jié)點(diǎn),則: (16) 規(guī)則6若對于vi1,有F(vi1)>R,且F(vi)-R ft(vi,vij)=0 (17) 重定向算法如下: 算法1源節(jié)點(diǎn)流重定向算法 輸入重定向閾值R,鄰接矩陣V,系統(tǒng)內(nèi)節(jié)點(diǎn)負(fù)載 輸出重定向流量數(shù)和方向 1.?vi∈V & F(vi)>R 2.for vij∈Vi,i=1,2,…,n 3.if F(vij) 4.if F(vi)-T 5.ft(vi,vi1)=F(vi)-T 6.else 7.ft(vi,vij)=R-F(vij) 8.end if 9.else if F(vi)-R>F(vi1)-R 11.end if 利用MPLS算法下發(fā)流表,具體實(shí)現(xiàn)過程如圖2所示,MPLS算法將路徑信息作為額外標(biāo)簽封裝在原始數(shù)據(jù)包中,這樣就只需在源節(jié)點(diǎn)和路徑上某幾個(gè)交換機(jī)節(jié)點(diǎn)下發(fā)流表項(xiàng)對標(biāo)簽信息進(jìn)行封裝,其他交換機(jī)只需要讀取MPLS中的端口信息,將數(shù)據(jù)包從相應(yīng)的端口發(fā)送出去即可,這種方法可以利用數(shù)據(jù)鏈路的帶寬來緩解交換機(jī)中下行控制鏈路資源緊張的情況。 圖2 MPLS算法實(shí)現(xiàn)過程Fig.2 Implementation process of MPLS algorithm 對于需要利用MPLS算法進(jìn)行傳輸?shù)牧?最主要的是選取路徑中下發(fā)流表的交換機(jī),本文采用貪心算法,每次選取一個(gè)路徑上負(fù)載最低的交換機(jī)作為中間節(jié)點(diǎn),直到?jīng)]有負(fù)載低于閾值R的交換機(jī)可選,或者M(jìn)PLS算法的路徑開銷低于某個(gè)閾值C’為止,然后進(jìn)行流表下發(fā)并進(jìn)行下一條流的計(jì)算,具體算法流程如下: 算法2MPLS算法交換機(jī)選擇 輸入流路徑向量lf,路徑上交換機(jī)負(fù)載F(vi) 初始化下發(fā)交換機(jī)集合Vd={vs} 輸出下發(fā)交換機(jī)集合Vd 1.對路徑lf上交換機(jī)按負(fù)載大小排序,F(v′1) 2.for v′i∈lf,i=1,2,…,n 3.if F(v′i)>R or Inf(lf) 4.break 5.else add v′iin Vd 7.end if 8.end for 對于每一個(gè)單位時(shí)間的流表安裝請求,本文算法計(jì)算過程如下:1)檢測交換機(jī)超載情況;2)遍歷源節(jié)點(diǎn)的鄰居節(jié)點(diǎn),并選擇合適的鄰居節(jié)點(diǎn)對流量進(jìn)行重定向;3)選擇流量進(jìn)行MPLS標(biāo)簽安裝。其中當(dāng)檢測到交換機(jī)超載時(shí),便會(huì)啟動(dòng)后續(xù)過程,遍歷超載交換機(jī)的所有鄰居節(jié)點(diǎn),進(jìn)行一次重定向,之后會(huì)選擇重定向后的流進(jìn)行MPLS算法的交換機(jī)選擇,最壞的情況是將所有交換機(jī)都選擇一遍。因此,可以得到本文算法復(fù)雜度為O(m+n)。 對比算法選取了兩種算法,第一種是OSPF路由算法[17],其運(yùn)用經(jīng)典的最短路由算法,另一種是文獻(xiàn)[15]提出的OPT-L算法,即對LRD問題進(jìn)行線性松弛后的線性最優(yōu)解算法。 本文實(shí)驗(yàn)在mininet[18]平臺(tái)上搭建了仿真實(shí)驗(yàn)環(huán)境,利用Ryu[19]開源控制器軟件作為系統(tǒng)控制平面,選取了一個(gè)擁有100個(gè)交換機(jī)節(jié)點(diǎn)和50個(gè)終端節(jié)點(diǎn)的校園網(wǎng)絡(luò)拓?fù)鋄20],設(shè)定該網(wǎng)絡(luò)數(shù)據(jù)鏈路容量為100 Mb/s,運(yùn)用隨機(jī)算法模擬系統(tǒng)中隨機(jī)到達(dá)的流量。為減少隨機(jī)算法對模擬結(jié)果造成影響,對每組實(shí)驗(yàn)進(jìn)行50次,取平均值得到最終的仿真結(jié)果。仿真實(shí)驗(yàn)平臺(tái)為Inter Core i7-8700 3.2 GHz CPU,16 GB內(nèi)存,Linux系統(tǒng)個(gè)人電腦。采用Java語言搭建仿真環(huán)境,并借助Matlab對實(shí)驗(yàn)結(jié)果進(jìn)行分析。 首先對3種算法的系統(tǒng)最大下行控制鏈路負(fù)載進(jìn)行對比,最大下行控制鏈路負(fù)載就是系統(tǒng)中負(fù)載最大的交換機(jī)的負(fù)載,可以衡量系統(tǒng)中負(fù)載最大的點(diǎn)的情況。仿真結(jié)果如圖3所示,可以看出,隨著系統(tǒng)中某個(gè)交換機(jī)到達(dá)的流數(shù)量增加,OSPF算法的交換機(jī)最大下行控制鏈路負(fù)載隨之增加,并很快超過了系統(tǒng)最大每秒安裝速率,造成嚴(yán)重的擁塞問題。OPT-C算法可以通過重定向方法緩解系統(tǒng)中最大下行控制鏈路負(fù)載,但是其重定向單元為宏流,即某一組流,因此受限于宏流的大小,只能將負(fù)載降低到OSPF算法的50%,且依然會(huì)使系統(tǒng)中負(fù)載超過安裝速率,造成較大的下行控制鏈路負(fù)載。 圖3 最大下行控制鏈路負(fù)載Fig.3 Maximum downlink control link load 本文FRML算法在系統(tǒng)負(fù)載到達(dá)閾值200前,與OSPF算法負(fù)載一致,但是并未超過每秒負(fù)載上限。隨著系統(tǒng)中流量數(shù)增加,重定向及MPLS標(biāo)簽機(jī)制觸發(fā),可以將系統(tǒng)中負(fù)載降低到閾值200附近,并保持及其緩慢的增長速度,可以看到在負(fù)載較低時(shí),FRML算法可以不進(jìn)行任何操作,降低系統(tǒng)開銷,當(dāng)超過閾值時(shí),FRML算法可以顯著降低系統(tǒng)負(fù)載,且效果優(yōu)于OPT-C算法。 下文對數(shù)據(jù)鏈路負(fù)載因子ω與系統(tǒng)最大流表項(xiàng)插入延時(shí)進(jìn)行仿真,仿真結(jié)果如圖4所示。 圖4 負(fù)載因子與最大流表項(xiàng)插入延時(shí)對比Fig.4 Comparison of load factor and maximum flow table insertion delay 圖4(a)表示負(fù)載因子與系統(tǒng)中總流量數(shù)之間的關(guān)系,隨著系統(tǒng)中流量數(shù)增加,系統(tǒng)中出現(xiàn)某些交換機(jī)嚴(yán)重超載的情況,OSPF系統(tǒng)中負(fù)載顯著增加,最后幾乎達(dá)到系統(tǒng)滿載,嚴(yán)重影響系統(tǒng)性能,OPT-C系統(tǒng)可以通過流重定向機(jī)制改善OSPF系統(tǒng)的負(fù)載,但是系統(tǒng)中流表下發(fā)數(shù)目并未減少,而只是將某些交換機(jī)的負(fù)載轉(zhuǎn)移到了其他空閑交換機(jī),因此隨著流量數(shù)增加,系統(tǒng)中負(fù)載最終也會(huì)達(dá)到滿載。FRML算法從根本上減少了下發(fā)到系統(tǒng)中的流表數(shù),能夠變相增加系統(tǒng)容量,大大減緩達(dá)到滿載的速率。 圖4(b)表示系統(tǒng)中最大流表插入時(shí)延與系統(tǒng)中流量數(shù)的關(guān)系。隨著系統(tǒng)中流量數(shù)增加,OSPF系統(tǒng)逐漸達(dá)到滿載,擁塞導(dǎo)致流表項(xiàng)插入延遲指數(shù)增長,造成嚴(yán)重的延遲現(xiàn)象。而OPT-C和FRML兩種算法均使用了重定向算法,不會(huì)造成某個(gè)交換機(jī)流表插入延時(shí)的顯著增加,但是FRML需要插入的流表數(shù)相對較少,因此FRML算法流表項(xiàng)插入延時(shí)相比于OPT-C算法有一定的優(yōu)勢。 最后對系統(tǒng)中的網(wǎng)絡(luò)吞吐量進(jìn)行仿真,結(jié)果如圖5所示,可以看出OSPF算法很容易出現(xiàn)單個(gè)交換機(jī)負(fù)載過高,嚴(yán)重影響整個(gè)系統(tǒng)的負(fù)載能力,限制網(wǎng)絡(luò)吞吐量。OPT-C算法可以緩解單個(gè)交換機(jī)負(fù)載能力,但是系統(tǒng)總的負(fù)載能力仍然沒變,在流量增加到一定限度時(shí)仍然會(huì)達(dá)到吞吐量瓶頸,本文提出的FRML算法減少了系統(tǒng)中下發(fā)流表項(xiàng)數(shù),使得系統(tǒng)中有限的下行控制鏈路容量可以容納更多的流表項(xiàng)下發(fā),因此可以進(jìn)一步增加網(wǎng)絡(luò)吞吐量及系統(tǒng)的容量。 圖5 網(wǎng)絡(luò)吞吐量仿真結(jié)果Fig.5 Simulation results of network throughput 本文針對SDN系統(tǒng)中下行控制鏈路負(fù)載較大的問題,通過重定向和下放MPLS標(biāo)簽的方法,緩解了源節(jié)點(diǎn)交換機(jī)與路徑交換機(jī)存在的流表項(xiàng)插入速率較低導(dǎo)致的系統(tǒng)性能下降,并在SDN實(shí)驗(yàn)平臺(tái)上進(jìn)行了驗(yàn)證,結(jié)果表明,與傳統(tǒng)的OSPF、OPT-C算法相比,該算法鏈路負(fù)載分別降低近60%、20%,最大表項(xiàng)插入延時(shí)方面相比于OSPF算法降低了近90%,略優(yōu)于OPT-C算法,同時(shí)相比于OSPF算法和OPT-C算法網(wǎng)絡(luò)吞吐量分別增加了近200%和30%。本文假設(shè)條件為流表容量充足條件下的流表下發(fā)策略,未考慮流表容量不足的情況會(huì)對本文實(shí)驗(yàn)造成的影響,下一步將針對更復(fù)雜的情況進(jìn)行探討,并在實(shí)際實(shí)驗(yàn)平臺(tái)中驗(yàn)證本文算法的高效性與實(shí)用性。2 算法設(shè)計(jì)
2.1 源節(jié)點(diǎn)重定向算法
2.2 MPLS算法
2.3 算法復(fù)雜度分析
3 實(shí)驗(yàn)驗(yàn)證
3.1 性能指標(biāo)與對比算法
3.2 仿真實(shí)驗(yàn)
4 結(jié)束語