向雨馨 陸淵祖 馬天闊 蔣煒樂 陳曦
摘? 要:實現(xiàn)復雜的網(wǎng)絡系統(tǒng)代價往往較高或不現(xiàn)實,而傳統(tǒng)的網(wǎng)絡模擬仿真均使用二維界面,并利用抽象的命令行進行操作,可視化和交互性差。針對上述問題,將數(shù)字孿生技術作為網(wǎng)絡技術研究的一種有效的現(xiàn)代化測試、評估和驗證手段,便捷、可視化地針對現(xiàn)有網(wǎng)絡系統(tǒng)進行模擬仿真,有效提高網(wǎng)絡仿真平臺的保真度與交互性,從而打破多數(shù)仿真工具的局限,提供更豐富的仿真服務,具有十分廣闊的前景。
關鍵詞:數(shù)字孿生;網(wǎng)絡仿真;可視化網(wǎng)絡;高交互
中圖分類號:TP391.9? ? 文獻標識碼:A? ? 文章編號:2096-4706(2023)17-0088-04
Three Dimensional Visualization Network Simulation Platform Based on
Digital Twin Technology
XIANG Yuxin, LU Yuanzu, MA Tiankuo, JIANG Weile, CHEN Xi
(School of Computer Science and Engineering, Southwest Minzu University, Chengdu? 610041, China)
Abstract: The implementation of complex network systems is often costly or impractical, while traditional network simulation uses two-dimensional interfaces and abstract command lines for operation, with poor visualization and interactivity. To address these problems, this paper uses digital twin technology as an effective modern test, evaluation and verification tool for network technology research, to simulate existing network systems conveniently and visually. It effectively improves the fidelity and interactivity of network simulation platforms, thus breaking the limitations of most simulation tools and providing richer simulation services. It has a very broad prospect.
Keywords: digital twin; network simulation; visualization network; high interactivity
0? 引? 言
網(wǎng)絡仿真對于網(wǎng)絡協(xié)議、設備的研發(fā)具有重要的預研價值。業(yè)界已有多款流行的網(wǎng)絡仿真工具,如OMNeT++、NS-3、GNS3、Packet Tracer等,但存在著使用可視化、交互性有待進一步提升等問題,不利于降低網(wǎng)絡仿真工具的使用門檻,也不利于用戶直觀理解網(wǎng)絡設備構(gòu)造、網(wǎng)絡拓撲結(jié)構(gòu)和網(wǎng)絡運行過程。
針對此問題,可通過Unity等相關技術,實現(xiàn)“數(shù)字孿生+網(wǎng)絡仿真”的混合呈現(xiàn)。在部署了基于Docker的虛擬實驗網(wǎng)絡之后,將網(wǎng)絡設備、網(wǎng)絡拓撲結(jié)構(gòu)進行3D建模,為實驗網(wǎng)絡創(chuàng)建一個數(shù)字孿生,實現(xiàn)“虛實結(jié)合”[1],使網(wǎng)絡仿真不再只是抽象的命令行接口,而是3D的圖形界面,賦予網(wǎng)絡仿真沉浸式體驗。數(shù)據(jù)流在網(wǎng)絡中的傳輸過程、各種網(wǎng)絡協(xié)議的建立流程、設備運行狀態(tài)等信息可以通過數(shù)字孿生中的3D特效進行展示,賦予網(wǎng)絡仿真沉浸式體驗[2]。
1? 相關技術
1.1? Unity3D
Unity3D[3]是由丹麥Unity Technologies公司開發(fā)的綜合性多平臺的游戲開發(fā)工具。使用Unity3D可實現(xiàn)多平臺一次性開發(fā)且兼容性較好。本平臺主要使用Unity3D開發(fā)前端數(shù)字孿生引擎以創(chuàng)建3D圖形化界面。
1.2? 3D Studio Max
3D Studio Max(3D Max)是Discreet公司開發(fā)的基于PC系統(tǒng)的3D建模渲染和制作軟件。本平臺使用3D Max對網(wǎng)絡設備進行建模從而進行三維呈現(xiàn)。
1.3? Shader
Shader[4](著色器)是用來實現(xiàn)圖像渲染的,用來替代固定渲染管線的可編輯程序。其中Vertex Shader(頂點著色器)主要負責頂點的幾何關系等的運算,Pixel Shader(像素著色器)主要負責片元顏色等的計算。本平臺使用Shader技術來實現(xiàn)模擬傳輸數(shù)據(jù)時線條傳輸?shù)牧鞴庖曈X效果。
2? 設計思路與方案
2.1? 整體架構(gòu)
平臺基于數(shù)字孿生理念,由前期自主研發(fā)的后端網(wǎng)絡仿真引擎(“實”)和前端數(shù)字孿生引擎(“虛”)兩大部分組成,并進行了“虛實結(jié)合”[5],如圖1所示。
在上述系統(tǒng)架構(gòu)下,平臺提供網(wǎng)絡仿真交互功能、協(xié)議原理展示功能兩大功能。平臺既具備實驗網(wǎng)絡的模擬仿真功能,又具有3D可視化交互功能,通過讀取已部署的拓撲結(jié)構(gòu)描述文件,為其提供數(shù)字孿生的交互式3D界面,打破了多數(shù)仿真工具的局限,提高了仿真網(wǎng)絡的可交互性。
2.1.1? 后端網(wǎng)絡仿真引擎
基于虛擬交換機(Open VSwitch, OVS)技術和Docker輕量級容器化技術創(chuàng)建實驗網(wǎng)絡運行環(huán)境,用戶可以根據(jù)需要,創(chuàng)建由多個Docker容器、OVS交換機構(gòu)成的虛擬拓撲結(jié)構(gòu),可供用戶選擇部署實驗,監(jiān)控網(wǎng)絡設備的運行狀態(tài)、模擬實驗網(wǎng)絡行為、分析實驗網(wǎng)絡狀態(tài),實現(xiàn)故障定位、故障預警等功能,并將數(shù)據(jù)反饋至前端數(shù)字孿生引擎。
2.1.2? 前端數(shù)字孿生引擎
基于Unity3D和C#腳本為仿真的實驗網(wǎng)絡創(chuàng)建一個可交互3D的數(shù)字孿生場景,對實驗網(wǎng)絡及其運行狀態(tài)進行可視化并呈現(xiàn)在3D的可視化場景中,可直觀地顯示數(shù)據(jù)流在實驗網(wǎng)絡中的傳輸過程、各種網(wǎng)絡協(xié)議的建立流程、設備運行狀態(tài)等信息可以通過虛擬世界中的3D特效進行展示,賦予網(wǎng)絡仿真沉浸式體驗。網(wǎng)絡設備的管理也可通過3D圖形化界面進行交互,網(wǎng)絡管理更加便捷。
2.2? 網(wǎng)絡仿真交互功能
2.2.1? 網(wǎng)絡拓撲讀取模塊
后端網(wǎng)絡仿真引擎最終生成的仿真的實驗網(wǎng)絡均由軟件進行模擬,具有不可見性,不利于展示網(wǎng)絡拓撲結(jié)構(gòu)、觀察設備的狀態(tài)及用戶進行各類仿真操作。前端數(shù)字孿生引擎通過網(wǎng)絡拓撲讀取模塊,動態(tài)讀取JSON,獲取網(wǎng)絡節(jié)點設備類型信息、位置信息等功能,為后續(xù)實驗網(wǎng)絡3D呈現(xiàn)做好了數(shù)值準備,有利于更直觀地展示用于仿真的實驗網(wǎng)絡[6]。另外,平臺也提供了JSON文件中拓撲的數(shù)據(jù),使得用戶可以跨平臺使用,進行二次開發(fā)。
2.2.2? 網(wǎng)絡3D呈現(xiàn)模塊
在對網(wǎng)絡拓撲進行3D呈現(xiàn)時,網(wǎng)絡拓撲讀取模塊通過獲取已經(jīng)部署的實驗網(wǎng)絡的關鍵信息,對網(wǎng)絡節(jié)點進行3D呈現(xiàn),對網(wǎng)絡拓撲進行3D構(gòu)建,如圖2及圖3所示,可以多視角、多角度觀察網(wǎng)絡拓撲,用戶可以采用鼠標切換3D數(shù)字孿生場景中的觀看視角及觀看距離,也可針對某個網(wǎng)絡設備進行點擊、拖拽網(wǎng)絡設備變更位置等操作,也可右擊某個網(wǎng)絡設備后選擇需要操作菜單來對設備的參數(shù)進行配置、訪問等,實現(xiàn)圖形化的操作界面[7]。
2.2.3? 網(wǎng)絡仿真交互模塊
在網(wǎng)絡拓撲3D呈現(xiàn)實現(xiàn)后,前端數(shù)字孿生引擎根據(jù)設備的類型,在實驗場景中提供對應的圖形化控件,彈出網(wǎng)絡節(jié)點的按鈕菜單,將仿真數(shù)據(jù)與拓撲模型相結(jié)合,來交互式地調(diào)用多種仿真工具,使拓撲模型具有可操作性,從而實現(xiàn)可測試的數(shù)據(jù)仿真,降低了操作的門檻。其原理是利用Linux系統(tǒng)的終端,通過在終端輸入調(diào)用Docker接口的命令行語句,實現(xiàn)發(fā)包、抓包、調(diào)用終端輸入命令、彈出瀏覽器等功能[8]。
2.3? 協(xié)議原理展示功能
平臺不僅能夠動態(tài)實現(xiàn)網(wǎng)絡仿真,還能以動畫的形式對協(xié)議原理進行展示。協(xié)議原理動畫配有語音講解及文字說明,用戶不僅可以查看網(wǎng)絡設備的各項參數(shù),還能進行發(fā)包、收包、打開終端輸入指令、打開瀏覽器等操作,有利于教師教學以及學生學習,有助于課堂教學及線上教學。
2.4? 用戶界面設計
平臺具有十分直觀的圖形化界面,主要分為網(wǎng)絡設備信息、圖形化操作按鈕、三維可視化界面三個板塊。
2.4.1? 網(wǎng)絡設備信息
網(wǎng)絡設備信息:此部分顯示網(wǎng)絡拓撲結(jié)構(gòu)圖內(nèi)所有節(jié)點設備及其內(nèi)部功能的調(diào)用,用戶可以點擊網(wǎng)絡節(jié)點查看其參數(shù),如MAC地址、IP地址、端口號等。
2.4.2? 圖形化操作按鈕
圖形化操作按鈕:此部分通過點擊對應按鈕,使得用戶可以通過點擊按鈕直接對實驗網(wǎng)絡直接進行操作,省去了用戶自主編寫代碼的過程,操作簡便,有利于用戶進行實驗。
2.4.3? 三維可視化界面
三維可視化界面:此部分以三維的形式向用戶展示更為直觀的網(wǎng)絡拓撲結(jié)構(gòu),在實驗網(wǎng)絡成功部署后展現(xiàn)3D呈現(xiàn)的實驗網(wǎng)絡,可視化程度較高。
3? 方案實現(xiàn)
3.1? 網(wǎng)絡拓撲讀取的實現(xiàn)
前端數(shù)字孿生引擎采用由C#編寫的網(wǎng)絡拓撲讀取模塊進行動態(tài)讀取JSON,通過對后端網(wǎng)絡仿真引擎拖拽設計網(wǎng)絡拓撲結(jié)構(gòu)生成的JSON描述文件進行解析,將函數(shù)封裝、序列化,然后根據(jù)描述信息實現(xiàn)對網(wǎng)絡的3D構(gòu)建,為用戶更好地展示網(wǎng)絡結(jié)構(gòu)和觀察設備,利于仿真操作。
3.2? 網(wǎng)絡3D呈現(xiàn)的實現(xiàn)
為了動態(tài)呈現(xiàn)3D界面,首先要將各網(wǎng)絡節(jié)點設備模型作為預制體存儲,當用戶點開3D圖形化操作界面時,網(wǎng)絡拓撲讀取模塊立即獲取用戶所選擇的實驗網(wǎng)絡拓撲結(jié)構(gòu)對應的JSON描述文件。利用獲取到的網(wǎng)絡節(jié)點設備類型和數(shù)量等信息,網(wǎng)絡3D呈現(xiàn)模塊依照指定數(shù)量將各類型網(wǎng)絡節(jié)點設備的預制體實例化到3D界面的指定位置,并根據(jù)描述信息調(diào)節(jié)網(wǎng)絡節(jié)點設備的角度、大小等參數(shù)。同時,以子對象的形式在對應網(wǎng)絡節(jié)點設備中生成指定數(shù)量的端口,并為端口添加連線組件LineRenderer,然后根據(jù)網(wǎng)絡節(jié)點的鏈路描述信息,獲取端口間的映射得到連線終點,實現(xiàn)對網(wǎng)絡節(jié)點設備的連線[8]。
3.3? 網(wǎng)絡仿真交互的實現(xiàn)
通過在網(wǎng)絡仿真交互模塊中采用各類內(nèi)置或自定義組件可實現(xiàn)3D界面中的交互功能,如在3D界面中使用鼠標切換觀看視角及觀看距離、對某個網(wǎng)絡設備進行點擊、拖拽等操作。
圖4為生成交互菜單的C#腳本,網(wǎng)絡仿真交互模塊將該腳本添加至網(wǎng)絡3D呈現(xiàn)模塊存儲的預制體中并轉(zhuǎn)換為自定義組件。當預制體實例化后,網(wǎng)絡仿真交互模塊將生成交互按鈕,并通過網(wǎng)絡拓撲讀取模塊獲取實例化網(wǎng)絡節(jié)點設備的名稱、IP等信息,以菜單窗口的形式呈現(xiàn)于3D界面。同時,當用戶點擊網(wǎng)絡仿真交互模塊生成的交互按鈕時,利用C#中的Process類連通用戶的電腦終端,通過預先編寫的Docker命令行,可以快捷打開終端和進入發(fā)包、抓包程序以及瀏覽器,實現(xiàn)對網(wǎng)絡節(jié)點設備內(nèi)部功能的調(diào)用。
3.4? 用戶界面的優(yōu)化
為了在3D界面中實現(xiàn)界面的美化,提升用戶體驗、沉浸感,以及能夠更加直觀地觀察到實驗網(wǎng)絡的信息映射,并能進行實時感知,動態(tài)呈現(xiàn),可通過編寫Shader代碼來對圖形進行渲染,實現(xiàn)流光等效果。首先將輸入的網(wǎng)格和輸入的貼圖組合、輸出,從而得到一個圖形,然后編寫Shader以及通過C#與后端網(wǎng)絡仿真引擎通信獲取已部署實驗網(wǎng)絡的吞吐率、時延、抖動、帶寬、負載等信息來對該Shader的特定的參數(shù)進行設置后得到一個材質(zhì),最后將材質(zhì)賦予合適的渲染器來進行渲染指定的圖形對象。
3.5? 協(xié)議原理動畫展示功能
為了用于網(wǎng)絡協(xié)議原理的展示,首先要在Unity中創(chuàng)建3D場景,讀取JSON文件后,在3D圖形化操作界面中部署網(wǎng)絡設備,并動態(tài)生成端口號等物理參數(shù),然后通過線條連接各個網(wǎng)絡設備,生成網(wǎng)絡拓撲結(jié)構(gòu),并通過調(diào)節(jié)Shader參數(shù)實現(xiàn)特殊效果,添加對當前網(wǎng)絡協(xié)議原理的講解音頻,利用C#腳本控制模型的出現(xiàn)、消失和銷毀等狀態(tài),通過Shader代碼中的時間參數(shù),調(diào)節(jié)線條中流光效果的方向和流動的時間點,最終實現(xiàn)對網(wǎng)絡協(xié)議原理的動畫展示[9]。
如圖5、圖6、圖7和圖8所示,分別為計算機網(wǎng)絡中的單播與多播的關系、CSMA/CD協(xié)議、TCP三次握手、RIP協(xié)議原理的動畫展示。
4? 結(jié)? 論
本平臺相較于已有的仿真平臺做出了可視化、圖形化操作、高交互性的改進,提供了豐富的網(wǎng)絡模擬仿真功能,為運行中的網(wǎng)絡呈現(xiàn)三維可視化的拓撲結(jié)構(gòu)和網(wǎng)絡設備,展示數(shù)據(jù)流在網(wǎng)絡中的傳輸過程、各種網(wǎng)絡協(xié)議的建立流程、設備運行狀態(tài)等信息,且提供了網(wǎng)絡協(xié)議原理動畫的展示,同時三維可視化網(wǎng)絡操作更加簡便直觀,實現(xiàn)了后端網(wǎng)絡仿真引擎與前端數(shù)字孿生引擎的數(shù)據(jù)交互,簡單直接,且可以實時查看實驗網(wǎng)絡中發(fā)生的變化。有助于課堂教學及科研人員進行實驗,具有良好的教學、科研及商用前景。
參考文獻:
[1] 康卿彬,張衛(wèi)同,賈舵,等.基于虛擬現(xiàn)實技術的網(wǎng)絡運維可視化系統(tǒng)設計與實現(xiàn) [J].智能建筑與智慧城市,2022(12):142-144.
[2] 王駿,韋文亮.計算機網(wǎng)絡運維及安全管理設計優(yōu)化策略探究 [J].電腦知識與技術,2021,17(21):46-47+50.
[3] 王瑾.基于Unity3D手機游戲性能優(yōu)化技術的研究 [J].現(xiàn)代工業(yè)經(jīng)濟和信息化,2015,5(22):94-96.
[4] 劉文韜.Blender 3D渲染機制研究 [D].南京:南京郵電大學,2016.
[5] 陳宇,韓久江,劉建,等.云環(huán)境下面向“虛實融合”網(wǎng)絡的SDN構(gòu)建方法 [J].計算機工程與應用,2023,59(3):234-243.
[6] 符永銓,趙輝,王曉鋒,等.網(wǎng)絡行為仿真綜述 [J].軟件學報,2022,33(1):274-296.
[7] 鄭健平.三維顯示中圖像生成技術的研究 [D].北京:北京郵電大學,2021.
[8] 任曉鵬,李偉華.基于Packet Tracer構(gòu)建虛擬網(wǎng)絡實訓平臺 [J].中國職業(yè)技術教育,2006(27):44+46.
[9] 陳曦,吳濤.輕量級虛擬化技術在計算機網(wǎng)絡教學中的應用研究 [J].教育教學論壇,2020(38):371-372.
作者簡介:向雨馨(2002—),女,漢族,四川綿陽人,本科在讀,研究方向:軟件定義網(wǎng)絡;陸淵祖(2002—),男,漢族,廣西南寧人,本科在讀,研究方向:計算機科學與技術;馬天闊(2000—),男,蒙古族,河北承德人,本科在讀,研究方向:軟件工程;蔣煒樂(2001—),男,漢族,福建泉州人,本科在讀,研究方向:深度學習;通訊作者:陳曦(1985—),男,漢族,重慶永川人,副教授,博士,主要研究方向:無線網(wǎng)絡、軟件定義網(wǎng)絡、網(wǎng)絡虛擬化、人工智能。