劉子源 胡永慶 楊含 秦廣軍 戴慶龍



摘 要:目前,研究人員著眼于車載邊緣計算(vehicular edge computing,VEC)環境下高效應用和資源調度策略的研究,然而,這些應用和策略的實機驗證往往受限于成本和時間,無法快速有效地進行。邊緣/霧計算仿真器如iFogSim2的出現降低了實驗成本,然而,高速移動車輛的連接切換和資源分配需求對邊緣/霧計算仿真器在VEC下應用提出了挑戰。因此,改進了iFogSim2,設計了支持高速移動的VEC環境仿真器VECSim。集成開源基站數據并構建車輛軌跡數據集,以便研究人員專注于資源分配策略。首先,為了簡化實驗步驟,改進了移動軌跡數據解析模塊并適配了微觀交通仿真軟件Simulation of Urban Mobility (SUMO)生成的車輛軌跡數據。其次,基于分布式數據流模型對VEC下的分布式應用進行建模,并提供了服務遷移基準策略算法。此外,VECSim還引入了時間性能優化方法,通過并行化操作,加速仿真事件處理,從而提高了仿真工具的時間性能。實驗表明,相比于iFogSim2中同類的服務遷移算法,提出的服務遷移算法在大規模機動車軌跡數據集驗證下表現出良好的穩定性,時間性能優化方法在執行時間上取得了5.3%的性能提升。代碼開源地址:https://github.com/LiuZi-yuan-CS/VECSim。
關鍵詞:車載邊緣計算;邊緣計算仿真;服務遷移;車聯網;SUMO
中圖分類號:P315.69?? 文獻標志碼:A??? 文章編號:1001-3695(2024)05-028-1480-09
doi: 10.19734/j.issn.1001-3695.2023.09.0429
VECSim: improved iFogSim2 modeling and simulation simulator for vehicular edge computing
Abstract:Currently, researchers are focusing on efficient applications and resource scheduling strategies in vehicular edge computing (VEC) environments, however, the real-world validation of these applications and strategies is often limited by cost and time and cannot be performed quickly and efficiently. The emergence of edge/fog computing simulators such as iFogSim2 reduces the cost of experiments. However, the connection switching and resource allocation requirements of high-speed moving vehicles pose challenges to the application of edge/fog computing simulators under VEC. Therefore, this paper improved iFogSim2 by designing VECSim, a VEC environment simulator that supported high-speed mobility. It integrated open-source base station data and constructed vehicle trajectory datasets so that researchers can focus on resource allocation strategies. Firstly, to simplify the experimental steps, this paper improved the mobile trajectory data parsing module and adapted the vehicle trajectory data generated by Simulation of Urban Mobility (SUMO), a microscopic transportation simulation software. Secondly, this paper modeled distributed applications under VEC based on the distributed data flow model and provided a ser-vice migration benchmark policy algorithm. In addition, VECSim introduced a time-performance optimization method to accele-rate the simulation event processing by parallelizing the operation, which improved the time performance of the simulation tool. Experiments show that compared with similar service migration algorithms in iFogSim2, the proposed service migration algorithm exhibits good stability under the validation of large-scale motor vehicle trajectory dataset, and the time-performance optimization method achieves a 5.3% performance improvement in execution time. Code is available: https://github.com/LiuZi-yuan-CS/VECSim.
Key words:VEC; edge computing simulation; service migration; IoV; SUMO
0 引言
近年來,車聯網(Internet of Vehicles, IoV)和多接入邊緣計算(multi-access edge computing, MEC)緊密融合,催生了一種新的計算范式——車載邊緣計算(vehicular edge computing, VEC)。VEC通過促進車輛之間的協作以及車輛與智能交通基礎設施的交互,如在擁堵的交通環境中車輛間共享交通信息以共同規劃最佳路徑以減輕交通堵塞,智能交通基礎設施可與車輛實時通信,向車輛提供路況信息、信號燈狀態等數據,并同時從車輛收集信息以改進城市交通管理。因此,VEC能夠有效應對因車輛高度機動性所引發的復雜實時計算問題[1]。目前,廣泛的研究[2~5]聚焦于VEC環境中的高效應用和資源調度策略。可擴展的邊緣計算設備在驗證這些策略方面起著關鍵作用,但高昂的部署成本和復雜的部署流程給研究人員帶來了一系列挑戰和限制[6]。
隨著邊緣/霧計算仿真器的出現,降低了研究人員的實驗測試成本。表1對近期聚焦于邊緣/霧計算仿真器的工作進行了總結。YAFS[7]是一個用于邊緣/霧計算下的仿真工具,其專注于模擬分布式計算環境中的資源分配、任務調度和網絡通信等方面的問題。ECSNeT++[8]是基于OMNeT++[9]/INET[10]的邊緣/霧計算仿真工具,模擬了分布式流處理(distributed stream processing, DSP)應用程序在邊緣/霧計算環境中的執行過程,并為DSP應用程序提供了多種配置。上述兩種仿真工具均不支持終端移動。STEP-ONE[11]是對ONE(Opportuni-stic Networking Environment)仿真器[12]的擴展,STEP-ONE繼承了ONE對移動自組織網絡(mobile Ad hoc network, MANET)和機會式網絡仿真的支持,在此基礎上構建了支持移動性的邊緣/霧計算仿真環境,并對真實世界的移動軌跡和基站數據集進行了支持。然而,缺乏移動性管理的默認策略和模塊化架構的系統建模,使得STEP-ONE仍然存在缺陷。此外,上述三種邊緣/霧計算仿真工具以非CloudSim框架作為核心框架開發,其存在兼容性和擴展性不佳、研究人員的認可度不廣的問題[13]。
CloudSim[14]是由墨爾本大學云計算與分布式(The Cloud Computing and Distributed Systems, CLOUDS)實驗室開發面向云計算環境流行仿真框架,它基于SimJava[15]離散事件仿真框架編寫。CloudSim雖然是一款常用的云計算環境仿真框架,但由于邊緣/霧計算環境與云計算環境的相似性,在早期沒有邊緣/霧計算環境仿真工具時,CloudSim憑借其良好的擴展性和較低的二次開發成本,成為了邊緣/霧計算研究人員主要使用的仿真工具。隨著霧計算興起,CLOUDS實驗室基于CloudSim的核心,提出了用于霧計算中資源分配、任務調度和網絡通信問題的iFogSim1[16]。iFogSim1引入了多層級模型,可以模擬多個層次的計算節點,支持虛擬機和容器的建模,使用戶可以模擬不同級別的資源虛擬化。iFogSim1還允許模擬固定終端設備和邊緣節點之間的實時通信和數據傳輸,以評估通信延遲和網絡擁塞。然而,缺乏移動性支持給研究人員在進行移動場景下的霧計算仿真評估帶來了困難。同時期基于CloudSim提出的EdgeCloudSim[17],也因為缺乏移動性的支持和較簡單的通信環境建模而表現不佳。此外,在工作流調度和霧計算結合領域,FogWorkflowSim[18]利用了WorkflowSim[19](基于CloudSim專注于云計算工作流調度的仿真工具)和iFogSim1對工作流調度和霧計算的計算優勢,實現了邊緣/霧計算環境下的工作流調度和優化仿真,雖然上述工作推動了霧計算仿真領域的領域,但仍然沒有解決移動性支持問題。
盡管iFogSim1等霧計算仿真工具可以完成邊緣計算環境下的仿真需求,但是,移動性作為MEC最重要的特性亟待仿真工具的支持。Qayyum等人[20]開發了FogNetSim++,它基于CloudSim和iFogSim1開發,提供了開發定制移動模型的終端。但FogNetSim++的移動性支持系統與核心仿真引擎耦合過高,因此使用時需要對工具進行過多的修改。Jha等人[21]提出的基于CloudSim的IoTSim-Edge,設計了支持移動場景的邊緣/霧計算仿真工具,針對交通場景,IoTSim-Edge還提供了一個在一條高速公路上車輛使用路側單元節點(roadside unit,RSU)協同通信完成自動駕駛的示例。然而,缺乏城市場景下的移動軌跡數據集和模塊化應用建模能力,IoTSim-Edge無法大面積構建多車移動對VEC環境的影響。基于iFogSim的MobFogSim[22]擴展iFogSim組件的基本功能,以支持霧/邊緣計算中的車輛終端移動。然而,MobFogSim的移動支持只停留在處理網關和云數據中心層面,而不是分層的邊緣/霧基礎設施。IoTNetSim[23]對iFogSim進行了移動性擴展,可以對不同的物聯網設備及其細粒度細節進行建模,還支持物聯網設備在三維空間中的移動性。然而,它缺乏移動服務遷移的基準策略。SatEdgeSim[24]則基于iFogSim開發了面向衛星移動的邊緣計算環境,由于衛星場景下衛星軌道相對固定,缺乏自定義的移動支持。為了彌補上述工作的不足,iFogSim2在iFogSim和MobFogSim的基礎上,設計了分層的MEC計算的架構[25],引入了自定義的移動支持、基于分布式應用的服務遷移基準算法以及將微服務概念應用于邊緣節點。此外,數據集的稀缺也構成了目前VEC仿真中面臨的挑戰,其主要體現在基站數據集和微觀交通數據的稀疏性。在基站數據集方面,目前,存在一些常見的數據集,如EUA數據集[26]、上海電信數據集[27,28]等。它們在一定程度上填補了基站數據集的稀疏性。在微觀交通數據集方面,主要的解決方案是利用微觀仿真交通軟件Simulation of Urban Mobility (SUMO)[29]來獲取微觀交通數據。SUMO是一款開源、微觀、空間連續和時間離散的微觀交通流仿真平臺。它可以用來模擬大規模道路網絡上的微觀交通流,支持對不同路網數據源文件的解析、不同輸入方式下的車輛路由生成,以及對整個城市交通流量的高性能模擬。
目前,VEC環境下仿真仍然面臨如下問題:
a)高速移動車輛引起的連接切換和資源分配的模擬需求。
b)由于數據隱私性,車輛軌跡數據和基站部署數據的缺乏限制了仿真實驗。
c)缺乏適用于大規模移動軌跡數據下的服務遷移算法。
本工作以iFogSim系列仿真工具的流行度和擴展性為考量,針對iFogSim2[30]在VEC場景下的仿真存在節點資源分配方案不合理,移動數據解析加載支持不完善,分布式服務遷移算法不適用。因此,本文工作對iFogSim2仿真器進行了改進,設計了面向車載邊緣計算的建模與仿真模擬工具VECSim。VECSim通過模塊的擴展、修改和引入,實現了高速移動車輛引起的連接切換和資源分配的響應。VEC在繼承了iFogSim2對開源基站部署數據集成的基礎上,還對現實世界微觀交通數據的收集和采樣,并使用微觀交通仿真軟件SUMO[29]構建了車輛軌跡數據集。這些數據集的整合有助于減輕VEC仿真實驗的限制,使研究人員能夠更專注于VEC下的資源分配和調度策略研究。此外,為了更方便地接收由SUMO仿真輸出的浮動車數據(floating car data,FCD),VECSim中的數據解析模塊提供了對SUMO生成的浮動車軌跡數據的適配和解析支持,進一步簡化了研究人員的實驗流程。VECSim采用了基于分布式數據流(distributed data flow, DDF)模型[31]對VEC環境下常見的分布式應用進行建模。針對VEC場景中分布式應用的服務遷移問題,VECSim提供了相應的基準策略算法。通過使用集成的基站數據和車輛軌跡數據,將該算法與iFogSim2中提供的同類型的基準算法進行了比較。研究結果顯示,VECSim中提供的服務遷移基準算法在大規模車輛軌跡數據集的驗證下表現出了良好的穩定性。此外,對于CloudSim核心框架在處理仿真事件時的效率問題,VECSim引入了一種時間性能優化方法,通過設計FutureManager類實現了對Future隊列的并行化操作,加速了仿真事件的處理,從而提高了仿真工具的時間性能。實驗證明,時間性能優化方案使得VECSim仿真執行時間減少了5.3%。
1 系統設計與實現
針對目前iFogSim2不適合VEC環境下仿真的問題(即資源分配問題、數據解析問題和服務遷移問題),接下來將對引言中提到的iFogSim2在VEC環境下仿真的功能問題進行詳細解釋并給出解決方案。VECSim的整體架構如圖1所示。彩色部分表示對iFogSim2中的組件的擴展與修改。
a)資源分配問題:iFogSim2仿真下的計算節點的資源分配策略是在仿真初始化階段,將所有車輛在仿真期間所需要占據的計算節點資源全部進行分配,這導致了實際上還未開始仿真的車輛擠占了正在仿真車輛所需的計算節點資源,這一情況的出現導致了仿真與現實世界的事件發生流程,其次,這會導致用戶錯誤地認為在仿真過程中節點的資源已被耗盡,他們會修改節點的資源初始化參數,以確保這些節點在遷移模塊時有足夠的資源使用,而不考慮策略本身的問題。解決方案:(a)需要對齊CloudSim底層的時間片與數據集中的軌跡時間戳;(b)按照數據集中每臺車輛開始仿真的時間為其分配計算節點資源。
b)數據解析問題:iFogSim2中的移動數據加載實現為一次性加載,數據載入后,會將這些數據交由核心模塊處理。然而,在初始化階段將移動數據一次性加載會出現數據量過大導致底層的事件隊列排序時間過長,這是因為一次性加載的移動數據需要按照時間戳進行排序,以確保事件按正確的時間順序被處理。隨著數據量的增加,排序所需的時間也會相應增加,從而影響了系統的初始化速度。其次,在硬件配置較低的設備上,一次性加載大量數據可能會導致內存溢出問題。這是因為設備的內存資源有限,無法容納所有的移動數據。當內存不足時,系統會崩潰或性能嚴重下降,從而影響用戶的使用體驗。此外,缺乏對SUMO輸出的FCD適配,使用SUMO仿真的車輛軌跡數據需要二次處理。解決方案:(a)實現移動數據解析的懶加載;(b)構建適配SUMO仿真輸出數據格式的組件。
c)服務遷移問題:iFogSim2中的服務遷移算法實現不適用VEC環境仿真,具體表現在服務遷移過程中,其并未區分服務實例與車輛的從屬關系,這導致在服務遷移過程中對車輛所屬的服務實例操作混亂,最終導致了仿真的計算結果錯誤。此外車輛仿真生命周期結束后,CloudSim核心沒有及時停止對仿真結束車輛的仿真事件輪詢,導致不必要的運行開銷。解決方案:(a)明確服務實例和車載應用的對應關系;(b)及時分配和回收服務實例所占據的計算節點資源;(c)每臺車輛仿真結束后,CloudSim核心及時停止對結束仿真車輛的仿真事件輪詢,降低仿真開銷。
本章還將介紹和使用EUA數據集[26]和墨爾本市政府提供的2014—2017年的墨爾本市主干道車流統計數據(https://data.melbourne.vic.gov.au/explore/dataset/traffic-count-vehicle-classification-2014-2017/information/)在通過數據處理后構建的車輛軌跡數據為例構建了墨爾本市中心商務區的VEC場景,以補充VECSim的設計實現。
1.1 數據集介紹
1.1.1 EUA數據集
EUA數據集收集了來自澳大利亞墨爾本市和悉尼市CBD區域的基站信息,包含了基站標識、緯度、經度、許可區域、郵政編碼。該數據集來源于澳大利亞通信及傳媒管理局。基站可視化數據如圖2(a)所示(見電子版)。
1.1.2 車輛軌跡數據集
車輛軌跡數據集是從墨爾本市政府提供的一組真實世界的交通數據中提取的。這組真實世界的交通數據記錄了2014—2017年墨爾本市道路每小時通行的汽車數量,并根據車輛類別分為13類。
基于墨爾本市政府的統計數據,本文以來自墨爾本市CBD區域主干道的數據為基準,配合采集來自OpenStreetMap[32]的路網地圖,使用SUMO仿真收集了時長為7天的墨爾本市CBD區域的私家車軌跡數據,圖2(b)是隨機選取車輛軌跡數據集中的5條軌跡切片的可視化,數據處理流程如圖3所示。
1.2 場景構建
基于上述兩個數據集,本文構建一個常見的VEC場景來闡述VECSim的設計與實現。使用三層式架構將區域內部的基礎設施分為“控制器層(云層)-固定層(邊緣層)-車輛層”[33],其中EUA數據集用于標注邊緣層基站位置并根據基站的地理分布劃分為12個區域,其中每個區域內部有一個代理節點作為區域內的通信節點負責與上層的云中心節點進行通信,區域內部的網關節點與代理節點直連,同時,網關節點也會與通信范圍內行駛的車輛(由車輛軌跡數據集驅動)進行連接,以保證車載任務和通信能夠在區域內不間斷執行。基站的劃分如圖2(c)所示,其中藍色節點表示區域內代理節點,網關節點用紅色表示(見電子版)。
1.3 核心模塊
VECSim繼承了CloudSim的核心模塊,核心模塊的物理邏輯來自于SimJava框架對于離散事件仿真的建模,其包括以下三個方面:
a)事件定義:描述系統中發生的事件類型,包括事件的觸發條件和處理行為。
b)模擬實體:表示仿真系統中的各種實體或代理,這些實體會根據特定的規則參與事件和過程。
c)交互過程:描述實體之間的相互作用、消息傳遞、狀態變化等,通常通過事件來觸發。
在核心模塊中,使用了三個執行單元類(即SimEntity、SimEvent和VM)以及兩個事件隊列類(即Future和Deferred)來對上述物理邏輯進行業務邏輯的表達。SimEntity類是所有物理設備的父類,它作為執行單元的主體元素,在每個時間片下執行其相關的SimEvent所表示的仿真事件。在執行SimEvent所對應的事件時,來自SimEvent對象派生的任務或資源分配單元的VM類將占用相應SimEntity對象所擁有的資源,同時SimEvent對象可能在這次事件執行過程中派生新的SimEvent對象。因此,核心還存在兩個SimEvent隊列(為了保證操作效率,其本質是基于紅黑樹的有序集合):Future和Deferred,用于確保事件的執行時間順序正確。圖4展示了一次時間片下SimEntity執行事件的過程。
其主要流程如下:
a)Future隊列將隊列中執行時間為當前時間片的事件(SimEvent實例)發送給Deferred隊列管理,并將這些已發送的事件在隊列中刪除。
b)Deferred隊列在接收到來自Future隊列分發的事件后,將這些事件依次發送給所屬執行SimEntity實例。
c)SimEntity收到來在Deferred隊列分發事件后,CloudSim依照SimEntity的編號順序依次驅動所有的SimEntity實例執行屬于其自身的待執行事件。
d)SimEntity在執行事件時,首先會判斷該事件是否與其他SimEntity實例發生了交互,若發生交互,則先執行交互事件,反之,判斷是否發生了任務派生。
e)SimEntity將判斷執行的SimEvent事件是否觸發任務派生(任務派生是一種特殊的交互事件,該事件在SimEntity之間發生,任務的承載單元為VM實例),若觸發,接收任務的SimEntity則執行相應任務資源分配請求。
f)SimEntity將判斷執行的SimEvent事件是否會派生新的SimEvent事件。如果派生新的事件,則依據派生事件的執行時間選擇交由Future隊列或Deferred隊列管理,并最終完成一次時間片下的事件仿真。
VECSim的核心模塊中除了基于CloudSim框架的iFog-Sim2的核心外,本工作擴展設計了Subject和Observer接口。這兩個接口可以實現時間片監控邏輯,對現實世界事件的發生進行補充建模。由于在現實世界中,絕大多數車輛只會在駕駛階段或需要服務時請求訪問在線服務,在車輛熄火后或者駕駛員和乘員不需要服務支持時,保持車載服務在線是不合理的。然而,在iFogSim2仿真流程中,其分布式應用的模塊分配策略在仿真初始化階段就執行了所有的任務派生事件,這使得本該在其他時間片下執行的VM對象(資源或任務)在初始化階段就已經被分配給了對應的SimEntity,這顯然是不合理的。為了實現上述邏輯,就需要監控CloudSim中的時間片變量,通過將當前時間片與車輛運動軌跡數據集中的時間戳進行比較以確認車載服務是否需要離線或確定車輛是否已駛離區域服務區(圖2(c)中灰色遮罩區域)。然而,經過多次迭代后的CloudSim核心功能的耦合度較高。直接修改CloudSim核心代碼不符合開放-封閉原則[34]。此外,考慮到VECSim的可擴展性,VECSim引入觀察者模式,設計了Subject和Observer接口。實現了對時間片變量的監控,通過這種方式從底層以較少的侵入內容實現了資源分配問題中的解決方案。如果想要更細的細粒度變量監控或捕獲某些變量的狀態,只需實現上述接口,而不會破壞CloudSim的核心功能。
1.4 物理設備
物理設備模塊用于模擬真實世界的物理設備以及分布式數據流的傳輸。在VEC的三層式架構中,包括“控制器層(云層)-固定層(邊緣層)-車輛層”,不同類型的節點都被FogDevice所統一表示。對于車輛層,VECSim進行了高度的抽象,使用FogDevice來表征車輛在VEC環境中的特性,并將移動控制規劃交由移動管理模塊和控制器模塊來控制。而終端上的傳感器和執行器則分別通過Sensor和Actuator類進行表示。Tuple類則用于表示傳感器-設備、設備-設備和執行器-設備之間的數據包傳輸。
此外,VECSim擴展了原始的物理設備類方法。對于FogDevice、Sensor和Actuator類,重寫了shutdownEntity方法,結合2.3節中CloudSim核心的時間片監控方案,以確保當設備不再需要進行仿真時底層核心會將其置為未激活狀態。在輪詢每一個實體時,底層會跳過未激活狀態的實體,這一方法與原有的在仿真結束時一次性停止所有實體設備模擬的邏輯相比,不僅更符合實際運行邏輯,還減少了每個時間片下不必要的仿真開銷。此外,還對這三個類中的VM對象的分配和回收方法進行了相應的補充和校正,以確保在仿真過程中的流程正確性。
1.5 分布式應用
隨著邊緣/霧計算的興起,分布式應用程序已經成為了一個關鍵組成部分。這些分布式應用程序不僅能夠以有向圖的形式表示數據傳輸關系,還可以作為資源分配策略、服務遷移策略和任務卸載策略的載體[13]。由于VEC中的服務和計算任務具有較強的分布式特征,而車載智能應用也以分布式應用的形式不斷發展,所以,VECSim繼承了iFogSim2中的分布式應用模型架構,這使得它能夠輕松測試各種策略以評估性能。在分布式應用模塊中,Application被視為分布式應用,而AppModule則繼承自VM類,不僅表示應用服務中不同功能的模塊,還表示了該模塊在物理設備上所需的資源占用情況。此外,AppEdge用于表示數據在AppModule之間的數據傳輸流向和數據大小,它包括了一個Tuple對象,并記錄了發送AppModule和接收AppModule的信息。分布式應用模塊提供了相應的接口和實現以輔助用戶設計和創建具體仿真的應用,一旦創建成功,這些應用將由Controller進行統一管理,這種分布式應用程序的建模方法為VE仿真提供了靈活性和可擴展性。
1.6 移動數據解析和管理
微觀交通中個體車輛軌跡的隱私性和敏感性導致車輛移動軌跡數據在VEC環境仿真中的稀缺性。因此,VECSim利用SUMO構建了符合真實交通場景的車輛移動軌跡數據,以推動VEC仿真的進行。其輸出的FCD可以記錄每個時間戳下正在執行交通仿真車輛的軌跡信息。為了在VECSim中有效使用FCD數據,VECSim構建了數據解析模塊DataParser,它將SUMO仿真輸出的FCD數據按照車輛唯一編號解析成獨立的CSV格式文件。此外,為了與CloudSim框架核心仿真機制相適配,VECSim還設計了RealTimeLocation類,每個RealTime-Location實例代表某一臺車輛在某個時間步下的坐標信息,并以隊列的形式存儲一組RealTimeLocation實例,以記錄單臺車輛的移動數據。
然而,處理大規模高采樣頻率和高速度的車輛移動軌跡數據時,采用全加載模式會導致底層事件隊列排序時間過長和內存溢出問題。因此,VECSim對DataParser組件進行了擴展,實現了移動數據的懶加載,即只有在需要使用車輛的移動軌跡數據時才執行數據加載操作。DataParser通過讀取每臺車輛的開始仿真時間和結束仿真時間,并以哈希表的形式存儲車輛生命周期以進行預處理操作。當時間片輪轉到某臺車輛的生命周期時,通過懶加載形式完整讀取該車輛的移動數據,將其轉換為一個RealTimeLocation實例隊列,并向CloudSim核心發送包含了RealTimeLocation實例隊列中第一個RealTimeLocation實例的移動管理事件。然后將這一隊列打包交由Controller管理和控制,在移動事件需要執行時再向事件隊列進行發送,以減少底層事件隊列的排序時間。
1.7 控制與策略
車輛的高移動性會影響網關節點的計算效率,尤其是在頻繁切換接入節點時,導致網絡拓撲結構頻繁變化。這就要求應用程序服務從一個計算節點遷移到另一個節點,以確保服務質量。服務遷移操作取決于以下三個方面。
a)車輛的位置。
b)車輛移動軌跡表或車輛移動的速度和方向,用于計劃或預測下一個遷移節點。
c)更好的遷移算法來計算最佳遷移路徑,減少遷移時間和延遲。
為了解決VEC環境下常見的服務遷移問題,在控制與策略模塊中,設計了分布式應用模塊部署策略,以及移動性的服務遷移算法,Controller類實現了Observer接口來監控模擬時間片,因此當模擬時間片運行到每臺車輛的模擬時間開始的前一個時間片時,Controller類將從CloudSim核心中收到通知,從DataParser提供的2個關于車輛的生命周期表中找到需要啟動的車輛。同樣,當模擬時間片運行到每臺車輛的模擬時間結束的后一個時間片時,Controller也會停止需要仿真的車輛。由于這兩個表由哈希表組成,所以查找效率為O(1),這減少了在模擬中尋找等待啟動或銷毀的車輛所需的時間。每次車輛啟動后,Policy類將為車輛的分布式應用模塊進行部署,模塊部署策略在算法1中描述。
模塊部署策略確保了每個分布式應用模塊的正確部署,并且每個車輛設備上的分布式應用模塊記錄也將為后續由于車輛移動而進行的模塊遷移提供唯一記錄和上下文關系。模塊部署策略需要啟動的模擬車輛名稱列表Vn作為輸入參數。分布式應用模塊部署過程如下(為了方便表示,算法1使用Java中面向對象的思想進行展示):
算法1 分布式應用模塊部署策略
初始化:在執行開始,需要重置上一次運行該流程時使用的中間參數(第1行)。然后,執行getLeafToRootPaths方法計算每輛車到云節點的多跳通信鏈路,并用P記錄(第2行)。
模塊預分配:在這個階段,它將遍歷P中的每個多跳通信鏈路p,然后,分布式應用程序模塊將在p中的不同設備上進行分配(第3~5行)。模塊部署規則是根據設備是否具有相應的承載能力放在車輛、網關節點、代理節點和云節點上。
模塊部署:上一階段分配的模塊將在該階段生成模塊實例,并將其放置在相應的物理設備上。遍歷P中的每一個多跳通信鏈路p,vid記錄每個多跳通信鏈路p中的車輛唯一標識(第7行)。為了獲得模組和設備之間的對應關系,還需要迭代p和在預分配階段分配給did(多跳通信鏈路p上迭代的節點標識)的模組列表M(第9行)。接下來,為設備did部署模塊模組實例并記錄模組實例和部署設備的映射關系(第11、12行)。最后,記錄每個車輛的分布式應用程序模塊的部署關系(第15行)。
算法分析:分布式應用模塊部署策略的主要計算操作時間集中在第6~16行,因此三個循環嵌套帶來O(P×p×M)的時間代價,其中P與當前時間片下需要啟動仿真的車輛數相關,p與區域內的節點層數相關,M與分布式應用模組的數量相關,因此具有多項式復雜度。
當車輛開始仿真,車輛移動驅使車輛不斷切換與其連接的網關節點,產生了服務遷移需求,通過移動管理和服務遷移算法選擇最佳的接入網關節點以獲得最佳延遲代價并保證服務質量。在每次節點切換時,需要將分布式應用模塊從原網關節點(遷出節點)遷移到新網關節點(遷入節點)這也意味著需要釋放遷移節點中分布式應用模塊占用的資源,并將遷移節點的資源分配給即將到來的分布式應用模塊。Controller類中的移動管理和服務遷移算法實現了車輛在移動過程中切換網關節點和遷移模塊的過程。該程序以車輛m和SimEvent觸發的時間戳t為輸入參數(第1行),其流程如下(為了方便表示,算法2使用Java中面向對象的思想進行展示)。
初始化:在該階段,算法2執行了移動管理必要的初始化。LH和DP包含移動管理所需的必要計算函數,并且存儲車輛移動軌跡的數據(第1、2行)。RF是一個參考對象,包含用于數據讀取和移動管理的靜態參數(第3行)。nextRTL是m的下一時間步下的軌跡數據,當模擬時間片切換時,DP會自動讀取該數據(第5行)。P是上文提到的分布式應用模塊部署策略,它記錄模塊實例和部署設備之間的映射關系,以確保移動管理前后的數據一致性,并避免模擬中出現異常(第5行)。pold和G記錄當前m接入的網關節點(遷出節點)和所有網關節點的列表(第6、7行)。Dprev是上一次移動時m與pold之間的距離,該距離用于幫助m找到新接入的網關節點(遷入節點)(第8行)。
尋找遷入節點:算法初始化后,由于m的本次移動,需要開始尋找連接到m的遷入節點pnew。對G進行迭代以計算連接到每個網關和車輛的距離d(第9、10行)。將d與Dprev和網關節點的通信范圍(為了簡便計算,所有的網關節點的通信范圍是相等的)進行比較,以尋找遷入節點pnew(第11~15行)。
模塊遷移:如果pold≠pnew,則意味著應該執行模塊遷移。首先,找到部署在pold上且屬于m的分布式應用程序模塊列表Lmi(第17行)。然后,確定pold和pnew之間的傳輸路徑。它將找到一個直接或間接連接pold和pnew的公共節點a(第18行),從pold到a和a到pnew的多跳通信鏈路構建了應用模塊的遷移路徑。最后,迭代Lmi,pold發送需要遷移的應用模塊并釋放占用的資源,pnew則接收pold發送的應用模塊并為其分配計算資源。同時,內置函數將計算并記錄此次遷移成本(第19~22行)。
更新狀態:應用模塊遷移后,m接入到pnew(第23行)。
通知模擬引擎:經過以上4個階段,這次m的移動性管理已經基本完成。如果車輛存在下一次的移動,將nextRTL和事件類別Tag以事件形式發送給底層引擎,以建立m的下一次移動管理和服務遷移(第26行)。
算法2 移動管理和服務遷移算法
算法分析:算法2是VECSim中移動管理和服務遷移算法。與iFogSim2中的同類算法相比,算法2解決了節點分配給遷出模塊的資源沒有釋放的問題,在iFogSim2中由于遷出模塊的資源沒有釋放,并且隨著模擬的進行,來自其他車輛的分布式應用模塊可能將繼續遷入到同一節點中并占用資源。然而,節點未能釋放遷出模塊占用的資源,最終會導致節點沒有可用資源分配的情況。通過完善服務實例和車載應用的對應關系,在車輛移動而產生的服務遷移時及時分配和回收服務實例所占據的計算節點資源,算法2有效解決了上述問題。算法2的第9~15行,存在O(G)次迭代,其中G表示所有網關節點數量。對于尋找公共節點a的第18行,本質是在查找兩個葉子節點的最近共同祖先,因此,時間代價為O(|Paold|+|Panew|),其含義是從Pold到a的多跳通信鏈路(表示為|Paold|)和從Pnew到a的多跳通信鏈路(表示為|Panew|)距離之和。對于第19行需要遷移的模塊迭代,其消耗是O(Lmi),Lmi是待遷移模塊列表。由此可以得出,算法2以多項式時間代價執行移動管理和服務遷移算法。
2 仿真時間性能優化
2.1 仿真性能限制分析
在第1.3節中,已經詳細闡述了CloudSim核心框架如何使用Future和Deferred隊列來確保仿真事件的順序執行。然而,這種控制流程對于仿真的時間性能并不是十分友好。在執行過程中,Future隊列需要頻繁執行刪除操作,即刪除已經分發給Deferred隊列的SimEvent實例,并且需要插入執行時間不在當前時間片下的派生事件SimEvent實例。盡管,紅黑樹結構已經將對樹插入、刪除操作的時間復雜度控制在O(log n),然而,大量的插入和刪除操作所帶來的時間代價極為龐大。此外,CloudSim的仿真流程是串行的,這意味著必須等待大量的刪除和插入操作完成后,仿真才會繼續進行。根據實際觀察和流程分析,在一次時間片下的仿真過程中,大約有80%的派生事件都需要被插入到Future隊列中。值得注意的是,派生事件插入Future隊列的這一過程并不會影響一次時間片下仿真的順序執行。這在一定程度上對仿真執行效率產生了一定的影響。
2.2 時間性能優化設計
為了提高仿真的時間性能,VECSim設計了一種時間性能優化方法,在核心模塊中引入了FutureManager。這一改進使得新的派生事件插入Future隊列的操作可以并行進行。Future-Manager是Future類的高級封裝,提供了Future類所有方法的高級形式,以確保在并發運行期間的數據同步。在Future-Manager類中,有兩個緩沖區空間,用于記錄需要插入到Future類或從Future類中刪除的事件。此外,設計了兩個子線程,分別是AddThread和DeleteThread,它們負責監視這兩個緩沖區空間,通過判斷緩存區是否已填滿。一旦緩沖區填滿,它們會執行向Future類插入事件或從Future類刪除事件的操作。這一并行化的改進有助于提高仿真的執行效率,如圖5所示。
3 仿真實驗與結果分析
在本章中將采用一個常見的VEC案例來驗證VECSim對VEC環境的支持。車載智能語音助手是一種常見的車載功能,其允許駕駛員或乘員以自然語言的方式與車載智能系統溝通,實現操作車輛的功能設備或控制車載應用[35]。本案例將使用1.1節提及的EUA數據集和車輛軌跡數據集以確保實驗仿真的真實性和可靠性。案例實施后,本文對使用能耗和網絡使用量進行了評估。能耗的計算是基于節點空閑和繁忙功率使用情況而確定的,網絡使用量是基于模擬期間內數據在整體區域網絡內傳播的數據量來計算的。該實驗仿真以相同的參數在iFogSim2上運行了這個案例,并將結果進行了比較。結果表明,在大規模的機動車軌跡數據集驗證下VECSim具有良好的穩定性表現。
3.1 車載智能語音助手應用模型
車載智能語音助手通過理解自然語言形式的命令,而無須依賴預定義的關鍵詞進行用戶培訓。然而,這種形式需要更多的計算資源來處理語音命令,而且語音指令處理在VEC場景下是一種可卸載的終端任務[36]。因此,考慮網關節點上放置語音命令處理模塊來處理用戶的語音命令,使用代理節點作為服務遷移的中繼站是可行的方案。
車載智能語音助手被分為三個模塊,為了可視化符合分布式應用程序的架構形式,使用有向無環圖來表示車載智能語音助手的應用程序模型,如圖6所示。其模塊的組成如下。
a)收發模塊:收發模塊部署在車輛上,用于接收來自麥克風(傳感器)的數字聲音信號,該信號通過車輛的無線通信設備發送到位于RSU(網關節點)上的聲音命令處理模塊。同時,它還負責接收聲音命令處理模塊解析處理后的執行指令,這些執行指令由收發器模塊接收,然后傳輸到車輛上的命令觸發器(執行器),并執行相應的指令。
b)語音命令處理模塊:語音命令處理模塊部署在RSU上,語音命令處理模型是車載智能語音助手應用模型中的主要計算模塊,它包括一個人工智能(AI)模型,該模型通過實現降噪、語音識別、自然語言處理和指令匹配,將語音命令轉換為機器可理解的執行命令。此外,語音命令處理模塊在轉換過程中收集中間數據,中間數據經過數據脫敏后將轉換為連續學習數據,使位于云節點上的語音識別優化模塊能夠通過不斷優化AI模型來提高服務質量。
c)語音識別優化模塊:語音識別優化單元接收來自不同RSU中的語音命令處理模塊的數據。它通過持續學習技術對人工智能模型進行了周期性優化,以提高服務質量。它由于延遲不敏感,可以放置在云節點上。
3.2 仿真環境和參數設置
仿真環境包括兩部分數據集的導入。EUA數據集用于標記網關節點和代理節點位置,依照第2.2節提到的基站劃分方式,在墨爾本中央商務區設置了118個RSU(網關節點)。這些RSU被劃分為12個區域,每個區域設置1個代理節點。
此外,代理節點負責云集群和所屬區域內網關節點的通信與模塊轉發的中繼站功能,共12個代理節點。此外,在墨爾本中央商務區設置云集群。RSU可以通過其塊中的代理節點與云集群進行交互。在車輛軌跡數據集中,選擇了100和340條車輛軌跡(仿真時長為5 790 s和11 640 s)來測試移動性對模塊和服務遷移的影響。同樣地,iFogSim2中使用了相同的參數設置,仿真的參數如表2和3所示。實驗在一臺操作系統為Ubuntu 20.04,配備16 GB RAM,AMD 5900x@3.70 GHz CPU的計算機上進行。
功率模型和能耗計算公式為
P=Idle+(Busy-Idle)×utilization(1)
E=P×(Tnow-Tlast)(2)
式(1)中:Idle表示為閑置功率,Busy表示為忙時功率,utilization為利用率;
式(2)中:P為(1)中的功率,(Tnow-Tlast)表示為以功率P持續的時間。
3.3 仿真結果分析
圖7展示了顯示兩種車輛規模仿真實驗下代理節點和網關節點的能耗對比。表4展示兩種車輛規模實驗下的網絡使用量對比。
在模型設計環節,代理節點的主要職責是維護通信功能,負責所在區域內網關節點與云集群之間的通信,不涉及模組的部署任務和計算任務。代理節點在仿真期間以閑置功率運行,其能耗計算基于代理節點的運行時間和功耗。因此,代理節點的最低能耗可計算為333(W)×5790(s)=1928070(J)。這個值是每個代理節點的最低能耗。然而,在iFogSim2的模擬中,每個代理節點的能耗低于該值。這表明iFogSim2在代理節點方面的能耗模擬存在異常。同時,網關節點執行了語音指令處理模塊的部署和計算任務以及模塊的收發任務。因此,網關節點的能耗應該根據工作負載在忙時功率和閑置功率之間波動進行計算。然而,iFogSim2的統計結果表明,有30個網關節點的能耗為969 000(J),低于最低網關節點能耗的應計算值(170(W)×5790(s)=984300(J))。在VECSim的仿真中,代理節點和網關節點的能耗數值統計正常。經過檢查iFogSim2和VECSim的執行日志,發現iFogSim2在仿真的4 551 s后不再執行任何操作,包括分布式應用模組部署、移動管理和服務遷移等操作,而VECSim則一直保持正常執行。這解釋了表3中iFogSim2網絡在100臺車輛情況下使用的數據量低于VECSim統計數據的原因。
隨著車輛數量的增加,在引入了340輛車輛的更大規模仿真中,筆者依然觀察到了iFogSim2仿真結果中的能耗異常。在圖7(c)中,iFogSim2模擬的代理節點的能耗為3 862 800(J),低于代理節點的最低能耗(333(W)×11640(s)=3876120(J))。同樣,圖7(d)中出現了異常現象,有109個網關節點的能耗為1 972 000.0(J),低于網關節點的最低能耗(170(W)×11640(s)=1977800(J))。值得注意的是,隨著車輛規模的增加,仿真的持續時間和模塊遷移次數也增加,導致網絡使用量上升。然而,在車輛規模增大的情況下,iFogSim2的網絡使用量統計出現下降的異常現象。此外,iFogSim2在運行日志文件中顯示,仿真在經過6 511 s后不再執行任何操作,包括模組部署、移動管理和服務遷移等。相反,VECSim的實驗結果仍然保持了原有設計的連續性和穩定性。在不同車輛規模的實驗中,VECSim通過其分布式應用模塊部署策略、移動管理和服務遷移表現出了良好的穩定性。
總的來說,VECSim相對于iFogSim2具有以下優勢:VECSim提供了更準確的代理節點和網關節點的能耗模擬,可以更好地反映實際情況。VECSim在仿真中保持了模擬的連續性,不會在仿真的中途停止操作,確保了數據的準確性和完整性。其次,VECSim相對于iFogSim2在穩定性方面具有明顯的優勢,尤其在處理大規模車輛移動場景下,VECSim的仿真結果保持了一致性,未出現異常現象。這些優勢使VECSim成為更可靠的仿真工具,用于研究移動邊緣車聯網環境中的能耗和性能表現,使其成為研究車載邊緣計算網絡性能和能耗的可信賴工具。
4 仿真時間性能優化實驗和結果分析
在第3章中,為了提高仿真時間性能,VECSim對CloudSim核心進行了性能優化,實現了仿真過程中對Future隊列插入和刪除的并行操作。為了驗證優化設計的有效性,本章設計了一個實驗來對其進行驗證。
4.1 實驗環境和參數設置
在驗證實驗中,VECSim使用了第3.2節中仿真參數設置,車輛數為100臺,實驗在一臺操作系統為Ubuntu 20.04,配備16 GB RAM,AMD 5900x@3.70 GHz CPU的計算機上進行。
4.2 結果分析
表5呈現了在使用FutureManager進行并行操作時,在相同仿真實驗設置下的仿真執行時間對比。與串行操作相比,采用并行處理Future隊列中事件的插入和刪除操作,使得仿真事件的執行時間減少了5.3%。然而,需要指出的是,由于引入了多線程技術,FutureManager中的兩個緩存區被視為臨界資源。當緩存區已滿,FutureManager需要執行插入和刪除操作時,主線程上的核心模塊無法同時訪問緩存區,這仍然帶來一定的時間開銷。盡管存在一定的時間開銷,這一結果證明了采用并行操作來處理Future隊列中的事件插入和刪除操作,依然可以有效地提升仿真工具的時間性能。這一改進對于減小仿真執行時間和提高工具的效率具有積極的影響,特別是在處理大規模仿真任務和復雜仿真場景時,將會更加顯著地體現其優勢。
5 結束語
本文基于iFogSim2改進并提出了VECSim仿真器,用于車載邊緣計算的建模與仿真模擬。VECSim集成了來自真實世界的采樣得到的車輛移動軌跡數據集并支持解析SUMO輸出的FCD,與EUA數據集可以快速構建VEC實驗場景。提出了適用于VEC特征的分布式應用模塊部署策略與移動管理和服務遷移策略。對于CloudSim核心框架在處理仿真事件時的效率問題,VECSim引入了一種時間性能優化方法,對Future隊列采取并行操作。實驗仿真結果表明,與iFogSim2中同類策略相比,VECSim所提供的服務遷移策略在大規模高采樣頻率高速的車輛移動場景下具有良好的穩定性表現。時間性能優化方案使得VECSim仿真執行時間減少了5.3%。未來,VECSim將移植到Python平臺上以實現VEC仿真與機器學習領域的結合與應用。
參考文獻:
[1]李智勇,王琦,陳一凡,等. 車輛邊緣計算環境下任務卸載研究綜述 [J]. 計算機學報,2021,44(5): 963-982. (Li Zhiyong,Wang Qi,Chen Yifan,et al. A survey on task off-loading research in vehicular edge computing [J]. Chinese Journal of Computers,2021,44(5): 963-982.)
[2]Subbaraj S,Thiyagarajan R. Performance oriented task-resource mapping and scheduling in fog computing environment [J]. Cognitive Systems Research,2021,70: 40-50.
[3]Fellir F,El Attar A,Nafil K,et al. A multi-agent based model for task scheduling in cloud-fog computing platform [C]// Proc of IEEE International Conference on Informatics,IoT,and Enabling Technologies.Piscataway,NJ:IEEE Press,2020.
[4]韋睿,祝長鴻,王怡,等. 基于軟件定義網絡和移動邊緣計算的車聯網高效任務卸載方案 [J]. 計算機應用研究,2023,40(6): 1817-1824. (Wei Rui,Zhu Changhong,Wang Yi,et al. Efficient task offloading scheme of Internet of Vehicles based on software defined network and mobile edge computing [J]. Application Research of Computers,2023,40(6): 1817-1824.)
[5]邸劍,薛林,蔡震. 基于網聯車多跳傳輸的移動邊緣計算卸載 [J]. 計算機應用研究,2021,38(4): 1145-1148,1157. (Di Jian,Xue Lin,Cai Zhen. Mobile edge computing offloading based on multi-hop transmission of connected vehicles [J]. Application Research of Computers,2021,38(4): 1145-1148,1157.)
[6]Meneguette R,De Grande R,Ueyama J,et al. Vehicular edge computing: architecture,resource management,security,and challenges [J]. ACM Computing Surveys,2023,55(1): 1-46.
[7]Lera I,Guerrero C,Juiz C. YAFS: a simulator for IoT scenarios in fog computing [J]. IEEE Access,2019,7: 91745-91758.
[8]Amarasinghe G,De Assuno M D,Harwood A,et al. ECSNeT++: a simulator for distributed stream processing on edge and cloud environments [J]. Future Generation Computer Systems,2020,111: 401-418.
[9]Varga A,Wehrle K,Güne瘙塂 M,et al. OMNeT+ [M]// Modeling and Tools for Network Simulation. Berlin: Springer,2010: 35-59.
[10]Mészáros L,Varga A,Kirsche M. INET framework [M]// Recent Advances in Network Simulation,EAI/Springer Innovations in Communication and Computing. 2019: 55-106.
[11]Mass J,Srirama S N,Chang C. STEP-ONE: simulated testbed for edge-fog processes based on the opportunistic network environment simulator [J]. Journal of Systems and Software,2020,166: 110587.
[12]Kernen A,Ott J,Krkkinen T. The ONE simulator for DTN protocol evaluation [C]// Proc of the 2nd International ICST Conference on Simulation Tools and Techniques. 2009.
[13]Jalali K A Z,Mansouri N,Khalouie M. Task scheduling in fog environment—challenges,tools & methodologies: a review [J]. Compu-ter Science Review,2023,48: 100550.
[14]Calheiros R N,Ranjan R,Beloglazov A,et al. CloudSim: a toolkit for modeling and simulation of cloud computing environments and evaluation of resource provisioning algorithms [M]// Software: Practice and Experience.2011: 23-50.
[15]Kreutzer W,Hopkins J,Van Mierlo M. SimJava—a framework for modeling queueing networks in Java [C]// Proc of the 29th Confe-rence on Winter Simulation. 1997.
[16]Gupta H,Dastjerdi A V,Ghosh S K,et al. iFogSim: a toolkit for mo-deling and simulation of resource management techniques in the Internet of Things,edge and fog computing environments [M]// Software: Practice and Experience. [S.l.]: Wiley,2017: 1275-1296.
[17]Sonmez C,Ozgovde A,Ersoy C. EdgeCloudSim: an environment for performance evaluation of edge computing systems [C]// Proc of the 2nd International Conference on Fog and Mobile Edge Computing. 2017.
[18]Liu Xiao,Fan Lingmin,Xu Jia,et al. FogWorkflowSim: an automated simulation toolkit for workflow performance evaluation in fog computing [C]// Proc of the 34th IEEE/ACM International Conference on Automated Software Engineering. 2019.
[19]Chen Weiwei,Deelman E. WorkflowSim: a toolkit for simulating scientific workflows in distributed environments [C]// Proc of the 8th IEEE International Conference on E-Science. Piscataway,NJ:IEEE Press,2012.
[20]Qayyum T,Malik A W,Khan K M A,et al. FogNetSim+: a toolkit for modeling and simulation of distributed fog environment [J]. IEEE Access,2018,6: 63570-63583.
[21]Jha D,Alwasel K,Alshoshan A,et al. IoTSim-Edge: a simulation framework for modeling the behaviour of IoT and edge computing environments [EB/OL]. (2019). https://arxiv.org/abs/1910.03026.
[22]Puliafito C,Gonalves D M,Lopes M M,et al. MobFogSim: simulation of mobility and migration for fog computing [J]. Simulation Modelling Practice and Theory,2020,101: 102062.
[23]Salama M,Elkhatib Y,Blair G. IoTNetSim: a modelling and simulation platform for end-to-end IoT services and networking [C]// Proc of the 12th IEEE/ACM International Conference on Utility and Cloud Computing. 2019.
[24]Wei Junyong,Cao Suzhi,Pan Siyan,et al. SatEdgeSim: a toolkit for modeling and simulation of performance evaluation in satellite edge computing environments [C]// Proc of the 12th International Confe-rence on Communication Software and Networks. 2020.
[25]Luo Quyuan,Hu Shihong,Li Changle,et al. Resource scheduling in edge computing: a survey [J]. IEEE Communications Surveys & Tutorials,2021,23(4): 2131-2165.
[26]Lai P,He Qiang,Abdelrazek M,et al. Optimal edge user allocation in edge computing with variable sized vector bin packing [M]// Service-Oriented Computing,Lecture Notes in Computer Science. 2018: 230-245.
[27]Li Yuanzhe,Zhou Ao,Ma Xiao,et al. Profit-aware edge server placement [J]. IEEE Internet of Things Journal,2022,9(1): 55-67.
[28]Wang Shangguang,Guo Yan,Zhang Ning,et al. Delay-aware microservice coordination in mobile edge computing: a reinforcement learning approach [J]. IEEE Trans on Mobile Computing,2021,20(3): 939-951.
[29]Lopez P A,Wiessner E,Behrisch M,et al. Microscopic traffic simulation using SUMO [C]// Proc of the 21st International Conference on Intelligent Transportation Systems. 2018.
[30]Mahmud R,Pallewatta S,Goudarzi M,et al. IFogSim2: an extended iFogSim simulator for mobility,clustering,and microservice management in edge and fog computing environments [J]. Journal of Systems and Software,2022,190: 111351.
[31]Dean J,Ghemawat S. MapReduce: simplified data processing on large clusters [J]. Communications of the ACM,2008,51(1): 107-113.
[32]Yair G A,Lu Pengyuan,Li Hao,et al. OpenStreetMap,beyond just data: the academic track at state of the map 2022 [C]//Proc of Map. 2022.
[33]Liu Lei,Chen Chen,Pei Qingqi,et al. Vehicular edge computing and networking: a survey [J]. Mobile Networks and Applications,2021,26(3): 1145-1168.
[34]Martin R C. The open-closed principle [J]. More C+Gems,1996,19(96): 9.
[35]Murali P K,Kaboli M,Dahiya R. Intelligent in-vehicle interaction technologies [M]// Advanced Intelligent Systems. [S.l.]: Wiley,2022: 2100122.
[36]張依琳,梁玉珠,尹沐君,等. 移動邊緣計算中計算卸載方案研究綜述 [J]. 計算機學報,2021,44(12): 2406-2430. (Zhang Yilin,Liang Yuzhu,Yin Mujun,et al. Survey on the methods of computation offloading in mobile edge computing [J]. Chinese Journal of Computers,2021,44(12): 2406-2430.)