嚴(yán)嘉正,馬占海,薛曉慧
(1.國(guó)網(wǎng)青海省電力公司信息通信公司,青海西寧 810008;2.國(guó)網(wǎng)青海省電力公司,青海西寧 810008)
車聯(lián)網(wǎng)通常通過(guò)無(wú)線的方式進(jìn)行數(shù)據(jù)傳輸,但是由于汽車的運(yùn)行速度較快,導(dǎo)致數(shù)據(jù)傳輸出現(xiàn)了延時(shí)問(wèn)題。因此,數(shù)據(jù)實(shí)時(shí)傳輸成為車聯(lián)網(wǎng)的一個(gè)核心問(wèn)題,而一個(gè)有效的路由協(xié)議就顯得尤為重要。目前,國(guó)內(nèi)外學(xué)者對(duì)車聯(lián)網(wǎng)的路由算法進(jìn)行了深入的研究。目前提出的基于5G 蜂窩網(wǎng)輔助的數(shù)據(jù)傳輸方法,利用5G 蜂窩網(wǎng)輔助技術(shù),對(duì)車聯(lián)網(wǎng)中的信息進(jìn)行了分類。為了減少通信鏈路中斷率,使用傳輸時(shí)延不靈敏的總線輔助路由算法,傳輸車聯(lián)網(wǎng)數(shù)據(jù)[1];還有學(xué)者提出的基于線程池技術(shù)的數(shù)據(jù)傳輸方法,根據(jù)基于空間數(shù)據(jù)傳輸?shù)南到y(tǒng)工作流程,采用線性化的方法將其分為四個(gè)部分,并分別計(jì)算了線程池的數(shù)目、建立了相應(yīng)的同步傳輸過(guò)程的邏輯順序,通過(guò)使用空間數(shù)據(jù)加密的同步算法來(lái)實(shí)現(xiàn)網(wǎng)絡(luò)優(yōu)化,加快數(shù)據(jù)同步傳輸[2]。然而,在車聯(lián)網(wǎng)中,當(dāng)采用磁盤作為數(shù)據(jù)同步設(shè)備時(shí),會(huì)出現(xiàn)數(shù)據(jù)同步傳輸時(shí)間長(zhǎng)的問(wèn)題[3]。針對(duì)這一問(wèn)題,提出了基于目錄哈希樹(shù)的車聯(lián)網(wǎng)數(shù)據(jù)同步傳輸方法仿真研究。
車聯(lián)網(wǎng)數(shù)據(jù)監(jiān)控平臺(tái)自助分析監(jiān)測(cè),包括以下步驟:
步驟1:抽取車聯(lián)網(wǎng)數(shù)據(jù)監(jiān)控平臺(tái)所提供的地圖信息,主要包括社會(huì)和環(huán)境信息[4-5];
步驟2:對(duì)比車聯(lián)網(wǎng)運(yùn)行數(shù)據(jù)的時(shí)間特性與群體特性;
步驟3:設(shè)定條件,可自動(dòng)搜尋滿足要求的資料;
步驟4:根據(jù)分析的地區(qū)和數(shù)據(jù)特征,自動(dòng)生成推薦報(bào)告。
為了決定同步發(fā)送的時(shí)間,必須進(jìn)一步分析推薦報(bào)告的邏輯處理時(shí)間,處理邏輯時(shí)序圖如圖1所示。
圖1 處理邏輯時(shí)序圖
在數(shù)據(jù)同步時(shí)隊(duì)列中會(huì)出現(xiàn)工作混亂的問(wèn)題,從而造成了程序上的錯(cuò)誤,這是由于主線程和工作線程在選擇隊(duì)列任務(wù)時(shí)會(huì)產(chǎn)生混亂。所以,利用關(guān)鍵區(qū)域技術(shù),可以同時(shí)讀取和寫入兩個(gè)線程的操作[6-7]。主線程必須時(shí)刻了解已知的任務(wù)進(jìn)展情況,但若直接監(jiān)控主線程,則一般會(huì)鎖定主線程[8]。同時(shí)采用查詢線程的方式,對(duì)其進(jìn)行監(jiān)測(cè),并向主機(jī)反饋監(jiān)測(cè)結(jié)果,以此保證同步傳輸效率。
以上述監(jiān)測(cè)的車聯(lián)網(wǎng)數(shù)據(jù)監(jiān)控平臺(tái)自助分析結(jié)果為基礎(chǔ),構(gòu)建數(shù)據(jù)同步傳輸?shù)哪夸浌?shù)。因?yàn)樽庸?jié)點(diǎn)的哈希值需要利用父節(jié)點(diǎn)哈希值決定,所以結(jié)合深度遍歷算法,依次遍歷目錄樹(shù),以此計(jì)算子節(jié)點(diǎn)的哈希值[9]。然后統(tǒng)計(jì)全部計(jì)算結(jié)果,再回溯到父節(jié)點(diǎn),完成目錄哈希樹(shù)構(gòu)建。具體步驟如下所示。
步驟1:指定一個(gè)目錄的開(kāi)始路徑,初始化根的查詢點(diǎn),然后將其壓入stack。此時(shí)的stack 是一個(gè)目錄遍歷輔助容器,通過(guò)該容器確定目錄的開(kāi)始路徑[10];
步驟2:循環(huán)檢查stack 的狀態(tài),如果stack 不是空的,則執(zhí)行步驟3。如果stack 是空,則表示未發(fā)現(xiàn)任何可以進(jìn)行哈希運(yùn)算的節(jié)點(diǎn),這表示哈希樹(shù)已被構(gòu)造。返回到目錄哈希樹(shù)的根位置,并從這個(gè)循環(huán)中退出[11];
步驟3:讀取棧頂找點(diǎn),當(dāng)查詢點(diǎn)的flag 值是0時(shí),代表了該節(jié)點(diǎn)完成首次掃描。然后判斷是否存在子節(jié)點(diǎn),并計(jì)算哈希值[12]。此時(shí),將flag 值更改為1,執(zhí)行步驟4。如果節(jié)點(diǎn)的flag 值是1,說(shuō)明這個(gè)節(jié)點(diǎn)已經(jīng)進(jìn)行了二次掃描,并且已經(jīng)通過(guò)了一個(gè)目錄,說(shuō)明子節(jié)點(diǎn)尋找哈希值,繼續(xù)執(zhí)行步驟5;
步驟4:在指定的路徑下遍歷目錄,若路徑類型是檔案形式,則停止遍歷;若路徑類型是目錄形式,則依序初始化檔案或目錄父節(jié)點(diǎn),并將節(jié)點(diǎn)依次壓入stack 中[13];
步驟5:計(jì)算節(jié)點(diǎn)的哈希值,當(dāng)一個(gè)節(jié)點(diǎn)是一個(gè)文件或者一個(gè)空文件夾時(shí),依據(jù)其文件名稱和上次的修改時(shí)間來(lái)計(jì)算哈希值,然后插入到哈希列表中。若N個(gè)資料夾為資料夾,則在查詢點(diǎn)的哈希清單上按順序合并清單中的散列值。通過(guò)運(yùn)算產(chǎn)生的哈希拼接字串,獲得尋點(diǎn)的哈希值[14]。當(dāng)計(jì)算結(jié)束時(shí),從stack 中刪除錯(cuò)誤的位置,由此構(gòu)建一個(gè)完整的目錄哈希樹(shù)。
目錄哈希樹(shù)控制結(jié)構(gòu)造成客戶端不能進(jìn)行直接交互。因此,要實(shí)現(xiàn)分布式的目錄同步,就必須在客戶端和中央節(jié)點(diǎn)(云)間進(jìn)行雙向同步,即客戶端將本地文件的更改定時(shí)與中央節(jié)點(diǎn)進(jìn)行同步[15]。同時(shí),分析了中心節(jié)點(diǎn)上其他客戶端的同步改變,并在當(dāng)?shù)剡M(jìn)行牽引,使其他客戶端的目錄拷貝同步[16]。圖2 為基于目錄哈希樹(shù)的數(shù)據(jù)同步傳輸流程。
圖2 基于目錄哈希樹(shù)的數(shù)據(jù)同步傳輸流程
根據(jù)圖2 所示的同步傳輸流程,設(shè)計(jì)了車輛道路切換、緊急路況兩種情況下的數(shù)據(jù)同步傳輸方式。
2.2.1 車輛道路切換情況下的數(shù)據(jù)同步傳輸
在同一道路上,有不同方向的交通工具。在作決策時(shí),交通節(jié)點(diǎn)和中繼節(jié)點(diǎn)必須了解前方同一條道路上車輛的運(yùn)行情況,而另一條道路上的交通流則會(huì)嚴(yán)重影響到其判斷。所以,按照車輛的行進(jìn)方向以及道路的不同,將同一道路、同一方向的轉(zhuǎn)接位置作為一個(gè)節(jié)點(diǎn),從而避免無(wú)關(guān)干擾,提高數(shù)據(jù)通信的可靠性。
車輛道路切換情況下的數(shù)據(jù)同步傳輸步驟為:
通信雙方A 和B 通過(guò)某條線路獲取密鑰公用參數(shù),則在所選路徑上向通信方B 傳輸車聯(lián)網(wǎng)數(shù)據(jù),該過(guò)程需要進(jìn)行同步數(shù)據(jù)傳輸加密處理:當(dāng)通信一方接收到車聯(lián)網(wǎng)數(shù)據(jù)后,根據(jù)隨機(jī)數(shù)判斷數(shù)據(jù)是否重放,如果是,則直接剔除,反之,則需通過(guò)對(duì)方公鑰重新簽名并核實(shí)。
通信方A 通過(guò)數(shù)據(jù)密鑰加密傳輸車聯(lián)網(wǎng)數(shù)據(jù),并假設(shè)需要傳輸?shù)臄?shù)據(jù)包為m,該數(shù)據(jù)包經(jīng)過(guò)加密處理后,得到的數(shù)據(jù)密文為:
式中,nk表示第k個(gè)需要加密的數(shù)據(jù)。
發(fā)送方將密文分解成i個(gè)子數(shù)據(jù)包,同時(shí)在數(shù)據(jù)包中添加相關(guān)參數(shù),則:
式中,s表示會(huì)話序號(hào);r表示塊表示;ti表示時(shí)間戳。通信方B 接收的車聯(lián)網(wǎng)數(shù)據(jù)流程:根據(jù)會(huì)話序號(hào)認(rèn)證空間數(shù)據(jù),通過(guò)認(rèn)證結(jié)果根據(jù)塊標(biāo)識(shí),對(duì)數(shù)據(jù)包進(jìn)行解碼處理,并恢復(fù)成明文數(shù)據(jù)包狀態(tài),實(shí)現(xiàn)車輛道路切換情況下的數(shù)據(jù)同步傳輸。
2.2.2 緊急路況情況下的數(shù)據(jù)同步傳輸
在車輛行駛過(guò)程中,容易出現(xiàn)車輛突然發(fā)生故障、事故等特殊情況的問(wèn)題,基于此,設(shè)計(jì)的緊急路況下的數(shù)據(jù)同步傳輸步驟如下。
為了抑制車聯(lián)網(wǎng)數(shù)據(jù)傳輸受到威脅,需識(shí)別威脅目標(biāo)等級(jí)。如果使用xi表示威脅目標(biāo),那么當(dāng)j個(gè)目標(biāo)同時(shí)發(fā)起攻擊時(shí),需要根據(jù)選定的參數(shù)屬性,使用量化函數(shù)手段,將威脅目標(biāo)進(jìn)行規(guī)格化處理,并將其轉(zhuǎn)換為量化矩陣形式。
假設(shè)任意目標(biāo)針對(duì)不同威脅等級(jí)對(duì)應(yīng)隸屬度矩陣,將威脅級(jí)別隸屬度作為權(quán)重,能夠求取威脅目標(biāo)和等級(jí)之間的差別,使用加權(quán)歐氏距離,可表示為:
式中,vih表示威脅目標(biāo)xi的h級(jí)別隸屬度;qjh表示屬性j隸屬威脅h級(jí)別的規(guī)范函數(shù);wj表示屬性j的權(quán)重。
按照最小二乘法原則,式(3)的計(jì)算結(jié)果是最小的,為了獲取最佳隸屬度矩陣和規(guī)范矩陣,構(gòu)建威脅目標(biāo)識(shí)別模型,如式(4)所示:
通過(guò)式(4)可以快速判斷威脅數(shù)據(jù)的相關(guān)特性,進(jìn)而實(shí)現(xiàn)威脅數(shù)據(jù)的精準(zhǔn)識(shí)別。
為了驗(yàn)證基于目錄哈希樹(shù)的車聯(lián)網(wǎng)數(shù)據(jù)同步傳輸方法仿真的實(shí)用性,通過(guò)KDD-CUP99 威脅測(cè)試數(shù)據(jù)源,利用Matlab 仿真工具,在XP 操作系統(tǒng)中,使用2.6 GHz 的處理器進(jìn)行仿真操作。圖3 為車聯(lián)網(wǎng)數(shù)據(jù)傳輸異常檢測(cè)界面。
圖3 車聯(lián)網(wǎng)數(shù)據(jù)傳輸異常檢測(cè)界面
通過(guò)圖3 確定威脅目標(biāo),并從KDD-CUP99 威脅測(cè)試數(shù)據(jù)源中任意抽取五個(gè)數(shù)據(jù)集進(jìn)行仿真測(cè)試。
仿真模擬雙向道路交通路況、T 型道路交通路況和十字道路交通路況,在這三種路況下,分別使用基于5G 蜂窩網(wǎng)輔助的數(shù)據(jù)傳輸方法、基于線程池技術(shù)的數(shù)據(jù)傳輸方法和基于目錄哈希樹(shù)的傳輸方法,對(duì)比分析仿真結(jié)果。
3.2.1 雙向道路交通路況模擬
在雙向道路交通模擬路況下,三種方法的數(shù)據(jù)傳輸時(shí)間如表1 所示。
表1 雙向道路交通路況下三種方法數(shù)據(jù)傳輸時(shí)間
由表1 可知,使用基于5G 蜂窩網(wǎng)輔助的數(shù)據(jù)傳輸方法和基于線程池技術(shù)的數(shù)據(jù)傳輸方法,均比基于目錄哈希樹(shù)的傳輸方法所耗費(fèi)時(shí)間要長(zhǎng),最大時(shí)間差分別為2.98×10-3s 和7.23×10-3s。
3.2.2 T型道路交通路況模擬
在T 型道路交通模擬路況下,三種方法的數(shù)據(jù)傳輸時(shí)間如表2 所示。
表2 T型道路交通路況下三種方法數(shù)據(jù)傳輸時(shí)間
由表2 可知,使用基于5G 蜂窩網(wǎng)輔助的數(shù)據(jù)傳輸方法和基于線程池技術(shù)的數(shù)據(jù)傳輸方法,均比基于目錄哈希樹(shù)的傳輸方法所耗費(fèi)時(shí)間要長(zhǎng),最大時(shí)間差分別為16.35×10-3s 和13.90×10-3s。
3.2.3 十字道路交通路況模擬
在十字道路交通模擬路況下,三種方法的數(shù)據(jù)傳輸時(shí)間如表3 所示。
表3 十字道路交通路況下三種方法數(shù)據(jù)傳輸時(shí)間
由表3 可知,使用基于5G 蜂窩網(wǎng)輔助的數(shù)據(jù)傳輸方法和基于線程池技術(shù)的數(shù)據(jù)傳輸方法,均比基于目錄哈希樹(shù)的傳輸方法所耗費(fèi)時(shí)間要長(zhǎng),最大時(shí)間差分別為6.72×10-3s 和3.98×10-3s。
通過(guò)上述分析結(jié)果可知,使用基于目錄哈希樹(shù)的傳輸方法,車聯(lián)網(wǎng)數(shù)據(jù)同步傳輸時(shí)間較短。
為了提高車聯(lián)網(wǎng)數(shù)據(jù)同步傳輸效率,提出了基于目錄哈希樹(shù)的車聯(lián)網(wǎng)數(shù)據(jù)同步傳輸方法仿真,通過(guò)構(gòu)建威脅目標(biāo)識(shí)別模型,抑制車聯(lián)網(wǎng)數(shù)據(jù)傳輸威脅。通過(guò)仿真實(shí)驗(yàn),驗(yàn)證了該方法具有高效傳輸效果。同時(shí),所提出的仿真方法也可用于其他分布式數(shù)據(jù)的同步、沖突檢測(cè)。下一步研究將探討在雙向同步傳輸時(shí)增加備份的可行性,以減少對(duì)網(wǎng)絡(luò)帶寬的需求,并提高傳輸速度。