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