這篇文章提出了一種名為DYNAMO的流量生成系統(tǒng),通過使用GitHub的海量代碼數(shù)據(jù)和Docker容器技術(shù)實現(xiàn)了大量特征流量的實時生成。該論文來自ETH Zürich的NSG團隊。
背景
生成具有指定特征的流量是許多網(wǎng)絡(luò)研究人員的基本需求,例如測試網(wǎng)絡(luò)設(shè)備、評估網(wǎng)絡(luò)算法、評估網(wǎng)絡(luò)服務(wù)等。問題在于,生成大量的特征流量是很困難的。
目前主流的方案有數(shù)據(jù)包重放和使用軟硬件生成特征流量,然而這兩種方案存在一定缺陷,例如不能有效生成指定特征的流量或不能捕獲復雜的應(yīng)用程序邏輯。
為此,文中提出了DYNAMO,通過利用GitHub代碼共享平臺獲取海量的應(yīng)用程序用于產(chǎn)生流量,并通過使用Docker容器技術(shù)部署這些程序,最后通過協(xié)調(diào)這些應(yīng)用以產(chǎn)生符合指定特征的流量。
挑戰(zhàn)
實現(xiàn)DYNAMO主要需要解決以下幾個挑戰(zhàn):
(1)如何在龐大的代碼庫中找到相關(guān)的應(yīng)用程序?
(2)如何對每個應(yīng)用程序產(chǎn)生的流量進行建模?
(3)如何選擇用于生成流量的應(yīng)用程序?
(4)如何協(xié)調(diào)應(yīng)用程序?
實現(xiàn)
DYNAMO的運行流程可以分成離線、引導和流量生成3個階段。下圖展示了DYNAMO的架構(gòu)圖,可以看到分成了兩個部分,上面的部分代表離線階段,下面的部分代表引導和流量生成階段。
離線階段:該階段只執(zhí)行一次,用于搜索GitHub代碼庫以尋找并分析合適的開源代碼。為保證應(yīng)用程序能夠容易成功自動運行并能夠產(chǎn)生需要的流量,DYNAMO專注于基于Docker的項目,它們易于執(zhí)行,并定義了多個容器的連接方式。這些容器之間的通信通常是DYNAMO可以捕獲的網(wǎng)絡(luò)流量。此外,DYNAMO使用訪問令牌和增量查找解決了GitHub的速率和匹配限制。
引導階段:用于解析流量特征,以選擇對應(yīng)的開源項目,并為下一步的流量生成準備對應(yīng)的虛擬接口。DYNAMO使用DTSL (Declarative Traffic Specification Language)語法定義指定的流量需求,然后通過解析語法,以選擇一個開源項目的組合盡可能滿足流量需求。
DYNAMO將該問題轉(zhuǎn)換成了一個具有條件的優(yōu)化問題,并使用求解器解決。選擇完程序之后,DYNAMO會基于項目的自動化工具構(gòu)建程序,并使用協(xié)調(diào)層將容器與用戶連接起來,使用用戶可以獲取應(yīng)用生成的流量,并可以進行速率和流量限制以符合DTSL需求,為下一步流量生成做準備。
流量生成階段:該階段通過運行開源項目,并利用協(xié)調(diào)層組合流量以產(chǎn)生指定特征的流量。該階段的主要挑戰(zhàn)在于如何精確的控制開源項目以產(chǎn)生指定流量,DYNAMO通過配置程序產(chǎn)生的吞吐量來實現(xiàn)這一目標,同時使用速率限制或隧道技術(shù)進行調(diào)節(jié)。
實驗
論文主要對收集到的開源項目和運行項目后生成的流量數(shù)據(jù)進行了分析。首先,DYNAMO對GitHub中存在docker文件的開源項目進行搜索,總共找到了超過43萬的開源項目,并且成功執(zhí)行了其中約3.8萬個項目,項目不能夠成功運行的主要原因是項目中的運行命令不能夠成功運行代碼。
之后,DYNAMO對所有成功運行的程序進行了流量生成,經(jīng)分析,觀察到最多的流量類型有Web應(yīng)用、數(shù)據(jù)庫、比特幣或文件交換流量,產(chǎn)生數(shù)據(jù)包最多的應(yīng)用類型有網(wǎng)絡(luò)壓力和帶寬測試,產(chǎn)生數(shù)據(jù)流最多的應(yīng)用類型為消息代理。下圖展示了每個docker容器產(chǎn)生的流數(shù)量和每個流包含的數(shù)據(jù)包數(shù)量,可以看到約89容器至少包含一個TCP流,約16容器至少包含一個UDP流,且大多數(shù)流約有10個數(shù)據(jù)包,因為我們的很多流量都與數(shù)據(jù)庫或類似的應(yīng)用程序有關(guān),它們經(jīng)常產(chǎn)生短的流量。
個人觀點
本論文開創(chuàng)性地提出了一種能夠大規(guī)模的實時生成指定特征的真實流量的方案,相比之前的流量生成方案能夠更好的滿足流量特征與保持應(yīng)用程序邏輯。論文還指出,除了流量生成,研究人員可以利用GitHub倉庫挖掘出另外的應(yīng)用場景,開辟了一個新的研究領(lǐng)域。總的來說,論文提出了一種新的研究方法,并設(shè)計實現(xiàn)了DYNAMO證明了利用代碼倉庫中的項目實現(xiàn)流量生成的可行性。不過,文中對一些實現(xiàn)細節(jié)沒有進行說明,例如如何在數(shù)以萬計的項目中實現(xiàn)最優(yōu)化組合。
本文提出了一個開源的互聯(lián)網(wǎng)仿真器,它是一個Python庫,由互聯(lián)網(wǎng)的每個基本元素的類和各種服務(wù)的類構(gòu)成。許多其他有趣的網(wǎng)絡(luò)技術(shù)也可以部署在仿真器上。使用該庫,用戶可以輕松構(gòu)建一個具有真正互聯(lián)網(wǎng)的所有基本要素的微型互聯(lián)網(wǎng)。
背景
在網(wǎng)絡(luò)安全課程中,在教授BGP和攻擊時,設(shè)計這樣的實驗并提供對應(yīng)的實驗平臺十分困難。進行此類實驗室的最有效方法是使用仿真器,但是不存在可以輕松用于此目的的互聯(lián)網(wǎng)仿真器。盡管現(xiàn)有的網(wǎng)絡(luò)仿真器很多,但互聯(lián)網(wǎng)仿真和網(wǎng)絡(luò)仿真是完全不同的。經(jīng)過三年的開發(fā),建立了一個名為SEED的互聯(lián)網(wǎng)模擬器。它是一個Python庫,由互聯(lián)網(wǎng)的每個基本元素的類和各種服務(wù)的類構(gòu)成。許多其他有趣的網(wǎng)絡(luò)技術(shù)也可以部署在仿真器上。
實現(xiàn)
一個好的互聯(lián)網(wǎng)仿真器應(yīng)該具有以下三個要素 :( 1) 網(wǎng)絡(luò)仿真,(2) 互聯(lián)網(wǎng)基礎(chǔ)結(jié)構(gòu)仿真,以及 (3) 服務(wù)基礎(chǔ)結(jié)構(gòu)仿真。
典型的仿真器由三個部分組成:組成仿真,運行仿真以及與仿真器交互。SEED仿真器為第一部分和第三部分提供SDK(庫和工具),同時依靠docker容器技術(shù)來運行仿真。圖1說明了我們的方法。
對于組成仿真部分,我們開發(fā)了一個開源的Python庫,由互聯(lián)網(wǎng)的每個基本要素的類組成,包括自治系統(tǒng),網(wǎng)絡(luò),主機,路由器,BGP路由器,Internet交換等。它還包括各種服務(wù)的類,包括Web、DNS、僵尸網(wǎng)絡(luò)、暗網(wǎng)和區(qū)塊鏈。使用這些類,用戶可以使用Python程序輕松構(gòu)建自己的Internet仿真器。
組合最終被編譯成容器文件,供Docker在單臺機器或多臺云機器上運行。仿真開始后,用戶可以使用標準docker命令手動與容器進行交互,也可以使用我們開發(fā)的另一個庫來促進與仿真器的交互。
模擬互聯(lián)網(wǎng)基礎(chǔ)設(shè)施
互聯(lián)網(wǎng)由主機,路由器,網(wǎng)絡(luò),互聯(lián)網(wǎng)交換和自治系統(tǒng)組成。自治系統(tǒng)使用BGP相互對等。要在仿真中構(gòu)建互聯(lián)網(wǎng),我們提供與這些實體相對應(yīng)的構(gòu)建塊(互聯(lián)網(wǎng)交換,自治系統(tǒng),EBGP對等,主機上的API, 混合模擬參與模擬,分布式模擬),用類似下圖的代碼片段實現(xiàn),并開發(fā)了一個獨立的基于網(wǎng)頁的可視化工具Map來可視化在模擬器中發(fā)生了什么。
模擬互聯(lián)網(wǎng)服務(wù)基礎(chǔ)設(shè)施
為了幫助用戶在SEED仿真器中構(gòu)建這些服務(wù)基礎(chǔ)設(shè)施(Web服務(wù)器、DHCP服務(wù)器和電子郵件服務(wù)器,DNS、區(qū)塊鏈、暗網(wǎng)、僵尸網(wǎng)絡(luò)、內(nèi)容交付網(wǎng)絡(luò) (CDN)等),對于這些服務(wù)中的每一個,我們都開發(fā)了一個Python類(下圖為DNS基礎(chǔ)設(shè)施的代碼),它封裝了復雜的設(shè)置細節(jié)。
個人觀點
本文提出了一個開源的互聯(lián)網(wǎng)模擬器SEED,由互聯(lián)網(wǎng)的每個基本元素的類和各個服務(wù)的類構(gòu)成。用戶可以使用該庫輕松構(gòu)建一個包含需要部署的服務(wù)的微型互聯(lián)網(wǎng),用于教學工作和評估科研思路。
這篇?章來自加州大學伯克利分校的研究者。研究人員針對物聯(lián)網(wǎng)應(yīng)用實現(xiàn)了一種新穎的以場景為中心的原型設(shè)計,開發(fā)人員可以對一組模擬設(shè)備進行編程,不僅捕捉它們各自的行為,而且捕捉它們協(xié)調(diào)的行為,從而使測試、調(diào)試和評估物聯(lián)網(wǎng)應(yīng)用程序的行為成為可能。
背景
對于物聯(lián)網(wǎng)應(yīng)用,使用真實世界的設(shè)備建立測試床可能耗時且成本高昂。而使用原型環(huán)境(Prototyping Environments)是解決這一問題的方法之一。在其他領(lǐng)域中,已經(jīng)有大量的工作提供易于使用的原型環(huán)境,如系統(tǒng)和網(wǎng)絡(luò)領(lǐng)域的NS、MiniNet、iBox等。但現(xiàn)有的物聯(lián)網(wǎng)原型環(huán)境往往具有諸多不足之處。所以基于這些其他領(lǐng)域的原型環(huán)境的啟發(fā),研究團隊也希望為物聯(lián)網(wǎng)應(yīng)用構(gòu)建一個靈活的、可擴展的原型環(huán)境。
目標及成果
作者認為物聯(lián)網(wǎng)的原型環(huán)境應(yīng)當具有以下幾個設(shè)計目標:
通用性
集成支持
交互性
可重現(xiàn)性
可伸縮性
可定制性和可重用性
本文提出了一個同時實現(xiàn)這些目標的原型環(huán)境Digibox。Digibox支持一種新穎的以場景為中心的原型設(shè)計,它有兩個部分:模擬設(shè)備和場景。模擬設(shè)備模擬個別裝置行為(例如,傳感器產(chǎn)生數(shù)據(jù)、致動器響應(yīng)應(yīng)用或用戶命令),而場景可產(chǎn)生事件(例如,房間內(nèi)有人存在)并集成附在其上的模擬設(shè)備的行為(例如,房間場景與附在其上的運動傳感器綁定并對人的存在做出相應(yīng))。開發(fā)人員可以使用Digibox的Python開源編程庫輕松地編寫模擬設(shè)備和場景。目前Digibox的開源項目中包含20個模擬設(shè)備(如入住、風扇、燈具、暖通空調(diào))和18個場景(如建筑、校園、零售、供應(yīng)鏈、家庭),將來還會有更多的內(nèi)容提供。
實現(xiàn)
下圖給出了使用Digibox對應(yīng)用程序進行原型化以及其他人再現(xiàn)設(shè)置和結(jié)果的高級工作流程。對于原型,如左兩列所示,開發(fā)人員在應(yīng)用程序框架(1)中編寫應(yīng)用程序,例如SmartThings, Home Assistant, dSpace),同時使用Digibox的編程庫編寫場景(2)。開發(fā)人員可以在場景中指定與應(yīng)用程序功能相關(guān)的場景邏輯。另外,該場景可以被其他開發(fā)人員下載、重用或者自定義。開發(fā)人員可以使用Digibox的命令行工具運行場景(3),運行應(yīng)用程序(4),以此來讓應(yīng)用程序使用場景。在運行過程中,Digibox記錄場景中生成的事件、動作和消息,以便開發(fā)人員可以使用它們來調(diào)試或者分析應(yīng)用程序(5)。在最右邊的那列,其他人可以下載場景、運行場景已經(jīng)重播開發(fā)人員共享的日志。
下圖展現(xiàn)了應(yīng)用程序是如何與場景進行對話的。應(yīng)用程序使用實際設(shè)備常用的MQTT或REST等通信協(xié)議向模擬設(shè)備發(fā)送或接收消息。
用例
Digibox的實現(xiàn)也幫助了以下場景的研究和開發(fā)。
智能空間。
這是指利用生活空間中的物聯(lián)網(wǎng)設(shè)備來提高我們?nèi)粘I詈凸ぷ鞯馁|(zhì)量、效率和安全性的應(yīng)用,如智能家居及智能樓宇。
供應(yīng)鏈物流。
這包括監(jiān)視和優(yōu)化供應(yīng)鏈操作的應(yīng)用程序。供應(yīng)鏈應(yīng)用程序可以將數(shù)據(jù)從物聯(lián)網(wǎng)設(shè)備跨越不同位置、管理域和大量的物聯(lián)網(wǎng)設(shè)備。
城市遙感。
這些應(yīng)用包括使用移動設(shè)備(如用戶手機)收集有關(guān)環(huán)境的數(shù)據(jù)(例如,占用率、溫度、噪音水平);這些數(shù)據(jù)隨后在用戶之間進行聚合,以提供見解。城市傳感應(yīng)用的原型化通常需要解決設(shè)備移動性問題,可以通過在Digibox中動態(tài)地將模擬對象重新附加到不同的場景中來模擬設(shè)備的移動性。
個人觀點
本文提出了一個物聯(lián)網(wǎng)應(yīng)用的原型環(huán)境Digibox。該工具讓測試、調(diào)試和評估物聯(lián)網(wǎng)應(yīng)用程序的行為變得更加便利,同時也可以通過下載重用場景,能讓其他人更好地重現(xiàn)物聯(lián)網(wǎng)應(yīng)用的實驗結(jié)果。
審核編輯:劉清
-
DTS
+關(guān)注
關(guān)注
1文章
50瀏覽量
16070 -
TCP
+關(guān)注
關(guān)注
8文章
1347瀏覽量
78934 -
UDP協(xié)議
+關(guān)注
關(guān)注
0文章
68瀏覽量
12673 -
求解器
+關(guān)注
關(guān)注
0文章
77瀏覽量
4504
原文標題:HotNets 2022系列論文解讀——數(shù)字孿生網(wǎng)絡(luò)
文章出處:【微信號:SDNLAB,微信公眾號:SDNLAB】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論