曹 健,高 靜,張澤梁,王藝潼,李 楓
(1.北華大學(xué)計算機科學(xué)技術(shù)學(xué)院,吉林吉林 132000;2.北華大學(xué)數(shù)學(xué)與統(tǒng)計學(xué)院,吉林吉林 132000;3.北華大學(xué)大數(shù)據(jù)與智慧校園管理中心,吉林吉林 132000)
第四次工業(yè)革命的核心技術(shù)是智能制造[1],通過對機器狀態(tài)和生產(chǎn)環(huán)境的監(jiān)控,能有效地預(yù)測機器故障并優(yōu)化生產(chǎn)過程。在智能制造背景下,工業(yè)無線網(wǎng)絡(luò)的規(guī)模不斷擴大、新型應(yīng)用不斷涌現(xiàn),這就導(dǎo)致網(wǎng)絡(luò)中的能耗激增。降低網(wǎng)絡(luò)的能量消耗,提高網(wǎng)絡(luò)的能量使用效率成為工業(yè)無線網(wǎng)絡(luò)實用化發(fā)展的關(guān)鍵。此外,目前大多數(shù)聯(lián)網(wǎng)的工業(yè)設(shè)備資源有限,一旦部署就要使用很長時間,難以根據(jù)工業(yè)應(yīng)用需求動態(tài)調(diào)整網(wǎng)絡(luò)資源和路由策略,網(wǎng)絡(luò)的靈活性較差,因此現(xiàn)有的網(wǎng)絡(luò)架構(gòu)不再適用于智能制造環(huán)境,迫切需要新的體系結(jié)構(gòu)和新的路由算法來支持工業(yè)無線網(wǎng)絡(luò)的發(fā)展。
軟件定義網(wǎng)絡(luò)(Software Defined Network,SDN)是一種新型的網(wǎng)絡(luò)體系結(jié)構(gòu),它分離了控制平面和數(shù)據(jù)平面,控制平面集中式的管理使得網(wǎng)絡(luò)可以基于全網(wǎng)視圖進行路由決策,并且提高了新功能部署和實施的靈活性;網(wǎng)絡(luò)的可編程性使得控制平面與數(shù)據(jù)平面之間的雙向通信成為可能[2-3],達到簡化網(wǎng)絡(luò)管理與調(diào)度的目的。因此,將SDN 思想引入工業(yè)無線網(wǎng)絡(luò)的架構(gòu)設(shè)計中,由控制平面基于全網(wǎng)視圖進行決策,可以降低工業(yè)現(xiàn)場聯(lián)網(wǎng)設(shè)備的復(fù)雜度和硬件成本,有效提高網(wǎng)絡(luò)的靈活性和能量使用效率。目前,國內(nèi)外將二者結(jié)合的研究還在初期階段,尚未有較為成熟的理論成果,因此對基于SDN思想的工業(yè)無線網(wǎng)絡(luò)路由算法進行研究具有必要性和迫切性。
為此,本文基于SDN 思想提出軟件定義的工業(yè)無線網(wǎng)絡(luò)能量高效路由算法(Software Defined Energyefficient Routing Algorithm,SDERA),控制器根據(jù)全局的網(wǎng)絡(luò)狀態(tài)信息和應(yīng)用需求動態(tài)地調(diào)整路由決策,均衡網(wǎng)絡(luò)中節(jié)點的能量消耗,提高網(wǎng)絡(luò)的能量使用效率和靈活性。
學(xué)術(shù)界開展了大量關(guān)于工業(yè)無線網(wǎng)絡(luò)的研究。文獻[4]分析了基于IEEE 802.11,IEEE 802.15.1 和IEEE 802.15.4 標準的工業(yè)無線網(wǎng)絡(luò)的性能問題;文獻[5]研究了WirelessHART 標準中的匯聚傳輸問題,并提出了一種優(yōu)化時延的傳輸調(diào)度策略;文獻[6]提出一種基于ISA100.11a 的工業(yè)認知無線傳感器網(wǎng)絡(luò)路由算法,有效地增加了網(wǎng)絡(luò)吞吐量并降低端到端延遲;文獻[7]從信道爭用、傳輸沖突等角度分析了基于WirelessHART 標準網(wǎng)絡(luò)的端到端通信延遲,并且通過計算得出了延遲的時間范圍。上述研究內(nèi)容雖然從某一個方面或某一個指標滿足了工業(yè)無線網(wǎng)絡(luò)的通信需求,但很難根據(jù)全局的實時網(wǎng)絡(luò)狀態(tài)信息及時調(diào)整路由策略,難以滿足智能制造背景下用戶個性化定制產(chǎn)品等應(yīng)用場景對工業(yè)無線網(wǎng)絡(luò)的需求。
SDN 是近年來國內(nèi)外學(xué)術(shù)界和工業(yè)界的研究熱點。文獻[8]提出的OpenFlow 是SDN 最初的原型實現(xiàn),它主要應(yīng)用在大學(xué)校園和互聯(lián)網(wǎng)的骨干網(wǎng)中,由OpenFlow交換機和控制器兩部分組成。文獻[9]分析了互聯(lián)網(wǎng)域間路由的主要問題,提出了基于SDN 的域間路由機制。文獻[10]將流量分類技術(shù)應(yīng)用于SDN 中,網(wǎng)絡(luò)能夠區(qū)分不同的應(yīng)用,并根據(jù)數(shù)據(jù)流在帶寬和延時方面的需求智能優(yōu)化網(wǎng)絡(luò)資源的配置。此外,文獻[11-12]分別把SDN應(yīng)用到了移動接入網(wǎng)和無線傳感器網(wǎng)絡(luò)。總體來看,目前關(guān)于SDN 的研究主要是面向數(shù)據(jù)中心網(wǎng)絡(luò)和互聯(lián)網(wǎng)的主干網(wǎng)領(lǐng)域,研究的內(nèi)容主要集中在SDN 的可擴展性、SDN 的規(guī)模部署與跨域通信、傳統(tǒng)網(wǎng)絡(luò)與SDN 共存等方面,基于SDN 的思想設(shè)計工業(yè)無線網(wǎng)絡(luò)路由算法目前仍十分罕見。
用有向圖G=(V,E)表示工業(yè)無線網(wǎng)絡(luò),其中,V表示網(wǎng)絡(luò)中節(jié)點的集合,E表示網(wǎng)絡(luò)中無線鏈路的集合,如圖1 所示。
圖1 網(wǎng)絡(luò)模型Fig.1 Network model
網(wǎng)絡(luò)中的節(jié)點包括控制器C、感知節(jié)點fi、交換節(jié)點sj和接入節(jié)點ak。控制器C 位于監(jiān)測區(qū)域的中心,擁有網(wǎng)絡(luò)的全局狀態(tài)視圖和無限的能量供給,能夠智能分配網(wǎng)絡(luò)資源和優(yōu)化路由選擇;感知節(jié)點fi能夠感知現(xiàn)場設(shè)備及環(huán)境信息,并將其發(fā)送給交換節(jié)點;交換節(jié)點sj能夠感知工業(yè)現(xiàn)場設(shè)備的狀態(tài)信息,還能依據(jù)控制器C 下發(fā)的規(guī)則轉(zhuǎn)發(fā)數(shù)據(jù)包;接入節(jié)點ak能夠?qū)j發(fā)來的數(shù)據(jù)包進行數(shù)據(jù)融合,然后將其發(fā)送給云/霧計算中心。
網(wǎng)絡(luò)中的鏈路包含控制器與交換節(jié)點間的鏈路、交換節(jié)點間的鏈路以及感知節(jié)點與交換節(jié)點間的鏈路等。由于無線鏈路具有不對稱性,將交換節(jié)點si到sj的無線鏈路記為eij∈E,反向鏈路記為eji,將交換節(jié)點si到感知節(jié)點fj的無線鏈路記為∈E,RSSIij表示無線鏈路的RSSI 值。
SDERA路由算法由“網(wǎng)絡(luò)狀態(tài)信息收集”“路由計算”“路由規(guī)則下發(fā)”“數(shù)據(jù)傳輸”和“節(jié)點信息更新”五部分組成。控制器周期性地收集節(jié)點和鏈路狀態(tài)信息,建立全局的網(wǎng)絡(luò)拓撲結(jié)構(gòu),并分別為緊急數(shù)據(jù)包和普通數(shù)據(jù)包動態(tài)地計算轉(zhuǎn)發(fā)路徑,將其分配在不同的邏輯子網(wǎng)中傳輸,均衡網(wǎng)絡(luò)中節(jié)點的能量消耗。當應(yīng)用需求或者節(jié)點的狀態(tài)信息發(fā)生變化時,控制器能夠動態(tài)調(diào)整路由決策,從而提高能量使用效率。
2.2.1 網(wǎng)絡(luò)狀態(tài)信息收集
控制器C 向網(wǎng)絡(luò)中所有的節(jié)點廣播初始化消息HELLO-EO(hello-everyone)數(shù)據(jù)包,交換節(jié)點si在收到HELLO-EO 數(shù)據(jù)包后向控制器C 發(fā)送BACK-HELLO 數(shù)據(jù)包,同時si向周邊節(jié)點廣播Query 數(shù)據(jù)包,獲取鄰近的感知節(jié)點fj和交換節(jié)點sj的信息。
感知節(jié)點fj接收到來自控制器C 的HELLO-EO 數(shù)據(jù)包后進入等待狀態(tài),當它收到交換節(jié)點si發(fā)送的Query數(shù)據(jù)包后,向si發(fā)送BACK_Query 消息。如果fj接收到來自不同交換節(jié)點的多個Query 數(shù)據(jù)包,則比較接收數(shù)據(jù)包的RSSI 值,選擇信號最強的交換節(jié)點si發(fā)送BACK_ Query 消息。si收到fj的反饋信息后,將其加入到自己的管轄節(jié)點集合中,即:
當sj接收到鄰居交換節(jié)點si的Query 數(shù)據(jù)包以后,向其發(fā)送Back_S_Query 數(shù)據(jù)包,si收到反饋信息后,將sj加入鄰居節(jié)點集合中,即:
si將自己的管轄節(jié)點集合、鄰居節(jié)點集合以及剩余能量和CPU 負載等信息發(fā)送給控制器C。控制器C接收到所有交換節(jié)點的信息后,掌握了全局的網(wǎng)絡(luò)狀態(tài)信息。
2.2.2 路由計算
控制器C 完成網(wǎng)絡(luò)狀態(tài)信息收集后,掌握了網(wǎng)絡(luò)中所有節(jié)點的狀態(tài)信息,建立網(wǎng)絡(luò)拓撲結(jié)構(gòu),接下來進行路由計算。根據(jù)工業(yè)數(shù)據(jù)傳輸需求,將網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)包分為緊急數(shù)據(jù)包和普通數(shù)據(jù)包兩種,控制器C 將其分配在不同的虛擬子網(wǎng)中傳輸,以便最小化普通數(shù)據(jù)包對緊急數(shù)據(jù)包的影響。
針對緊急數(shù)據(jù)包,控制器以交換節(jié)點si與sj間的一跳傳輸延時d(i,j)為度量,采用Dijkstra 算法計算每一個交換節(jié)點si到任意接入節(jié)點ak的最短路徑:
如果一個交換節(jié)點si存在到達不同接入節(jié)點(如ak,ak+1,…)的多條路徑p(i,k),p(i,k+1),…,滿足數(shù)據(jù)傳輸?shù)臅r延需求,則根據(jù)式(4)選取中繼節(jié)點剩余能量較多,且到達隊列占用率較低的接入節(jié)點的路徑p(i,l)為轉(zhuǎn)發(fā)路徑,從而均衡網(wǎng)絡(luò)負載和能量消耗。
式中:α∈(0,1)是一個常數(shù),表示接入節(jié)點ak的隊列占用率所占權(quán)重為接入節(jié)點ak的隊列占用率,其值為百分數(shù)為路徑p(i,k)上所有節(jié)點的剩余能量的和為路徑上全部節(jié)點的初始能量的和。
針對普通數(shù)據(jù)包,控制器C 根據(jù)式(5)計算交換節(jié)點的負載因子:
式中:Ei為節(jié)點si的剩余能量;Eaver為網(wǎng)絡(luò)中所有交換節(jié)點剩余能量的平均值;表示si的隊列占用率,其值為百分數(shù)。控制器C 以節(jié)點的負載因子為度量,采用Dijkstra 算法計算交換節(jié)點si到處理器負載最輕的接入節(jié)點ak的最短路徑:
由此將普通數(shù)據(jù)包分配在剩余能量高、負載較輕的交換節(jié)點中傳輸,均衡網(wǎng)絡(luò)的能量消耗。
路由計算過程偽碼描述如下:
Set packet_type=1/*緊急數(shù)據(jù)包*/
For(i=0;i<n;i++)/*n為網(wǎng)絡(luò)中交換節(jié)點的數(shù)目*/
{ For(j=0;j<m;j++)/*m為網(wǎng)絡(luò)中接入節(jié)點的數(shù)目*/
Compute the shortest path from s[i]to a[j]using Dijkstra with the metric about delay;
If(pathnum >1)/*滿足傳輸需求的路徑數(shù)量多于1 個*/
Select the path p(i,l) by formula(5);
}
Set packe_ type=0/*普通數(shù)據(jù)包*/
For(i=0;i<n;i++)/*n為網(wǎng)絡(luò)中交換節(jié)點的數(shù)目*/
Compute the load factor LF[i]of s[i];
{For(l=0;l<m;l++)/*m為網(wǎng)絡(luò)中接入節(jié)點的數(shù)目*/
Select the node a[l]with the lightest queue load;
Compute the shortest path from s[i]to a[l]using Dijkstra with the metric about LF[i];
}
2.2.3 路由規(guī)則下發(fā)
控制器完成路由計算以后,為每個交換節(jié)點中的緊急數(shù)據(jù)包和普通數(shù)據(jù)包分別計算了到達最優(yōu)接入節(jié)點的路徑,接下來要將路由規(guī)則分發(fā)給交換節(jié)點,由交換節(jié)點按照路由規(guī)則轉(zhuǎn)發(fā)數(shù)據(jù)包。路由規(guī)則報文中包含了緊急數(shù)據(jù)包和普通數(shù)據(jù)包到達目的節(jié)點的下一跳節(jié)點地址等內(nèi)容,路由規(guī)則報文格式如表1 所示。
2.2.4 數(shù)據(jù)傳輸
當感知節(jié)點有數(shù)據(jù)要發(fā)送時,先將數(shù)據(jù)包發(fā)給管轄自己的交換節(jié)點,交換節(jié)點為接收到的數(shù)據(jù)包匹配報文類型,然后根據(jù)控制器下發(fā)的路由規(guī)則找到下一跳節(jié)點地址,將數(shù)據(jù)包發(fā)往下一跳交換節(jié)點。
表1 路由規(guī)則報文格式Table 1 Description formats of routing rule
緊急數(shù)據(jù)包和普通數(shù)據(jù)包分別在不同的邏輯子網(wǎng)中傳輸,當它們到達接入節(jié)點以后,接入節(jié)點要統(tǒng)計數(shù)據(jù)包的跳數(shù)、轉(zhuǎn)發(fā)節(jié)點、發(fā)送時間和接收時間等信息,并將統(tǒng)計信息以及自己的處理器負載信息發(fā)送給控制器。控制器根據(jù)接收到的統(tǒng)計信息估算網(wǎng)絡(luò)中交換節(jié)點的剩余能量。
2.2.5 節(jié)點信息更新
網(wǎng)絡(luò)運行一段時間以后,網(wǎng)絡(luò)中節(jié)點和鏈路狀態(tài)會發(fā)生變化,此外節(jié)點的新增和失效都會導(dǎo)致網(wǎng)絡(luò)拓撲結(jié)構(gòu)的改變,因此交換節(jié)點要周期地發(fā)送Query 數(shù)據(jù)包來更新鄰居節(jié)點和管轄節(jié)點信息。交換節(jié)點要將新的鄰居節(jié)點列表、管轄節(jié)點列表以及自身狀態(tài)信息(剩余能量和隊列占用率等)發(fā)送給控制器,控制器將新收到的每一個交換節(jié)點的剩余能量信息和估算的剩余能量進行比較,當它們的差值大于γ時,控制器則根據(jù)更新的全網(wǎng)信息重新計算轉(zhuǎn)發(fā)路徑并下發(fā)新的路由規(guī)則,從而及時優(yōu)化網(wǎng)絡(luò)的能量消耗。
本文采用OMNET++仿真平臺對SDERA 算法的性能進行仿真實驗,并與圖路由算法進行比較,主要從3個方面評估SDERA 算法的性能:端到端的平均傳輸延時;網(wǎng)絡(luò)的擴展性;網(wǎng)絡(luò)的有效生存周期。實驗參數(shù)設(shè)置如表2 所示。
在平均傳輸延時比較實驗中,設(shè)定緊急數(shù)據(jù)包(HRSDERA)的延時約束THR=0.1 s;普通數(shù)據(jù)包(LRSDERA)的延時約束TLR=1 s。從實驗結(jié)果可以看出,在SDERA 算法中,隨著網(wǎng)絡(luò)中數(shù)據(jù)流數(shù)量的增加,緊急數(shù)據(jù)包的傳輸延時在端到端的時延約束下平緩上升,當數(shù)據(jù)流的數(shù)量達到22 個時,時延約束仍小于0.1 s,始終低于圖路由算法的延時;普通數(shù)據(jù)包在剩余能量高、負載較低的鏈路中傳輸,其端到端延時曲線會根據(jù)網(wǎng)絡(luò)狀態(tài)變化出現(xiàn)輕微波動,其延時略高于圖路由算法,如圖2 所示。
表2 實驗參數(shù)設(shè)置Table 2 Parameter configurations of simulation experiment
圖2 平均傳輸延時比較Fig.2 Comparison of average transmission delay
本文通過增加節(jié)點密度產(chǎn)生的控制包數(shù)量來反映網(wǎng)絡(luò)的可擴展性。在SDERA 算法中,感知節(jié)點要將在工業(yè)現(xiàn)場采集的信息發(fā)送給交換節(jié)點,由交換節(jié)點轉(zhuǎn)發(fā)信息,無需維護路由消息,雖然控制器和交換節(jié)點間的通信會增加額外的數(shù)據(jù)包,但數(shù)據(jù)量不大,總體來講感知節(jié)點的增加并沒有大幅度增加網(wǎng)絡(luò)中控制包的數(shù)量;在圖路由中,所有節(jié)點都要參與數(shù)據(jù)包的轉(zhuǎn)發(fā),新增節(jié)點帶來了較大的網(wǎng)絡(luò)開銷。因此,SDERA 算法較圖路由算法具有較好的網(wǎng)絡(luò)擴展性,當網(wǎng)絡(luò)中節(jié)點達到400 個時,SDERA 算法在網(wǎng)絡(luò)擴展性方面的優(yōu)勢更加明顯,如圖3 所示。
此外,SDERA 算法能夠根據(jù)節(jié)點的剩余能量動態(tài)調(diào)整路由策略,并且根據(jù)數(shù)據(jù)的類型匹配相應(yīng)的策略,從而均衡網(wǎng)絡(luò)中節(jié)點的能量消耗。SDERA 算法針對緊急數(shù)據(jù)包,在滿足時延需求的路徑中選取中繼節(jié)點剩余能量多,到達隊列占用率低的接入節(jié)點的路徑為轉(zhuǎn)發(fā)路徑;針對普通數(shù)據(jù)包,根據(jù)節(jié)點的剩余能量和負載因子,選取剩余能量高、負載較輕的節(jié)點為下一跳節(jié)點,當仿真時間達到2 000 min 時,網(wǎng)絡(luò)中的節(jié)點仍能夠較好的存活。與圖路由算法相比,SDERA 算法有效延長了網(wǎng)絡(luò)的生存周期,如圖4 所示。
圖3 網(wǎng)絡(luò)的擴展性比較Fig.3 Comparison of network expansibility
圖4 網(wǎng)絡(luò)生存周期比較Fig.4 Comparison of network life cycle
本文基于SDN 的思想設(shè)計了能量高效的工業(yè)無線網(wǎng)絡(luò)路由算法SDERA??刂破鲹碛腥值木W(wǎng)絡(luò)視圖,根據(jù)工業(yè)數(shù)據(jù)傳輸需求將數(shù)據(jù)包分配在不同的邏輯子網(wǎng)中傳輸,達到提高網(wǎng)絡(luò)能量使用效率的目的;當網(wǎng)絡(luò)中節(jié)點和鏈路狀態(tài)發(fā)生變化時,控制器能及時調(diào)整路由策略,在滿足工業(yè)數(shù)據(jù)傳輸需求的同時,提高了網(wǎng)絡(luò)的靈活性和能量使用效率。仿真實驗表明,該路由算法在提高網(wǎng)絡(luò)能量使用效率方面表現(xiàn)出較好的性能。
注:本文通訊作者為高靜,張澤梁。