嚴嘉正,馬占海,薛曉慧
(1.國網青海省電力公司信息通信公司,青海西寧 810008;2.國網青海省電力公司,青海西寧 810008)
車聯網通常通過無線的方式進行數據傳輸,但是由于汽車的運行速度較快,導致數據傳輸出現了延時問題。因此,數據實時傳輸成為車聯網的一個核心問題,而一個有效的路由協議就顯得尤為重要。目前,國內外學者對車聯網的路由算法進行了深入的研究。目前提出的基于5G 蜂窩網輔助的數據傳輸方法,利用5G 蜂窩網輔助技術,對車聯網中的信息進行了分類。為了減少通信鏈路中斷率,使用傳輸時延不靈敏的總線輔助路由算法,傳輸車聯網數據[1];還有學者提出的基于線程池技術的數據傳輸方法,根據基于空間數據傳輸的系統工作流程,采用線性化的方法將其分為四個部分,并分別計算了線程池的數目、建立了相應的同步傳輸過程的邏輯順序,通過使用空間數據加密的同步算法來實現網絡優化,加快數據同步傳輸[2]。然而,在車聯網中,當采用磁盤作為數據同步設備時,會出現數據同步傳輸時間長的問題[3]。針對這一問題,提出了基于目錄哈希樹的車聯網數據同步傳輸方法仿真研究。
車聯網數據監控平臺自助分析監測,包括以下步驟:
步驟1:抽取車聯網數據監控平臺所提供的地圖信息,主要包括社會和環境信息[4-5];
步驟2:對比車聯網運行數據的時間特性與群體特性;
步驟3:設定條件,可自動搜尋滿足要求的資料;
步驟4:根據分析的地區和數據特征,自動生成推薦報告。
為了決定同步發送的時間,必須進一步分析推薦報告的邏輯處理時間,處理邏輯時序圖如圖1所示。

圖1 處理邏輯時序圖
在數據同步時隊列中會出現工作混亂的問題,從而造成了程序上的錯誤,這是由于主線程和工作線程在選擇隊列任務時會產生混亂。所以,利用關鍵區域技術,可以同時讀取和寫入兩個線程的操作[6-7]。主線程必須時刻了解已知的任務進展情況,但若直接監控主線程,則一般會鎖定主線程[8]。同時采用查詢線程的方式,對其進行監測,并向主機反饋監測結果,以此保證同步傳輸效率。
以上述監測的車聯網數據監控平臺自助分析結果為基礎,構建數據同步傳輸的目錄哈希樹。因為子節點的哈希值需要利用父節點哈希值決定,所以結合深度遍歷算法,依次遍歷目錄樹,以此計算子節點的哈希值[9]。然后統計全部計算結果,再回溯到父節點,完成目錄哈希樹構建。具體步驟如下所示。
步驟1:指定一個目錄的開始路徑,初始化根的查詢點,然后將其壓入stack。此時的stack 是一個目錄遍歷輔助容器,通過該容器確定目錄的開始路徑[10];
步驟2:循環檢查stack 的狀態,如果stack 不是空的,則執行步驟3。如果stack 是空,則表示未發現任何可以進行哈希運算的節點,這表示哈希樹已被構造。返回到目錄哈希樹的根位置,并從這個循環中退出[11];
步驟3:讀取棧頂找點,當查詢點的flag 值是0時,代表了該節點完成首次掃描。然后判斷是否存在子節點,并計算哈希值[12]。此時,將flag 值更改為1,執行步驟4。如果節點的flag 值是1,說明這個節點已經進行了二次掃描,并且已經通過了一個目錄,說明子節點尋找哈希值,繼續執行步驟5;
步驟4:在指定的路徑下遍歷目錄,若路徑類型是檔案形式,則停止遍歷;若路徑類型是目錄形式,則依序初始化檔案或目錄父節點,并將節點依次壓入stack 中[13];
步驟5:計算節點的哈希值,當一個節點是一個文件或者一個空文件夾時,依據其文件名稱和上次的修改時間來計算哈希值,然后插入到哈希列表中。若N個資料夾為資料夾,則在查詢點的哈希清單上按順序合并清單中的散列值。通過運算產生的哈希拼接字串,獲得尋點的哈希值[14]。當計算結束時,從stack 中刪除錯誤的位置,由此構建一個完整的目錄哈希樹。
目錄哈希樹控制結構造成客戶端不能進行直接交互。因此,要實現分布式的目錄同步,就必須在客戶端和中央節點(云)間進行雙向同步,即客戶端將本地文件的更改定時與中央節點進行同步[15]。同時,分析了中心節點上其他客戶端的同步改變,并在當地進行牽引,使其他客戶端的目錄拷貝同步[16]。圖2 為基于目錄哈希樹的數據同步傳輸流程。

