一种DYNAMO的流量生成系统实现

描述

这篇文章提出了一种名为DYNAMO的流量生成系统,通过使用GitHub的海量代码数据和Docker容器技术实现了大量特征流量的实时生成。该论文来自ETH Zürich的NSG团队。  

背景

生成具有指定特征的流量是许多网络研究人员的基本需求,例如测试网络设备、评估网络算法、评估网络服务等。问题在于,生成大量的特征流量是很困难的。

目前主流的方案有数据包重放和使用软硬件生成特征流量,然而这两种方案存在一定缺陷,例如不能有效生成指定特征的流量或不能捕获复杂的应用程序逻辑。

为此,文中提出了DYNAMO,通过利用GitHub代码共享平台获取海量的应用程序用于产生流量,并通过使用Docker容器技术部署这些程序,最后通过协调这些应用以产生符合指定特征的流量。  

挑战

实现DYNAMO主要需要解决以下几个挑战:

(1)如何在庞大的代码库中找到相关的应用程序?

(2)如何对每个应用程序产生的流量进行建模?

(3)如何选择用于生成流量的应用程序?

(4)如何协调应用程序?  

实现

DYNAMO的运行流程可以分成离线、引导和流量生成3个阶段。下图展示了DYNAMO的架构图,可以看到分成了两个部分,上面的部分代表离线阶段,下面的部分代表引导和流量生成阶段。  

DTS

离线阶段:该阶段只执行一次,用于搜索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个数据包,因为我们的很多流量都与数据库或类似的应用程序有关,它们经常产生短的流量。  

DTS

个人观点

本论文开创性地提出了一种能够大规模的实时生成指定特征的真实流量的方案,相比之前的流量生成方案能够更好的满足流量特征与保持应用程序逻辑。论文还指出,除了流量生成,研究人员可以利用GitHub仓库挖掘出另外的应用场景,开辟了一个新的研究领域。总的来说,论文提出了一种新的研究方法,并设计实现了DYNAMO证明了利用代码仓库中的项目实现流量生成的可行性。不过,文中对一些实现细节没有进行说明,例如如何在数以万计的项目中实现最优化组合。  

本文提出了一个开源的互联网仿真器,它是一个Python库,由互联网的每个基本元素的类和各种服务的类构成。许多其他有趣的网络技术也可以部署在仿真器上。使用该库,用户可以轻松构建一个具有真正互联网的所有基本要素的微型互联网。  

背景

在网络安全课程中,在教授BGP和攻击时,设计这样的实验并提供对应的实验平台十分困难。进行此类实验室的最有效方法是使用仿真器,但是不存在可以轻松用于此目的的互联网仿真器。尽管现有的网络仿真器很多,但互联网仿真和网络仿真是完全不同的。经过三年的开发,建立了一个名为SEED的互联网模拟器。它是一个Python库,由互联网的每个基本元素的类和各种服务的类构成。许多其他有趣的网络技术也可以部署在仿真器上。  

实现

一个好的互联网仿真器应该具有以下三个要素 :( 1) 网络仿真,(2) 互联网基础结构仿真,以及 (3) 服务基础结构仿真。  

典型的仿真器由三个部分组成:组成仿真,运行仿真以及与仿真器交互。SEED仿真器为第一部分和第三部分提供SDK(库和工具),同时依靠docker容器技术来运行仿真。图1说明了我们的方法。  

对于组成仿真部分,我们开发了一个开源的Python库,由互联网的每个基本要素的类组成,包括自治系统,网络,主机,路由器,BGP路由器,Internet交换等。它还包括各种服务的类,包括Web、DNS、僵尸网络、暗网和区块链。使用这些类,用户可以使用Python程序轻松构建自己的Internet仿真器。

组合最终被编译成容器文件,供Docker在单台机器或多台云机器上运行。仿真开始后,用户可以使用标准docker命令手动与容器进行交互,也可以使用我们开发的另一个库来促进与仿真器的交互。

DTS

模拟互联网基础设施

互联网由主机,路由器,网络,互联网交换和自治系统组成。自治系统使用BGP相互对等。要在仿真中构建互联网,我们提供与这些实体相对应的构建块(互联网交换,自治系统,EBGP对等,主机上的API, 混合模拟参与模拟,分布式模拟),用类似下图的代码片段实现,并开发了一个独立的基于网页的可视化工具Map来可视化在模拟器中发生了什么。  

DTS

模拟互联网服务基础设施

为了帮助用户在SEED仿真器中构建这些服务基础设施(Web服务器、DHCP服务器和电子邮件服务器,DNS、区块链、暗网、僵尸网络、内容交付网络 (CDN)等),对于这些服务中的每一个,我们都开发了一个Python类(下图为DNS基础设施的代码),它封装了复杂的设置细节。

  DTS

个人观点

本文提出了一个开源的互联网模拟器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)。在最右边的那列,其他人可以下载场景、运行场景已经重播开发人员共享的日志。

DTS

下图展现了应用程序是如何与场景进行对话的。应用程序使用实际设备常用的MQTT或REST等通信协议向模拟设备发送或接收消息。

DTS

用例

Digibox的实现也帮助了以下场景的研究和开发。  

智能空间。

这是指利用生活空间中的物联网设备来提高我们日常生活和工作的质量、效率和安全性的应用,如智能家居及智能楼宇。  

供应链物流。

这包括监视和优化供应链操作的应用程序。供应链应用程序可以将数据从物联网设备跨越不同位置、管理域和大量的物联网设备。  

城市遥感。

这些应用包括使用移动设备(如用户手机)收集有关环境的数据(例如,占用率、温度、噪音水平);这些数据随后在用户之间进行聚合,以提供见解。城市传感应用的原型化通常需要解决设备移动性问题,可以通过在Digibox中动态地将模拟对象重新附加到不同的场景中来模拟设备的移动性。  

个人观点

本文提出了一个物联网应用的原型环境Digibox。该工具让测试、调试和评估物联网应用程序的行为变得更加便利,同时也可以通过下载重用场景,能让其他人更好地重现物联网应用的实验结果。  






审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分