丁 俏 馮 勇 李宇桐
(昆明理工大學(xué)云南省計(jì)算機(jī)應(yīng)用技術(shù)重點(diǎn)實(shí)驗(yàn)室 云南 昆明 650500)
隨著城鎮(zhèn)化進(jìn)程加快,越來(lái)越多人生活在城市中,構(gòu)建智能感知城市成為給人們提供舒適和便利環(huán)境的必要條件[1]。物聯(lián)網(wǎng)(IoT)是實(shí)現(xiàn)感知城市的基礎(chǔ),它不僅能靈活地支持各種應(yīng)用需求,還能夠便捷地管理基礎(chǔ)設(shè)施[3,5-6]。軟件定義網(wǎng)絡(luò)(SDN)是一種新興的網(wǎng)絡(luò)模式,它能夠通過(guò)滿(mǎn)足特定端到端需求的方式,靈活地支持和管理網(wǎng)絡(luò)中大量的數(shù)據(jù)傳輸,允許快速靈活地配置基于流的路由,實(shí)現(xiàn)網(wǎng)絡(luò)組件的重新組合,尤其適用于具有數(shù)據(jù)流變化[2]的網(wǎng)絡(luò)。SDN技術(shù)與物聯(lián)網(wǎng)的結(jié)合引起學(xué)術(shù)界和工業(yè)界的關(guān)注,軟件定義的物聯(lián)網(wǎng)(SD-IoT)已經(jīng)用于智能感知城市的建設(shè)[3-4]。
在軟件定義的物聯(lián)網(wǎng)網(wǎng)絡(luò)中,數(shù)據(jù)傳輸常常會(huì)出現(xiàn)延遲問(wèn)題,這會(huì)影響用戶(hù)的生活體驗(yàn)。如何提高網(wǎng)絡(luò)中數(shù)據(jù)傳輸?shù)男?、降低?shù)據(jù)傳輸延遲,是當(dāng)前學(xué)者們研究的一個(gè)重要方向。許多學(xué)者對(duì)SD-IoT網(wǎng)絡(luò)數(shù)據(jù)傳輸延遲問(wèn)題進(jìn)行了研究。Craig等[7]提出了一種通過(guò)修改軟件定義網(wǎng)絡(luò)控制器中的實(shí)時(shí)鏈路成本將流量負(fù)載平衡應(yīng)用于多播流量的方法。Zhang等[8]提出了一種構(gòu)建多播機(jī)制的方法,其中多播流在到達(dá)最終用戶(hù)之前由網(wǎng)絡(luò)功能虛擬化處理。Shen等[9]為SDN提出一種新的可靠多播樹(shù),因?yàn)樽疃搪窂綐?shù)(SPT)寬帶效率不高。
上述研究主要是通過(guò)平衡多播流、虛擬化處理數(shù)據(jù)和運(yùn)用多播樹(shù)等方式,有效地減少了網(wǎng)絡(luò)資源消耗,降低了網(wǎng)絡(luò)中數(shù)據(jù)傳輸延遲。這雖然在一定程度上降低了網(wǎng)絡(luò)數(shù)據(jù)傳輸延遲,卻增加了網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)某杀荆宜鼈儗?duì)網(wǎng)絡(luò)中數(shù)據(jù)傳輸效率的提高并不顯著,更重要的是不能對(duì)網(wǎng)絡(luò)中的數(shù)據(jù)傳輸進(jìn)行動(dòng)態(tài)調(diào)整,容易造成網(wǎng)絡(luò)負(fù)載不均衡,網(wǎng)絡(luò)資源利用率低。針對(duì)此問(wèn)題,在軟件定義物聯(lián)網(wǎng)中,本文提出一種數(shù)據(jù)傳輸方法,該方法是基于蟻群算法[10],依據(jù)選取數(shù)據(jù)轉(zhuǎn)發(fā)路徑的概率大小,將被轉(zhuǎn)發(fā)數(shù)據(jù)按概率分布到各個(gè)路徑上,概率值大的路徑轉(zhuǎn)發(fā)的數(shù)據(jù)多,概率值小的路徑轉(zhuǎn)發(fā)的數(shù)據(jù)較少,實(shí)現(xiàn)數(shù)據(jù)流被合理均衡地分配到可行的多路徑上。該方法能夠?qū)?shù)據(jù)流的轉(zhuǎn)發(fā)路徑進(jìn)行動(dòng)態(tài)調(diào)整,使網(wǎng)絡(luò)中數(shù)據(jù)傳輸達(dá)到負(fù)載均衡,避免數(shù)據(jù)傳輸擁塞,使得數(shù)據(jù)流能高效地傳輸?shù)椒?wù)器端。本文主要關(guān)注的是SD-IoT中數(shù)據(jù)轉(zhuǎn)發(fā)平面上[11]的數(shù)據(jù)傳輸問(wèn)題。仿真實(shí)驗(yàn)結(jié)果顯示該方法有很好的效果。
SDN技術(shù)與物聯(lián)網(wǎng)的結(jié)合正在引起學(xué)術(shù)界和工業(yè)界的關(guān)注,軟件定義的物聯(lián)網(wǎng)(SD-IoT)已經(jīng)用于智能感知城市的建設(shè)。如圖1所示,一個(gè)典型的軟件定義的物聯(lián)網(wǎng)系統(tǒng)[12]從邏輯上可以分成:感知數(shù)據(jù)系統(tǒng)、感知數(shù)據(jù)傳輸系統(tǒng)(即數(shù)據(jù)轉(zhuǎn)發(fā)平面)和感知數(shù)據(jù)處理系統(tǒng)三個(gè)子系統(tǒng)。當(dāng)參與的移動(dòng)傳感器節(jié)點(diǎn)(例如行人和車(chē)輛)到達(dá)空間事件的可感知區(qū)域內(nèi)時(shí),會(huì)異步感知城市環(huán)境中的空間事件,然后產(chǎn)生感知數(shù)據(jù)來(lái)描述該事件。感知數(shù)據(jù)可以從傳感器設(shè)備中讀取(例如加速度指針、陀螺儀)[13]。移動(dòng)傳感器節(jié)點(diǎn)可以通過(guò)蜂窩網(wǎng)絡(luò)(3G/4G)立即和網(wǎng)關(guān)進(jìn)行通信,將感知數(shù)據(jù)卸載到網(wǎng)關(guān)上,即卸載到數(shù)據(jù)轉(zhuǎn)發(fā)平面上,SDN控制器通過(guò)基于蟻群算法的數(shù)據(jù)傳輸方法,為感知數(shù)據(jù)計(jì)算出從網(wǎng)關(guān)到數(shù)據(jù)服務(wù)器間的多條路徑,感知數(shù)據(jù)通過(guò)多路徑上傳到數(shù)據(jù)服務(wù)器端,以進(jìn)一步聚合找到事件的真相。這些感知數(shù)據(jù)從多個(gè)網(wǎng)關(guān)通過(guò)多個(gè)路徑異步傳輸?shù)綌?shù)據(jù)服務(wù)器端的過(guò)程被稱(chēng)為異步多點(diǎn)對(duì)點(diǎn)(M2P)的數(shù)據(jù)傳輸[14],后面討論的M2P數(shù)據(jù)傳輸均是異步的。這里感知數(shù)據(jù)[13]和感知數(shù)據(jù)處理[15]均不在本文的研究范圍內(nèi),并且本文認(rèn)為SDN中只部署一個(gè)控制器[16]。
圖1 IoT-SDN框架圖
然而通常在軟件定義的物聯(lián)網(wǎng)網(wǎng)絡(luò)中,數(shù)據(jù)傳輸具有一定的延遲性。如何提高網(wǎng)絡(luò)中數(shù)據(jù)傳輸?shù)男适钱?dāng)前研究學(xué)者們急需解決的問(wèn)題。現(xiàn)有的提高SD-IoT網(wǎng)絡(luò)數(shù)據(jù)傳輸效率的方法主要有兩種類(lèi)型:一是通過(guò)提高數(shù)據(jù)卸載效率,以節(jié)省不必要的時(shí)間,實(shí)現(xiàn)節(jié)能且經(jīng)濟(jì)的數(shù)據(jù)傳輸[17-18];二是通過(guò)減小SD-IoT網(wǎng)絡(luò)中控制器端數(shù)據(jù)流請(qǐng)求負(fù)載,提高數(shù)據(jù)轉(zhuǎn)發(fā)效率,進(jìn)而降低數(shù)據(jù)傳輸延遲。
Mehmeti等[17]對(duì)延遲卸載提出了一個(gè)排隊(duì)分析模型,得出平均延遲、卸載效率和其他指標(biāo),作為關(guān)鍵網(wǎng)絡(luò)參數(shù)。Zhou等[19]通過(guò)考慮時(shí)間社會(huì)接觸模式,討論網(wǎng)絡(luò)中的數(shù)據(jù)傳輸。Zhang等[20]定義了與提高卸載效率相關(guān)的效用函數(shù),以定量描述用戶(hù)在價(jià)格方面的滿(mǎn)意度與等待Wi-Fi連接延遲之間的權(quán)衡。上述研究工作主要是通過(guò)提高數(shù)據(jù)上傳網(wǎng)關(guān)的效率,節(jié)省不必要的數(shù)據(jù)卸載時(shí)間,從而提高數(shù)據(jù)傳輸效率,降低數(shù)據(jù)傳輸延遲。Song等[21]提出ORSIN(軟件定義物聯(lián)網(wǎng)中一種請(qǐng)求方法)方法,將來(lái)自同一個(gè)感知事件的異步請(qǐng)求批量分組到控制器端,形成事件-網(wǎng)關(guān)表,通過(guò)減小控制器端的負(fù)載,以提高網(wǎng)絡(luò)數(shù)據(jù)傳輸效率。
然而上述研究均未考慮數(shù)據(jù)轉(zhuǎn)發(fā)平面上的數(shù)據(jù)上傳延遲問(wèn)題。如圖2所示,在數(shù)據(jù)轉(zhuǎn)發(fā)平面上,假設(shè)有A和B兩種不同的數(shù)據(jù)流,它們分別來(lái)自?xún)蓚€(gè)不同的感知事件,它們需要被上傳到同一個(gè)數(shù)據(jù)服務(wù)器端,控制器分別給A和B規(guī)劃了a(g1到ds1)和b(g3到ds1)兩條不同的傳輸路徑。假如A數(shù)據(jù)流比較大,B數(shù)據(jù)流比較小,一段時(shí)間后,a路徑會(huì)產(chǎn)生嚴(yán)重?fù)砣?,b路徑上可能會(huì)出現(xiàn)空載,這將會(huì)導(dǎo)致網(wǎng)絡(luò)負(fù)載不均衡,此時(shí)整體網(wǎng)絡(luò)數(shù)據(jù)傳輸時(shí)間會(huì)增大,整體數(shù)據(jù)傳輸效率會(huì)降低。如果此時(shí)考慮動(dòng)態(tài)調(diào)整a、b兩路徑上數(shù)據(jù)流,使a路徑中的數(shù)據(jù)一部分分流到b路徑上,則可以提高整體網(wǎng)絡(luò)數(shù)據(jù)傳輸效率,降低數(shù)據(jù)傳輸延遲。
圖2 數(shù)據(jù)轉(zhuǎn)發(fā)平臺(tái)
因此,在軟件定義物聯(lián)網(wǎng)中,本文提出一種數(shù)據(jù)傳輸方法(DTMSIN)?;谙伻核惴ǎ罁?jù)選取數(shù)據(jù)流轉(zhuǎn)發(fā)路徑的概率值大小,將被轉(zhuǎn)發(fā)數(shù)據(jù)按概率分布到各個(gè)路徑上,概率值大的路徑轉(zhuǎn)發(fā)的數(shù)據(jù)多,概率值小的路徑轉(zhuǎn)發(fā)的數(shù)據(jù)較少,實(shí)現(xiàn)將流量合理均衡動(dòng)態(tài)地分配到可行的多路徑上。和其他方法相比,本文方法重點(diǎn)關(guān)注的是SD-IoT中數(shù)據(jù)轉(zhuǎn)發(fā)平面上的延遲問(wèn)題,這是導(dǎo)致整體網(wǎng)絡(luò)中數(shù)據(jù)傳輸產(chǎn)生延遲的重要原因;在數(shù)據(jù)轉(zhuǎn)發(fā)平面上,對(duì)數(shù)據(jù)流的轉(zhuǎn)發(fā)路徑進(jìn)行動(dòng)態(tài)規(guī)劃,數(shù)據(jù)流能高效傳輸?shù)椒?wù)器端,其他方法則是一種靜態(tài)的路徑規(guī)劃,很容易造成網(wǎng)絡(luò)擁塞,網(wǎng)絡(luò)數(shù)據(jù)傳輸效率不高。
為了后文對(duì)數(shù)據(jù)傳輸方法的研究,先分析了軟件定義物聯(lián)網(wǎng)中多個(gè)感知事件下的多點(diǎn)對(duì)點(diǎn)(M2P)的路由問(wèn)題。
通常不止一個(gè)感知事件將通過(guò)數(shù)據(jù)轉(zhuǎn)發(fā)平面?zhèn)鬏攣?lái)自它們的感知數(shù)據(jù),而數(shù)據(jù)轉(zhuǎn)發(fā)平面中的交換機(jī)具有有限的轉(zhuǎn)發(fā)表,來(lái)自多個(gè)事件的感知數(shù)據(jù)將競(jìng)爭(zhēng)數(shù)據(jù)平面中有限的資源,此時(shí)路徑選擇模式將在很大程度上影響網(wǎng)絡(luò)中數(shù)據(jù)的傳輸效率。
不同路徑選擇的路由模式如圖3所示。圖3(a)為局部路徑選擇模式,來(lái)自事件e1的感知數(shù)據(jù)首先到達(dá)邊緣交換機(jī)s1上,感知數(shù)據(jù)需要傳輸?shù)綌?shù)據(jù)服務(wù)器端。SDN控制器為其計(jì)算了中間路徑,此路徑的延遲為2。在此示例中,假設(shè)每個(gè)交換機(jī)的轉(zhuǎn)發(fā)表只有一個(gè)可用的轉(zhuǎn)發(fā)條目,當(dāng)來(lái)自感知事件e2的感知數(shù)據(jù)到達(dá)邊緣交換機(jī)s2上時(shí),感知數(shù)據(jù)需要傳輸?shù)綌?shù)據(jù)服務(wù)器端。SDN控制器為它規(guī)劃底部的路徑,此路徑的延遲為20,因?yàn)榇藭r(shí)中間路徑無(wú)效,被從s1到ds1的數(shù)據(jù)傳輸所占用。圖3(b)展示了一個(gè)更有效的路徑選擇模式,它通過(guò)評(píng)估全局最小的延遲路徑,分別給來(lái)自感知事件e1和e2的感知數(shù)據(jù)計(jì)算延遲為4和2的最優(yōu)路徑。此時(shí),在全局路徑選擇的路由模式下,來(lái)自?xún)蓚€(gè)事件的數(shù)據(jù)傳輸總延遲為6,而在局部路徑選擇的路由模式下,來(lái)自?xún)蓚€(gè)事件的數(shù)據(jù)傳輸總延遲為22。全局路徑選擇路由模式比局部路徑選擇路由模式有明顯的優(yōu)勢(shì),故本文采用全局路徑選擇的路由模式。
(a) 局部路徑選擇的路由模式
(b) 全局路徑選擇的路由模式
由上述分析可知,有限的轉(zhuǎn)發(fā)表會(huì)導(dǎo)致來(lái)自多個(gè)感知事件的感知數(shù)據(jù)對(duì)轉(zhuǎn)發(fā)表路由的競(jìng)爭(zhēng)。如圖4所示,在數(shù)據(jù)平面中,頂點(diǎn)(交換機(jī))的容量表示轉(zhuǎn)發(fā)表的可用空間。對(duì)于每一個(gè)感知事件,其輸入的主機(jī)的流量數(shù)為1個(gè)單位。把每個(gè)頂點(diǎn)V的容量轉(zhuǎn)換為具有兩個(gè)新容量的頂點(diǎn)vin和vout,并且邊緣具有與原來(lái)邊緣相同的容量,這樣就實(shí)現(xiàn)對(duì)原來(lái)頂點(diǎn)的擴(kuò)容。
(a) 變換之前
(b) 變換之后圖4 頂點(diǎn)容量的變換圖
通常潛在感知事件和M2P數(shù)據(jù)傳輸之間會(huì)產(chǎn)生沖突,因?yàn)閬?lái)自潛在感知事件的感知數(shù)據(jù)常常會(huì)占用網(wǎng)絡(luò)資源,這會(huì)降低網(wǎng)絡(luò)數(shù)據(jù)傳輸效率。因此本文分析潛在感知事件和M2P數(shù)據(jù)傳輸?shù)年P(guān)系,從而避免沖突發(fā)生,提高數(shù)據(jù)傳輸效率,降低網(wǎng)絡(luò)中數(shù)據(jù)傳輸延遲。
(1)
(2)
把從在當(dāng)前時(shí)刻t0后一個(gè)時(shí)間窗口W期間的兩個(gè)事件之間的重疊時(shí)間比率定義為重疊率,計(jì)算式如下:
(3)
用Oi={Ri,1,Ri,2,…,Ri,m}表示ei和所有感知事件的重疊比率集合,Ri,i等于1。
為了降低計(jì)算的復(fù)雜度,本文使用了閾值ε過(guò)濾了矢量元素,如下所示:
(4)
由此系統(tǒng)可以獲取一個(gè)過(guò)濾向量集合:
(5)
通過(guò)上述對(duì)多個(gè)感知事件網(wǎng)絡(luò)情形下的M2P路由分析,可以將網(wǎng)絡(luò)理解為無(wú)項(xiàng)加權(quán)連通圖G(V,E),V為網(wǎng)絡(luò)節(jié)點(diǎn)集合,E為任意兩節(jié)點(diǎn)之間的鏈路集合。假設(shè)任意兩節(jié)點(diǎn)之間存在唯一一條鏈路。每條鏈路與QoS度量相關(guān)的有:可用寬帶B、時(shí)延T、丟包率、成本C和抖動(dòng)大小等。QoS的特征值定義為:設(shè)R為正實(shí)數(shù),對(duì)于任意無(wú)向加權(quán)連通圖G中的鏈路設(shè)置下列函數(shù):時(shí)延D(e)趨向于R;成本C(e)趨向于R;帶寬B(e)趨向于R。權(quán)重函數(shù)如下所示:
(6)
式中:E、F、G、H分別為各個(gè)因素的權(quán)重系數(shù),U(e)為選用該路徑的概率大小。權(quán)重函數(shù)計(jì)算的值為啟發(fā)式信息,啟發(fā)式信息可以避免數(shù)據(jù)轉(zhuǎn)發(fā)路徑過(guò)多,實(shí)時(shí)反映當(dāng)前節(jié)點(diǎn)鄰居節(jié)點(diǎn)的繁忙狀態(tài),與路由表一起決定轉(zhuǎn)發(fā)數(shù)據(jù)的路由路徑。
假設(shè)P(s,j,d)表示選擇路由從源節(jié)點(diǎn)s到目的節(jié)點(diǎn)d,選取s節(jié)點(diǎn)鄰居節(jié)點(diǎn)j的概率,設(shè)N(s)為節(jié)點(diǎn)s的鄰居節(jié)點(diǎn)的集合。所有選取當(dāng)前節(jié)點(diǎn)的鄰居節(jié)點(diǎn)的概率之和為1,如下所示:
(7)
假設(shè)滿(mǎn)足QoS的最小帶寬和滿(mǎn)足QoS的最大時(shí)延條件,如式(8)-式(9)所示,C0和D0為兩個(gè)常數(shù),對(duì)于從源節(jié)點(diǎn)s到目的節(jié)點(diǎn)d的任意一條路由路徑ri,如果同時(shí)滿(mǎn)足這兩個(gè)條件,即加入可用路徑集合中。
min{bandwidth(ri),ri∈(s,d)}≥C0
(8)
max{delay(ri),ri∈(s,d)}≤D0
(9)
算法1和算法2分別為前向螞蟻和后向螞蟻構(gòu)建解算法的偽代碼。前向螞蟻收集途徑鏈路的即時(shí)狀態(tài),包括延遲、抖動(dòng)、丟包率、隊(duì)列長(zhǎng)度和節(jié)點(diǎn)標(biāo)識(shí)信息等鏈路信息,前向螞蟻到達(dá)目的節(jié)點(diǎn)時(shí)就會(huì)轉(zhuǎn)換為后向螞蟻,后向螞蟻按原路返回源節(jié)點(diǎn)并更新信息表的相關(guān)數(shù)據(jù)結(jié)構(gòu)。由兩種螞蟻的工作機(jī)制可以看出,兩種螞蟻的數(shù)據(jù)結(jié)構(gòu)相同,均包含路由表、節(jié)點(diǎn)狀態(tài)信息及路徑標(biāo)識(shí)。螞蟻完成尋路和記錄路徑狀態(tài)的數(shù)據(jù)結(jié)構(gòu)可以分別被定義成一個(gè)數(shù)據(jù)表D(d)和一個(gè)堆棧S(d)。D(d)包含源節(jié)點(diǎn)s、螞蟻所在當(dāng)前節(jié)點(diǎn)i和目的節(jié)點(diǎn)d的節(jié)點(diǎn)狀態(tài)信息以及路徑節(jié)點(diǎn)數(shù)n。S(d)包含了從源節(jié)點(diǎn)s到目的節(jié)點(diǎn)d依次經(jīng)過(guò)的網(wǎng)絡(luò)節(jié)點(diǎn)的信息An、鏈路狀態(tài)信息Bn和各個(gè)節(jié)點(diǎn)的時(shí)延關(guān)系Cn。
D(d)=(s,i,d,n)
(10)
S(d)={(s1,A1,B1,C1),(s2,A2,B2,C2),…,
(sn,An,Bn,Cn)}
(11)
算法1前向螞蟻構(gòu)建尋路解偽代碼
FAB-DCSR(G=(V,E),s,i,d)
//s為源節(jié)點(diǎn)
//i為當(dāng)前節(jié)點(diǎn)
//d為目的節(jié)點(diǎn)
//初始化狀態(tài)
1. 初始化:本地流量模式和路由表
2. 為圖的每個(gè)頂點(diǎn)分配一個(gè)螞蟻
3. 初始化每條邊的信息素水平
4. for (每個(gè)節(jié)點(diǎn)i)
5. while (系統(tǒng)時(shí)間<模擬時(shí)間)
6. If (系統(tǒng)時(shí)間>發(fā)送螞蟻之間的間隔)
7. 隨機(jī)選擇一個(gè)d
8. 發(fā)送一個(gè)前向螞蟻(s,i,d);
9. end if
10. for (每個(gè)前向螞蟻)
11. while (i!=d)
12. 使用路由表選擇下一跳節(jié)點(diǎn);
13. 在螞蟻的構(gòu)建路徑隊(duì)列中添加下一跳節(jié)點(diǎn);
14. 移動(dòng)到下一跳節(jié)點(diǎn);
15. end while
16. end for
17. end while
算法2后向螞蟻更新數(shù)據(jù)結(jié)構(gòu)偽代碼
BAB-UDS(G=(V,E),s,i,d)
//s為源節(jié)點(diǎn)
//i為當(dāng)前節(jié)點(diǎn)
//d為目的節(jié)點(diǎn)
1. for (每個(gè)后向螞蟻)
2. while (i!=d)
3. 從螞蟻所記錄的路徑中讀取前節(jié)點(diǎn)及其包含統(tǒng)計(jì)信息作為下一跳節(jié)點(diǎn);
4. 等待在高于數(shù)據(jù)的優(yōu)先級(jí)隊(duì)列中準(zhǔn)備被發(fā)送到下一跳節(jié)點(diǎn);
5. 移動(dòng)到下一個(gè)節(jié)點(diǎn);
6. 當(dāng)前節(jié)點(diǎn)賦值為下一跳節(jié)點(diǎn);
7. 更新本地流量模型統(tǒng)計(jì)信息;
8. 評(píng)估信息素釋放大小;
9. 更新信息素表(路由表);
10. end for
11. end while
本文使用路由表和蟻群信息素表同構(gòu)的原則,這樣路由表就能夠根據(jù)信息素表動(dòng)態(tài)適應(yīng)當(dāng)前網(wǎng)絡(luò)的狀態(tài),路由表的取值是經(jīng)過(guò)信息素表到路由表的冪運(yùn)算得到的。每個(gè)路由器都維護(hù)著一張信息素表,信息素表是一個(gè)二維矩陣,一個(gè)維度表示所要到達(dá)的所有目的節(jié)點(diǎn),另一個(gè)維度表示路由器的所有鄰居節(jié)點(diǎn)。信息素表的取值表示從當(dāng)前節(jié)點(diǎn)到達(dá)目的節(jié)點(diǎn)時(shí),選擇當(dāng)前節(jié)點(diǎn)的鄰居節(jié)點(diǎn)作為下一跳節(jié)點(diǎn)的概率,這樣可以避免螞蟻選路陷入局部最優(yōu)解。當(dāng)前節(jié)點(diǎn)所有的鄰居節(jié)點(diǎn)的概率和為1。因?yàn)槁酚杀砗托畔⑺乇硗瑯?gòu),所以路由表項(xiàng)的取值表示將數(shù)據(jù)從本節(jié)點(diǎn)轉(zhuǎn)發(fā)到目的節(jié)點(diǎn)時(shí),選擇一個(gè)鄰居節(jié)點(diǎn)作為下一個(gè)節(jié)點(diǎn)的概率,這樣同樣可以避免數(shù)據(jù)流路徑規(guī)劃陷入局部最優(yōu),可以均衡各鏈路的負(fù)載,動(dòng)態(tài)選擇路徑,避免路徑擁塞發(fā)生。同樣所有鄰居節(jié)點(diǎn)的概率值和為1。根據(jù)節(jié)點(diǎn)間是否為鄰居的關(guān)系,可以設(shè)定不同的信息素表(路由表)的初始概率,如下所示:
(12)
式中:j為i的鄰居節(jié)點(diǎn);|Ni|表示當(dāng)前節(jié)點(diǎn)i鄰居節(jié)點(diǎn)的個(gè)數(shù);Ni表示i節(jié)點(diǎn)和目的節(jié)點(diǎn)d之間的節(jié)點(diǎn);ρ為先驗(yàn)因子。
路由表與信息素表同構(gòu),路由表的取值是經(jīng)過(guò)信息素表到路由表的冪運(yùn)算得到的,路由表更新規(guī)則和信息素表更新一樣。
信息素表更新規(guī)則:如果后向螞蟻返回來(lái)節(jié)點(diǎn)是i節(jié)點(diǎn)的鄰居節(jié)點(diǎn),那么i節(jié)點(diǎn)下一個(gè)節(jié)點(diǎn)的概率值按式(13)進(jìn)行增加,否則該節(jié)點(diǎn)下一個(gè)節(jié)點(diǎn)的概率值按式(14)進(jìn)行減少。
Pid←Pid+μ(1-Pid)i∈Ni
(13)
Pid←Pid-μ(1-Pid)i∈Ni
(14)
式中:節(jié)點(diǎn)i是后向螞蟻過(guò)來(lái)的節(jié)點(diǎn);節(jié)點(diǎn)j是當(dāng)前節(jié)點(diǎn)的鄰居節(jié)點(diǎn);d是目的節(jié)點(diǎn);μ為增強(qiáng)因子。每一次計(jì)算之后都要保持當(dāng)前節(jié)點(diǎn)的鄰居節(jié)點(diǎn)總概率和為1,這稱(chēng)為歸一化處理。
增強(qiáng)因子μ∈(0,1),公式如下:
(15)
tsup為參數(shù)置信區(qū)間的上限:
(16)
式中:γ為置信水平;|Wd|為觀察窗口的大小。
螞蟻在選擇鄰居節(jié)點(diǎn)時(shí),可能會(huì)遇到以下三種情況,針對(duì)這三種情況的處理方法如下:
(1) 若當(dāng)前節(jié)點(diǎn)i相鄰節(jié)點(diǎn)中含有目的節(jié)點(diǎn)d,螞蟻無(wú)條件選擇d。
(2) 若鄰居節(jié)點(diǎn)中含有該螞蟻之前沒(méi)有走過(guò)的鄰居節(jié)點(diǎn),按照式(17)計(jì)算新的概率,并按照概率最大值隨機(jī)選擇。
(17)
式中:li為啟發(fā)式校正系數(shù);Pid為路由概率;α為權(quán)重因子;qi為緩沖區(qū)隊(duì)列長(zhǎng)度;|Ni|表示當(dāng)前節(jié)點(diǎn)i鄰居節(jié)點(diǎn)的個(gè)數(shù)。
(3) 若鄰居節(jié)點(diǎn)都被以前的螞蟻訪問(wèn)過(guò),則跳過(guò)的之前螞蟻?zhàn)哌^(guò)的節(jié)點(diǎn)(情況(1)除外)繼續(xù)下一個(gè)鄰居節(jié)點(diǎn),按照式(17)計(jì)算新概率,并按照概率中最大值隨機(jī)選擇。
轉(zhuǎn)發(fā)數(shù)據(jù)時(shí),路由表會(huì)按概率值隨機(jī)選擇下一個(gè)鄰居節(jié)點(diǎn)作為下一跳節(jié)點(diǎn)來(lái)選擇數(shù)據(jù)流的轉(zhuǎn)發(fā)路徑。路由表取值是由信息素表值通過(guò)指數(shù)函數(shù)運(yùn)算映射到路由表中得到的,指數(shù)函數(shù)公式如下:
g(x)=xγγ≥1
(18)
通過(guò)信息素表到路由表的冪運(yùn)算取值可以增強(qiáng)優(yōu)質(zhì)路徑的被選擇概率,強(qiáng)化函數(shù)作用顯而易見(jiàn),增強(qiáng)高概率減弱低概率值,避免數(shù)據(jù)從低概率的路徑轉(zhuǎn)發(fā)。由于路由表項(xiàng)的取值反映了所選路徑的質(zhì)量,所以被轉(zhuǎn)發(fā)數(shù)據(jù)會(huì)按概率分布到各個(gè)路徑上,概率值大的路徑轉(zhuǎn)發(fā)的數(shù)據(jù)多,概率值小的路徑轉(zhuǎn)發(fā)的數(shù)據(jù)較少,動(dòng)態(tài)地調(diào)整數(shù)據(jù)流的轉(zhuǎn)發(fā)路徑,實(shí)現(xiàn)流量合理均衡分配到可行的多路徑上。
本文基于Mininet(2.3.0)+Floodlight(Ubuntu 16.04-desktop-64位)的實(shí)驗(yàn)仿真平臺(tái)模擬SDN網(wǎng)絡(luò)環(huán)境,將本文方法DTMSIN分別與ORSIN[21]、傳統(tǒng)OPENFLOW方法進(jìn)行比較,使用網(wǎng)絡(luò)中數(shù)據(jù)傳輸平均延遲來(lái)評(píng)估這三種方法的性能。本文考慮是在多個(gè)感知事件情形下,仿真參數(shù)設(shè)置如表1所示。
表1 實(shí)驗(yàn)參數(shù)設(shè)置
實(shí)驗(yàn)1在部署5個(gè)感知事件和單個(gè)數(shù)據(jù)服務(wù)器的網(wǎng)絡(luò)情形下,對(duì)三種方法進(jìn)行對(duì)比,結(jié)果如圖5所示。
(a) 20個(gè)交換機(jī)
(b) 30個(gè)交換機(jī)圖5 多個(gè)感知事件下不同節(jié)點(diǎn)容量下的平均延遲
圖5(a)展示了在擁有20個(gè)交換機(jī)和隨機(jī)鏈路的拓?fù)渚W(wǎng)絡(luò)情形下三種方法的數(shù)據(jù)傳輸平均延遲情況。隨著每個(gè)交換機(jī)容量的增加,三種方法網(wǎng)絡(luò)中數(shù)據(jù)傳輸平均延遲均逐漸減小。這是因?yàn)殡S著每個(gè)交換機(jī)的容量增加,交換機(jī)上轉(zhuǎn)發(fā)表可用空間逐漸增大,來(lái)自一些感知事件的感知數(shù)據(jù)將被分配到具有較低延遲的轉(zhuǎn)發(fā)路徑上,所以網(wǎng)絡(luò)的整體數(shù)據(jù)傳輸延遲會(huì)降低??梢钥闯?,DTMSIN的平均延遲明顯比另外兩種方法平均延遲都低。雖然DTMSIN和ORSIN采用都是全局路徑選擇的路由模式,但是DTMSIN首先考慮了SDN數(shù)據(jù)轉(zhuǎn)發(fā)平面的擁塞,其次能夠動(dòng)態(tài)地調(diào)整數(shù)據(jù)流的轉(zhuǎn)發(fā)路徑,使整體網(wǎng)絡(luò)負(fù)載均衡,避免擁塞,而其他兩種方法則是靜態(tài)的路徑規(guī)劃,很容易造成網(wǎng)絡(luò)擁塞,網(wǎng)絡(luò)數(shù)據(jù)傳輸效率不高。
圖5(b)展示了網(wǎng)絡(luò)中部署30個(gè)網(wǎng)關(guān)和隨機(jī)鏈路的拓?fù)渚W(wǎng)絡(luò)情形下,數(shù)據(jù)傳輸?shù)钠骄舆t情況。隨著每個(gè)交換機(jī)容量增加,三種方法數(shù)據(jù)傳輸平均延遲逐漸減小。DTMSIN的平均延遲比另外兩種方法延遲都低。相比部署20個(gè)網(wǎng)關(guān)的網(wǎng)絡(luò)情景,更大規(guī)模的網(wǎng)絡(luò)擁有更大的平均延遲,因?yàn)楦嗟慕粨Q機(jī)轉(zhuǎn)發(fā)數(shù)據(jù)包,使得整體網(wǎng)絡(luò)中的數(shù)據(jù)流增大,增大了整體網(wǎng)絡(luò)數(shù)據(jù)傳輸平均延遲。
實(shí)驗(yàn)2在部署20個(gè)交換機(jī)、不同感知事件及部署不同數(shù)量數(shù)據(jù)服務(wù)器的網(wǎng)絡(luò)環(huán)境下,對(duì)上述三種方法進(jìn)行對(duì)比,結(jié)果如圖6所示。
(a) 3個(gè)數(shù)據(jù)服務(wù)器
(b) 7個(gè)數(shù)據(jù)服務(wù)器圖6 多個(gè)感知事件下不同數(shù)據(jù)服務(wù)器數(shù)量下的平均延遲
圖6(a)展示了把3個(gè)數(shù)據(jù)服務(wù)器作為目的地的網(wǎng)絡(luò)情形下三種方法的數(shù)據(jù)傳輸平均延遲。隨著感知事件的數(shù)量的增加,三種方法數(shù)據(jù)傳輸?shù)钠骄舆t也在增加。這是因?yàn)殡S著感知事件數(shù)量的增加,移動(dòng)傳感器節(jié)點(diǎn)卸載到網(wǎng)關(guān)上的感知數(shù)據(jù)的數(shù)量會(huì)增加,此時(shí)網(wǎng)絡(luò)需要上傳的數(shù)據(jù)流會(huì)增大,而每個(gè)交換機(jī)上轉(zhuǎn)發(fā)表的空間有限,一些數(shù)據(jù)轉(zhuǎn)發(fā)將被分配到具有更高延遲的轉(zhuǎn)發(fā)路徑上,網(wǎng)絡(luò)數(shù)據(jù)平均傳輸延遲會(huì)增大。而DTMSIN的平均延遲比另外兩種方法延遲都低,因?yàn)镈TMSIN首先擴(kuò)大了交換機(jī)的容量,使得數(shù)據(jù)流被分配到具有較低延遲的路徑上,其次對(duì)數(shù)據(jù)轉(zhuǎn)發(fā)平面上數(shù)據(jù)流進(jìn)行了動(dòng)態(tài)規(guī)劃,使得網(wǎng)絡(luò)中數(shù)據(jù)流分布均衡。
圖6(b)展示了把7個(gè)數(shù)據(jù)服務(wù)器作為目的地的情況下三種方法的平均延遲。數(shù)據(jù)傳輸?shù)钠骄舆t隨著感知事件數(shù)量的增加而增大,DTMSIN的延遲較其他兩種方法的延遲較小。相比3個(gè)數(shù)據(jù)服務(wù)器情景下,7個(gè)數(shù)據(jù)服務(wù)器情形下數(shù)據(jù)傳輸延遲較低,這是因?yàn)楦嗟臄?shù)據(jù)服務(wù)器可以提高數(shù)據(jù)的處理效率,提高數(shù)據(jù)傳輸效率,進(jìn)而降低網(wǎng)絡(luò)數(shù)據(jù)傳輸延遲。
實(shí)驗(yàn)3在部署5個(gè)感知事件、1個(gè)數(shù)據(jù)服務(wù)器和30個(gè)交換機(jī)的網(wǎng)絡(luò)環(huán)境下,在部署不同數(shù)量網(wǎng)關(guān)的條件下分別用三種方法進(jìn)行對(duì)比,結(jié)果如圖7所示。
圖7 多個(gè)感知事件下不同網(wǎng)關(guān)數(shù)量下的平均延遲
可以看出,隨著網(wǎng)絡(luò)中網(wǎng)關(guān)的數(shù)量增加,三種方法的數(shù)據(jù)傳輸延遲逐漸減小,這是因?yàn)殡S著網(wǎng)絡(luò)中上傳網(wǎng)關(guān)數(shù)量增多,移動(dòng)傳感器節(jié)點(diǎn)可以就近把攜帶的感知數(shù)據(jù)卸載到網(wǎng)關(guān)上,減少數(shù)據(jù)卸載的時(shí)間,另外隨著網(wǎng)關(guān)數(shù)量的增加,感知數(shù)據(jù)可以通過(guò)更多的網(wǎng)關(guān)上傳數(shù)據(jù)到數(shù)據(jù)服務(wù)器端,數(shù)據(jù)流可以被分配到更多具有低延遲的轉(zhuǎn)發(fā)路徑上,這樣網(wǎng)絡(luò)中數(shù)據(jù)延遲會(huì)減小。而DTMSIN相對(duì)其他兩種方法具有較低的平均延遲,這是因?yàn)閷?duì)數(shù)據(jù)轉(zhuǎn)發(fā)平面上的數(shù)據(jù)流進(jìn)行了動(dòng)態(tài)規(guī)劃,使得網(wǎng)絡(luò)中數(shù)據(jù)流盡可能均勻分布到具有低延遲的路徑上,降低了整體網(wǎng)絡(luò)數(shù)據(jù)傳輸延遲,其他兩種方法則是一種靜態(tài)數(shù)據(jù)傳輸,容易出現(xiàn)數(shù)據(jù)傳輸擁塞。
本文提出了一種基于蟻群算法的數(shù)據(jù)傳輸方法,在軟件定義物聯(lián)網(wǎng)的數(shù)據(jù)轉(zhuǎn)發(fā)平面上,依據(jù)選取轉(zhuǎn)發(fā)數(shù)據(jù)流路徑的概率值大小,對(duì)數(shù)據(jù)流的路徑進(jìn)行動(dòng)態(tài)規(guī)劃,實(shí)現(xiàn)流量合理均衡分配到可行的多路徑上。而ORSIN和OPENFLOW兩種方法主要通過(guò)減少SDN控制器端的請(qǐng)求負(fù)載來(lái)提高數(shù)據(jù)傳輸效率,并沒(méi)有考慮數(shù)據(jù)轉(zhuǎn)發(fā)平面上的數(shù)據(jù)傳輸延遲問(wèn)題,都不能對(duì)網(wǎng)絡(luò)中數(shù)據(jù)流進(jìn)行動(dòng)態(tài)調(diào)整,不能讓網(wǎng)絡(luò)達(dá)到負(fù)載均衡,充分利用網(wǎng)絡(luò)資源。仿真實(shí)驗(yàn)結(jié)果表明本文方法較其他兩種方法在數(shù)據(jù)傳輸效率方面有明顯的優(yōu)勢(shì)。本文僅研究在部署單個(gè)控制器網(wǎng)絡(luò)情形下的數(shù)據(jù)傳輸延遲問(wèn)題,未來(lái)將在具有多個(gè)控制器軟件定義的物聯(lián)網(wǎng)中進(jìn)一步研究數(shù)據(jù)傳輸延遲問(wèn)題。