圖2 基于目錄哈希樹的數據同步傳輸流程
根據圖2 所示的同步傳輸流程,設計了車輛道路切換、緊急路況兩種情況下的數據同步傳輸方式。
2.2.1 車輛道路切換情況下的數據同步傳輸
在同一道路上,有不同方向的交通工具。在作決策時,交通節點和中繼節點必須了解前方同一條道路上車輛的運行情況,而另一條道路上的交通流則會嚴重影響到其判斷。所以,按照車輛的行進方向以及道路的不同,將同一道路、同一方向的轉接位置作為一個節點,從而避免無關干擾,提高數據通信的可靠性。
車輛道路切換情況下的數據同步傳輸步驟為:
通信雙方A 和B 通過某條線路獲取密鑰公用參數,則在所選路徑上向通信方B 傳輸車聯網數據,該過程需要進行同步數據傳輸加密處理:當通信一方接收到車聯網數據后,根據隨機數判斷數據是否重放,如果是,則直接剔除,反之,則需通過對方公鑰重新簽名并核實。
通信方A 通過數據密鑰加密傳輸車聯網數據,并假設需要傳輸的數據包為m,該數據包經過加密處理后,得到的數據密文為:
式中,nk表示第k個需要加密的數據。
發送方將密文分解成i個子數據包,同時在數據包中添加相關參數,則:
式中,s表示會話序號;r表示塊表示;ti表示時間戳。通信方B 接收的車聯網數據流程:根據會話序號認證空間數據,通過認證結果根據塊標識,對數據包進行解碼處理,并恢復成明文數據包狀態,實現車輛道路切換情況下的數據同步傳輸。
2.2.2 緊急路況情況下的數據同步傳輸
在車輛行駛過程中,容易出現車輛突然發生故障、事故等特殊情況的問題,基于此,設計的緊急路況下的數據同步傳輸步驟如下。
為了抑制車聯網數據傳輸受到威脅,需識別威脅目標等級。如果使用xi表示威脅目標,那么當j個目標同時發起攻擊時,需要根據選定的參數屬性,使用量化函數手段,將威脅目標進行規格化處理,并將其轉換為量化矩陣形式。
假設任意目標針對不同威脅等級對應隸屬度矩陣,將威脅級別隸屬度作為權重,能夠求取威脅目標和等級之間的差別,使用加權歐氏距離,可表示為:
式中,vih表示威脅目標xi的h級別隸屬度;qjh表示屬性j隸屬威脅h級別的規范函數;wj表示屬性j的權重。
按照最小二乘法原則,式(3)的計算結果是最小的,為了獲取最佳隸屬度矩陣和規范矩陣,構建威脅目標識別模型,如式(4)所示:
通過式(4)可以快速判斷威脅數據的相關特性,進而實現威脅數據的精準識別。
為了驗證基于目錄哈希樹的車聯網數據同步傳輸方法仿真的實用性,通過KDD-CUP99 威脅測試數據源,利用Matlab 仿真工具,在XP 操作系統中,使用2.6 GHz 的處理器進行仿真操作。圖3 為車聯網數據傳輸異常檢測界面。

圖3 車聯網數據傳輸異常檢測界面
通過圖3 確定威脅目標,并從KDD-CUP99 威脅測試數據源中任意抽取五個數據集進行仿真測試。
仿真模擬雙向道路交通路況、T 型道路交通路況和十字道路交通路況,在這三種路況下,分別使用基于5G 蜂窩網輔助的數據傳輸方法、基于線程池技術的數據傳輸方法和基于目錄哈希樹的傳輸方法,對比分析仿真結果。
3.2.1 雙向道路交通路況模擬
在雙向道路交通模擬路況下,三種方法的數據傳輸時間如表1 所示。

表1 雙向道路交通路況下三種方法數據傳輸時間
由表1 可知,使用基于5G 蜂窩網輔助的數據傳輸方法和基于線程池技術的數據傳輸方法,均比基于目錄哈希樹的傳輸方法所耗費時間要長,最大時間差分別為2.98×10-3s 和7.23×10-3s。
3.2.2 T型道路交通路況模擬
在T 型道路交通模擬路況下,三種方法的數據傳輸時間如表2 所示。

表2 T型道路交通路況下三種方法數據傳輸時間
由表2 可知,使用基于5G 蜂窩網輔助的數據傳輸方法和基于線程池技術的數據傳輸方法,均比基于目錄哈希樹的傳輸方法所耗費時間要長,最大時間差分別為16.35×10-3s 和13.90×10-3s。
3.2.3 十字道路交通路況模擬
在十字道路交通模擬路況下,三種方法的數據傳輸時間如表3 所示。

表3 十字道路交通路況下三種方法數據傳輸時間
由表3 可知,使用基于5G 蜂窩網輔助的數據傳輸方法和基于線程池技術的數據傳輸方法,均比基于目錄哈希樹的傳輸方法所耗費時間要長,最大時間差分別為6.72×10-3s 和3.98×10-3s。
通過上述分析結果可知,使用基于目錄哈希樹的傳輸方法,車聯網數據同步傳輸時間較短。
為了提高車聯網數據同步傳輸效率,提出了基于目錄哈希樹的車聯網數據同步傳輸方法仿真,通過構建威脅目標識別模型,抑制車聯網數據傳輸威脅。通過仿真實驗,驗證了該方法具有高效傳輸效果。同時,所提出的仿真方法也可用于其他分布式數據的同步、沖突檢測。下一步研究將探討在雙向同步傳輸時增加備份的可行性,以減少對網絡帶寬的需求,并提高傳輸速度。