周佳琦,黃 璨2,曹建玲,任麗丹,任 智
(1.重慶郵電大學(xué) 通信與信息工程學(xué)院,重慶 400065;2.北京郵電大學(xué) 電子工程學(xué)院,北京100876)
節(jié)點(diǎn)構(gòu)成的無(wú)線自組織網(wǎng)絡(luò),由于其靈活性,可快速在空中組成骨干網(wǎng)絡(luò),為缺少基礎(chǔ)設(shè)施的地面提供可靠的通信,因此被廣泛應(yīng)用于各類(lèi)場(chǎng)景[1-2]。由于無(wú)人機(jī)(Unmanned Aerial Vehicle,UAV)快速移動(dòng)和能量限制等特性,網(wǎng)絡(luò)中的資源管理、協(xié)議差異性和拓?fù)涔芾淼葐?wèn)題仍然存在不少的挑戰(zhàn)[1,3-4]。軟件定義網(wǎng)絡(luò)(Software-defined Network,SDN)作為一種新型的網(wǎng)絡(luò)架構(gòu),將網(wǎng)絡(luò)分為數(shù)據(jù)平面和控制平面,控制平面與數(shù)據(jù)平面通過(guò)南向協(xié)議OpenFlow連接[5],其邏輯上的集中控制和網(wǎng)絡(luò)開(kāi)放可編程等特性能夠很好地解決上述問(wèn)題[6-7],因此部分學(xué)者提出了軟件定義無(wú)人機(jī)自組網(wǎng)(Software-defined Unmanned Aerial Vehicle Ad Hoc Network,SD-UANET)。
文獻(xiàn)[3]提出了一種基于SDN的UANET拓?fù)涔芾韰f(xié)議,目標(biāo)是建立和維護(hù)UANET拓?fù)浣Y(jié)構(gòu),該文獻(xiàn)中提到在UAV節(jié)點(diǎn)接收到流表項(xiàng)缺失數(shù)據(jù)包后選擇請(qǐng)求控制節(jié)點(diǎn)處理。文獻(xiàn)[8]針對(duì)UANET高動(dòng)態(tài)、不穩(wěn)定的空中無(wú)線鏈路和無(wú)人機(jī)碰撞的特性提出了SD-UANET架構(gòu)。文獻(xiàn)[9]為了保證UAV狀態(tài)信息的可靠傳輸,在控制節(jié)點(diǎn)收到狀態(tài)信息后向UAV節(jié)點(diǎn)回復(fù)一個(gè)ACK消息。文獻(xiàn)[10]中UAV節(jié)點(diǎn)周期性發(fā)送HELLO消息收集鄰居信息,通過(guò)AODV路由協(xié)議將鄰居信息發(fā)送給控制節(jié)點(diǎn),控制節(jié)點(diǎn)根據(jù)收集的鄰居信息計(jì)算路由并向每個(gè)UAV節(jié)點(diǎn)下發(fā)路由信息。文獻(xiàn)[11]中UAV節(jié)點(diǎn)將更新消息和下游節(jié)點(diǎn)的更新消息相合并發(fā)送給控制節(jié)點(diǎn),減少路由更新過(guò)程的控制開(kāi)銷(xiāo)。文獻(xiàn)[12]為最新的OpenFlow協(xié)議標(biāo)準(zhǔn),協(xié)議標(biāo)準(zhǔn)規(guī)定在節(jié)點(diǎn)緩存區(qū)足夠的情況下采用請(qǐng)求流表項(xiàng)的處理方式,在節(jié)點(diǎn)緩存區(qū)不足的情況下將整個(gè)數(shù)據(jù)包發(fā)送給控制節(jié)點(diǎn)處理。
通過(guò)以上研究發(fā)現(xiàn),現(xiàn)有SD-UANET中針對(duì)流表項(xiàng)缺失數(shù)據(jù)包處理方法的研究較少且存在如下問(wèn)題:一是UAV節(jié)點(diǎn)對(duì)于接收到的流表項(xiàng)缺失數(shù)據(jù)包目前采用向控制節(jié)點(diǎn)發(fā)請(qǐng)求消息或向控制節(jié)點(diǎn)發(fā)送流表項(xiàng)缺失數(shù)據(jù)包的處理方式,由于UAV節(jié)點(diǎn)的移動(dòng)性,最短時(shí)延的轉(zhuǎn)發(fā)方式不斷發(fā)生變化,采用單一的轉(zhuǎn)發(fā)方式會(huì)帶來(lái)較大的時(shí)延;二是控制節(jié)點(diǎn)與UAV節(jié)點(diǎn)之間發(fā)送的控制包數(shù)量較多,產(chǎn)生的網(wǎng)絡(luò)控制開(kāi)銷(xiāo)較大且無(wú)線碰撞概率較大。
為了解決現(xiàn)有文獻(xiàn)在SD-UANET路由維護(hù)方面存在的問(wèn)題,本文提出了一種高效自適應(yīng)的軟件定義無(wú)人機(jī)自組網(wǎng)路由維護(hù)機(jī)制,通過(guò)估計(jì)距離自適應(yīng)選擇時(shí)延最低的轉(zhuǎn)發(fā)方式;同時(shí)提出了基于周期恢復(fù)的消息聚合策略,聚合兩類(lèi)數(shù)據(jù)包減少網(wǎng)絡(luò)控制開(kāi)銷(xiāo),降低無(wú)線碰撞概率。
SD-UANET的拓?fù)鋱D如圖1所示,由一個(gè)控制節(jié)點(diǎn)(Controller Node,CN)和多個(gè)UAV節(jié)點(diǎn)組成,UAV節(jié)點(diǎn)之間通過(guò)數(shù)據(jù)平面?zhèn)鬏敂?shù)據(jù)包,CN與UAV節(jié)點(diǎn)之間使用OpenFlow協(xié)議通信。首先,每個(gè)UAV節(jié)點(diǎn)周期性發(fā)送HELLO消息收集鄰居節(jié)點(diǎn)信息,UAV節(jié)點(diǎn)將收集好的鄰居信息周期性的發(fā)送給CN;然后,CN節(jié)點(diǎn)根據(jù)收集到的鄰居信息建立全網(wǎng)拓?fù)洳⒂?jì)算每個(gè)UAV節(jié)點(diǎn)的路由;最后,CN節(jié)點(diǎn)周期地向每個(gè)UAV節(jié)點(diǎn)下發(fā)流表,UAV節(jié)點(diǎn)根據(jù)收到的流表轉(zhuǎn)發(fā)數(shù)據(jù)包。若UAV節(jié)點(diǎn)收到流表項(xiàng)缺失數(shù)據(jù)包,則將數(shù)據(jù)包緩存,向CN發(fā)送請(qǐng)求流表項(xiàng)的消息,若UAV節(jié)點(diǎn)緩存空間不足,則將整個(gè)數(shù)據(jù)包發(fā)送給CN,CN根據(jù)流表信息轉(zhuǎn)發(fā)CN數(shù)據(jù)包。
圖1 SD-UANET拓?fù)鋱D
(1)目前SD-UANET中UAV節(jié)點(diǎn)接收到流表項(xiàng)缺失數(shù)據(jù)包后處理方法有兩種:方法1采用請(qǐng)求CN下發(fā)流表項(xiàng),由UAV轉(zhuǎn)發(fā);方法2將數(shù)據(jù)包直接發(fā)送給CN,由CN轉(zhuǎn)發(fā)。由于UAV節(jié)點(diǎn)的移動(dòng)性,即使UAV節(jié)點(diǎn)的緩存區(qū)有足夠的空間,當(dāng)方法1的轉(zhuǎn)發(fā)時(shí)延大于方法2時(shí),單一的選擇方法1轉(zhuǎn)發(fā)會(huì)產(chǎn)生較高的時(shí)延。
(2)UAV節(jié)點(diǎn)不僅要周期性的上傳鄰居信息,也需要在接收到流表項(xiàng)缺失數(shù)據(jù)包后向控制節(jié)點(diǎn)發(fā)送數(shù)據(jù)包或請(qǐng)求流表項(xiàng)消息,當(dāng)兩種過(guò)程同時(shí)進(jìn)行時(shí)會(huì)增大無(wú)線傳輸?shù)呐鲎哺怕省4送?,這兩種過(guò)程都需要UAV節(jié)點(diǎn)向CN發(fā)送數(shù)據(jù),相比于聚合消息發(fā)送,單獨(dú)發(fā)送數(shù)據(jù)包所產(chǎn)生的網(wǎng)絡(luò)控制開(kāi)銷(xiāo)更大。
針對(duì)現(xiàn)有的SD-UANET中流表項(xiàng)缺失處理時(shí)延長(zhǎng)、網(wǎng)絡(luò)控制開(kāi)銷(xiāo)大和無(wú)線傳輸碰撞問(wèn)題,本文提出了OpenFlow-EARM。新機(jī)制包含如下兩個(gè)策略:一是基于距離估計(jì)的自適應(yīng)轉(zhuǎn)發(fā)策略,在UAV節(jié)點(diǎn)中收到流表項(xiàng)缺失的數(shù)據(jù)包的情況下,UAV節(jié)點(diǎn)通過(guò)歷史流表項(xiàng)信息估計(jì)目的節(jié)點(diǎn)的位置,再根據(jù)估計(jì)位置選擇時(shí)延最低的轉(zhuǎn)發(fā)方式;二是基于周期恢復(fù)的消息聚合策略,通過(guò)聚合鄰居信息和流表項(xiàng)缺失處理過(guò)程的控制包減少網(wǎng)絡(luò)控制開(kāi)銷(xiāo),考慮到鄰居信息是周期性上傳,流表項(xiàng)缺失處理過(guò)程的控制包為非周期發(fā)送,由于聚合消息產(chǎn)生后立即發(fā)送,因此在聚合消息發(fā)送后需要將鄰居信息的發(fā)送周期恢復(fù)到原周期。
針對(duì)1.2 問(wèn)題描述(1),本文提出了基于距離估計(jì)的自適應(yīng)轉(zhuǎn)發(fā)策略,該策略核心思想是,通過(guò)流表項(xiàng)刪除后的時(shí)間值和UAV節(jié)點(diǎn)最快移動(dòng)速度計(jì)算得到目的UAV的最大移動(dòng)范圍,根據(jù)最大移動(dòng)范圍信息計(jì)算得到UAV節(jié)點(diǎn)到目的節(jié)點(diǎn)和控制節(jié)點(diǎn)到目的節(jié)點(diǎn)的距離;然后通過(guò)以上兩個(gè)距離信息和UAV節(jié)點(diǎn)到控制節(jié)點(diǎn)的距離計(jì)算出兩種方法的時(shí)延;最后根據(jù)計(jì)算出的時(shí)延選擇最低時(shí)延的方法轉(zhuǎn)發(fā)。
2.1.1 距離估計(jì)
假設(shè)UAV的最大移動(dòng)速度為vmax,流表項(xiàng)移除后的時(shí)間值tmove為
tmove=Tnow-Tremove。
(1)
該值等于當(dāng)前時(shí)刻與流表項(xiàng)移除時(shí)刻之差。假設(shè)Tnow時(shí)刻的UAV節(jié)點(diǎn)的位置為L(zhǎng)(Xu,Yu),控制節(jié)點(diǎn)的位置為L(zhǎng)(Xc,Yc),Tremove時(shí)刻目的節(jié)點(diǎn)的位置為L(zhǎng)(Xd,Yd)。通過(guò)公式(2)計(jì)算得到tmove時(shí)間內(nèi)UAV的最大移動(dòng)距離Dmax為
Dmax=vmax×tmove。
(2)
因此在tmove時(shí)間內(nèi),目的UAV節(jié)點(diǎn)的活動(dòng)范圍為以L(Xd,Yd)為中心、半徑為Dmax的圓內(nèi),根據(jù)公式(3)計(jì)算得到圓上的坐標(biāo)位置L(Xr,Yr)為
(3)
如圖2所示,L(Xu,Yu)和L(Xc,Yc)分別與圓心L(Xd,Yd)連為一條線段并將其延伸,這兩條線段與圓上相交4個(gè)點(diǎn),這4個(gè)點(diǎn)分別為距離UAV節(jié)點(diǎn)和控制節(jié)點(diǎn)的最遠(yuǎn)和最近坐標(biāo)點(diǎn)。
圖2 距離估計(jì)原理圖
根據(jù)UAV節(jié)點(diǎn)的通信范圍,可以得到相鄰節(jié)點(diǎn)之間平均距離間隔為Dinter,最后根據(jù)公式(4)計(jì)算得到距離為D的路徑上產(chǎn)生的時(shí)延d為
(4)
式中:PL為發(fā)送數(shù)據(jù)包的包長(zhǎng),Rtrans為發(fā)信機(jī)的發(fā)送速率,dprop、dproc和dque分別為UAV節(jié)點(diǎn)的傳播時(shí)延、處理時(shí)延和排隊(duì)時(shí)延。
2.1.2 基于距離估計(jì)的自適應(yīng)轉(zhuǎn)發(fā)策略具體流程
基于距離估計(jì)的自適應(yīng)轉(zhuǎn)發(fā)策略流程如圖3所示。
圖3 基于距離估計(jì)的自適應(yīng)轉(zhuǎn)發(fā)策略流程圖
基于距離估計(jì)的自適應(yīng)轉(zhuǎn)發(fā)策略的具體步驟如下:
Step1 判斷UAV節(jié)點(diǎn)的歷史流表項(xiàng)信息中是否有流表項(xiàng)缺失數(shù)據(jù)包匹配的流表項(xiàng),若有則執(zhí)行Step 2,若沒(méi)有則執(zhí)行方法1,控制節(jié)點(diǎn)向UAV節(jié)點(diǎn)下發(fā)到目的節(jié)點(diǎn)的流表項(xiàng)。
Step2 根據(jù)公式(5)和各節(jié)點(diǎn)坐標(biāo)計(jì)算得到UAV節(jié)點(diǎn)與控制節(jié)點(diǎn)之間距離Duc、控制節(jié)點(diǎn)到目的節(jié)點(diǎn)最小距離Dcr1、最大距離Dcr4,UAV節(jié)點(diǎn)到目的節(jié)點(diǎn)最小距離Dur2、最大距離Dur3:
(5)
Step3 將Step 2計(jì)算出的距離代入公式(4),計(jì)算得到方法1和方法2的最大、最小轉(zhuǎn)發(fā)時(shí)延,如公式(6)所示:
(6)
若滿足公式(7)表示方法1轉(zhuǎn)發(fā)的最大時(shí)延小于方法2轉(zhuǎn)發(fā)的最小時(shí)延,則選擇方法1轉(zhuǎn)發(fā);若滿足公式(8)表示方法1轉(zhuǎn)發(fā)的最小時(shí)延大于方法2轉(zhuǎn)發(fā)的最大時(shí)延,則選擇方法2轉(zhuǎn)發(fā),若都不滿足則執(zhí)行Step 4。
(dway2)min>(dway1)max,
(7)
(dway2)max<(dway1)min。
(8)
Step4 根據(jù)時(shí)刻Tremove目的節(jié)點(diǎn)的位置分別計(jì)算兩種方法的轉(zhuǎn)發(fā)時(shí)延,選擇時(shí)延最小的方法轉(zhuǎn)發(fā)。
針對(duì)1.2 問(wèn)題描述(2),本文提出了基于周期恢復(fù)的消息聚合策略。該策略核心思想是,通過(guò)聚合鄰居信息和流表項(xiàng)缺失處理過(guò)程的控制包減少網(wǎng)絡(luò)控制開(kāi)銷(xiāo),考慮到鄰居信息是周期性上傳,流表項(xiàng)缺失處理過(guò)程的控制包為非周期發(fā)送,在流表項(xiàng)缺失處理過(guò)程執(zhí)行后,控制包以多于一個(gè)原周期的間隔發(fā)送直到恢復(fù)到原周期。
2.2.1 Packet-in消息格式修改
本策略使用OpenFlow協(xié)議中的Packet-in消息傳輸鄰居信息、流表項(xiàng)缺失數(shù)據(jù)包和請(qǐng)求流表項(xiàng)消息,Packet-in消息格式如圖4所示。
圖4 Packet-in數(shù)據(jù)包結(jié)構(gòu)
在不觸發(fā)流表項(xiàng)缺失處理過(guò)程的情況下,UAV節(jié)點(diǎn)傳輸鄰居信息使用原有的Type值(Packet-in Type=10),如果觸發(fā)了流表項(xiàng)缺失處理過(guò)程,則使用新定義的聚合消息:聚合消息分為鄰居信息與流表項(xiàng)缺失數(shù)據(jù)包聚合(Type=74)和鄰居信息與請(qǐng)求流表項(xiàng)消息聚合(Type=138),由于聚合消息需要將鄰居信息與整個(gè)流表項(xiàng)缺失數(shù)據(jù)包(或128 B的字節(jié)頭[12])區(qū)分開(kāi),本策略將添加一個(gè)32 b的Position字段表示流表項(xiàng)缺失數(shù)據(jù)包在Data字段的位置。
2.2.2 基于周期恢復(fù)的消息聚合策略具體流程
基于周期恢復(fù)的消息聚合策略流程如圖5所示。
圖5 基于周期恢復(fù)的消息聚合策略流程圖
基于周期恢復(fù)的消息聚合策略的具體步驟如下:
Step1 UAV節(jié)點(diǎn)以周期T向控制節(jié)點(diǎn)發(fā)送鄰居信息,控制節(jié)點(diǎn)收到鄰居信息后向UAV節(jié)點(diǎn)發(fā)送ACK消息。
Step2 UAV節(jié)點(diǎn)判斷是否在超時(shí)時(shí)間內(nèi)收到來(lái)自于控制節(jié)點(diǎn)的ACK消息,若收到了則執(zhí)行Step 3,若沒(méi)有收到則執(zhí)行Step 1。
Step3 判斷是否有請(qǐng)求流表項(xiàng)消息或流表項(xiàng)缺失數(shù)據(jù)包需要發(fā)送,如果有則執(zhí)行Step 4,如果沒(méi)有則執(zhí)行Step 1。
Step4 聚合兩類(lèi)消息,立即發(fā)送。
Step5 發(fā)送聚合消息后,判斷發(fā)送時(shí)刻是否為周期T的整數(shù)倍,如果是則執(zhí)行Step 6;如果不是則下一個(gè)鄰居信息以上整數(shù)[T]+1時(shí)刻發(fā)送,然后再次執(zhí)行Step 5。
Step6 判斷發(fā)送次數(shù)是否等于周期數(shù),如果等于表示已經(jīng)恢復(fù)到原來(lái)的周期;如果不是則以1.5個(gè)原周期發(fā)送鄰居信息,然后再次執(zhí)行Step 6。
本文使用OPNET14.5仿真軟件對(duì)OpenFlow-EARM機(jī)制的性能進(jìn)行驗(yàn)證,在相同的網(wǎng)絡(luò)環(huán)境下,將OpenFlow-EARM機(jī)制與現(xiàn)有的最優(yōu)化鏈路狀態(tài)路由(Optimal Link State Routing,OLSR)協(xié)議和OpenFlow協(xié)議相比較。
主要的仿真參數(shù)如表1所示,仿真場(chǎng)景由一個(gè)控制節(jié)點(diǎn)和多個(gè)UAV節(jié)點(diǎn)組成,UAV節(jié)點(diǎn)均勻的分布在2 500 m×2 500 m的場(chǎng)景中。
表1 主要仿真參數(shù)
3.2.1 平均端到端時(shí)延
平均端到端時(shí)延是數(shù)據(jù)包成功地從源節(jié)點(diǎn)到達(dá)目的節(jié)點(diǎn)所花費(fèi)的平均時(shí)間??梢允褂霉?9)進(jìn)行計(jì)算:
(9)
式中:ATi是數(shù)據(jù)包到達(dá)時(shí)間,STi是數(shù)據(jù)包發(fā)送時(shí)間,n是數(shù)據(jù)包總數(shù)。
3.2.2 網(wǎng)絡(luò)控制開(kāi)銷(xiāo)
OLSR和OpenFlow采用不同控制方式,本文對(duì)于不同控制方式網(wǎng)絡(luò)的網(wǎng)絡(luò)控制開(kāi)銷(xiāo)統(tǒng)計(jì)方式有所不同,OLSR作為表驅(qū)動(dòng)協(xié)議,其網(wǎng)絡(luò)控制開(kāi)銷(xiāo)主要來(lái)自于路由表更新,為了與OpenFlow中的流表項(xiàng)缺失處理過(guò)程相對(duì)應(yīng),本文統(tǒng)計(jì)OLSR中路由表更新和缺失路由表項(xiàng)處理兩個(gè)部分的網(wǎng)絡(luò)控制開(kāi)銷(xiāo);OpenFlow由于其控制平面和數(shù)據(jù)平面分離,流表更新過(guò)程中網(wǎng)絡(luò)控制開(kāi)銷(xiāo)來(lái)自于UAV節(jié)點(diǎn)發(fā)出的HELLO消息、UAV節(jié)點(diǎn)上傳鄰居信息和控制節(jié)點(diǎn)下發(fā)流表這三個(gè)過(guò)程,與OLSR相對(duì)應(yīng),本文統(tǒng)計(jì)OpenFlow協(xié)議中流表更新和流表項(xiàng)缺失處理的網(wǎng)絡(luò)控制開(kāi)銷(xiāo)。
3.2.3 丟包率
丟包率(Packet Loss Rate,PLR)為丟失數(shù)據(jù)包數(shù)量占發(fā)送數(shù)據(jù)包數(shù)量的比率,如公式(10)所示:
(10)
式中:PT為源節(jié)點(diǎn)發(fā)送的數(shù)據(jù)包個(gè)數(shù),PR為目的節(jié)點(diǎn)成功接收的數(shù)據(jù)包個(gè)數(shù)。
3.3.1 平均端到端時(shí)延
圖6所示為平均端到端時(shí)延。由圖可知,隨著節(jié)點(diǎn)數(shù)量的增多,平均端到端時(shí)延逐漸增大。這是因?yàn)閳?chǎng)景中的節(jié)點(diǎn)數(shù)更加密集,端到端的跳數(shù)越多,場(chǎng)景的范圍較小,因此傳播時(shí)延對(duì)平均端到端時(shí)延的影響較少。仿真結(jié)果表明,在節(jié)點(diǎn)數(shù)為25時(shí),OpenFlow與OLSR相比時(shí)延降低了2.6%,OpenFlow-EARM與OpenFlow相比時(shí)延降低了8.3%,主要原因有如下三點(diǎn):一是OLSR節(jié)點(diǎn)在收到?jīng)]有路由表項(xiàng)的數(shù)據(jù)包時(shí),節(jié)點(diǎn)會(huì)丟棄數(shù)據(jù)包或緩存數(shù)據(jù)包等待下一次路由表更新后再查表轉(zhuǎn)發(fā),OLSR需要等待至少一個(gè)更新周期才能轉(zhuǎn)發(fā)數(shù)據(jù)包,因此帶來(lái)的時(shí)延較大;二是OpenFlow在節(jié)點(diǎn)收到?jīng)]有流表項(xiàng)的數(shù)據(jù)包時(shí),采用1.2 問(wèn)題描述(1)中的兩種方法,這兩種方法主動(dòng)處理流表項(xiàng)缺失數(shù)據(jù)包,相比于OLSR的時(shí)延更低;三是OpenFlow-EARM機(jī)制采用距離估計(jì)選擇時(shí)延最低的轉(zhuǎn)發(fā)方式,相比于OpenFlow的較為單一的轉(zhuǎn)發(fā)方式,OpenFlow-EARM自適應(yīng)選擇時(shí)延最低的方式轉(zhuǎn)發(fā),轉(zhuǎn)發(fā)流表項(xiàng)缺失數(shù)據(jù)包所花費(fèi)的時(shí)間更短,因此平均端到端時(shí)延更短。值得注意的是,在節(jié)點(diǎn)數(shù)量為20時(shí),OpenFlow-EARM相比于OpenFlow時(shí)延只降低了3.4%,這是因?yàn)榫嚯x估計(jì)會(huì)帶來(lái)一定的誤差,但是從整體來(lái)說(shuō),OpenFlow-EARM的平均端到端時(shí)延低于OpenFlow。
3.3.2 網(wǎng)絡(luò)控制開(kāi)銷(xiāo)
圖7所示為網(wǎng)絡(luò)控制開(kāi)銷(xiāo)。由圖可知,隨著節(jié)點(diǎn)數(shù)的增多網(wǎng)絡(luò)控制開(kāi)銷(xiāo)逐漸增大。這是因?yàn)榫W(wǎng)絡(luò)拓?fù)浣⑦^(guò)程需要收集信息的節(jié)點(diǎn)數(shù)增多。在25節(jié)點(diǎn)情況下OpenFlow相比于OLSR控制開(kāi)銷(xiāo)降低了49.6%,主要原因是OLSR協(xié)議由于其分布式結(jié)構(gòu),需要每個(gè)節(jié)點(diǎn)收集拓?fù)湫畔⒉?gòu)建全網(wǎng)拓?fù)洌瑯?gòu)建過(guò)程中每個(gè)節(jié)點(diǎn)需要發(fā)送HELLO消息建立鄰居表和MPR節(jié)點(diǎn)廣播TC消息,因此隨著節(jié)點(diǎn)的增加,網(wǎng)絡(luò)控制開(kāi)銷(xiāo)也急劇增加;OpenFlow由于其集中式控制消除了OLSR協(xié)議所使用的泛洪,因此,使用OpenFlow減少了轉(zhuǎn)發(fā)的信息,從而減少了網(wǎng)絡(luò)控制開(kāi)銷(xiāo)。OpenFlow-EARM將處理流表項(xiàng)缺失過(guò)程的控制包與UAV節(jié)點(diǎn)鄰居信息相聚合,雖然聚合的數(shù)據(jù)包相比于原有的Packet-in多了Position字段,但是減少了控制數(shù)據(jù)包的發(fā)送次數(shù),Packet-in數(shù)據(jù)包包頭所帶來(lái)的控制開(kāi)銷(xiāo)遠(yuǎn)大于Position字段,因此OpenFlow-EARM的網(wǎng)絡(luò)控制開(kāi)銷(xiāo)比OpenFlow低,節(jié)點(diǎn)數(shù)為25時(shí),相比于OpenFlow,OpenFlow-EARM控制開(kāi)銷(xiāo)只降低了1.3%,其原因是隨著節(jié)點(diǎn)數(shù)的增多,相比于聚合消息減少的網(wǎng)絡(luò)控制開(kāi)銷(xiāo),網(wǎng)絡(luò)中出現(xiàn)節(jié)點(diǎn)流表項(xiàng)缺失的情況增多帶來(lái)的網(wǎng)絡(luò)控制開(kāi)銷(xiāo)更大,因此節(jié)點(diǎn)數(shù)量越多,OpenFlow-EARM的網(wǎng)絡(luò)控制開(kāi)銷(xiāo)越接近OpenFlow的網(wǎng)絡(luò)控制開(kāi)銷(xiāo)。
圖7 網(wǎng)絡(luò)控制開(kāi)銷(xiāo)
3.3.3 丟包率
圖8所示為丟包率。由圖可知,隨著節(jié)點(diǎn)數(shù)量的增加,丟包率逐漸增大。這是因?yàn)楣?jié)點(diǎn)數(shù)量增多,導(dǎo)致數(shù)據(jù)消息和控制消息發(fā)送的數(shù)量增多,從而導(dǎo)致無(wú)線信道中碰撞概率的增大。節(jié)點(diǎn)數(shù)為25時(shí),OpenFlow相比于OLSR丟包率降低了6.4%,其原因是OLSR在數(shù)據(jù)包沒(méi)有路由的情況下,UAV節(jié)點(diǎn)會(huì)將數(shù)據(jù)包直接丟棄或者等待下一次的更新,然而OpenFlow中數(shù)據(jù)包沒(méi)有匹配的流表項(xiàng)會(huì)立即向控制節(jié)點(diǎn)報(bào)告,因此OpenFlow這種主動(dòng)式的處理過(guò)程減少了丟包的概率。節(jié)點(diǎn)數(shù)為25時(shí),OpenFlow-EARM相比于OpenFlow丟包率降低了2.1%,其原因是鄰居信息上傳和流表項(xiàng)缺失處理過(guò)程是同時(shí)進(jìn)行的,由于OpenFlow-EARM機(jī)制采用了消息聚合的方式,降低了兩種過(guò)程所產(chǎn)生的無(wú)線碰撞的概率,因此OpenFlow-EARM的丟包率低于OpenFlow。
圖8 丟包率
本文針對(duì)目前SD-UANET中流表項(xiàng)缺失處理過(guò)程中轉(zhuǎn)發(fā)數(shù)據(jù)包時(shí)延高、網(wǎng)絡(luò)控制開(kāi)銷(xiāo)大和無(wú)線碰撞的問(wèn)題,提出了OpenFlow-EARM機(jī)制。新機(jī)制根據(jù)刪除流表項(xiàng)的時(shí)刻值和UAV節(jié)點(diǎn)最大移動(dòng)速度估算兩種轉(zhuǎn)發(fā)流表項(xiàng)缺失數(shù)據(jù)包所需要的時(shí)延,以此來(lái)選擇時(shí)延最低的轉(zhuǎn)發(fā)方式,降低了傳輸數(shù)據(jù)包的時(shí)延,并且在處理流表項(xiàng)缺失的過(guò)程中利用消息聚合的方法減少數(shù)據(jù)包的發(fā)送次數(shù),從而減少網(wǎng)絡(luò)控制開(kāi)銷(xiāo),然后利用一種周期恢復(fù)的策略將鄰居信息上傳的數(shù)據(jù)包的發(fā)送間隔恢復(fù)到原周期。仿真結(jié)果表明,OpenFlow-EARM機(jī)制在平均端到端時(shí)延、網(wǎng)絡(luò)控制開(kāi)銷(xiāo)和丟包率等方面優(yōu)于對(duì)比的協(xié)議。未來(lái)的工作將深入研究控制節(jié)點(diǎn)與UAV節(jié)點(diǎn)之間的控制消息傳輸問(wèn)題。