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