Oversim简介

     OmnetPP是一个跨平台的离散时间事件仿真程序, 功能蛮强大的,而且还开源。但是我看了一下他的许可证,他并不是基于GPL的。 估计作者希望将来能把这个东西做大盈利,但是目前来看只要不是商业使用,就完全开源和免费,这是很不错的。同类的仿真软件还有NS2,但是NS2对于p2p的仿真似乎一直没有专门的团队来支持,需要自己付出大量的工作,所以意义不大。其次,OmnetPP的一个吸引我的地方是图形界面和实时显示能力,这个是NS2所没有, NS2是基于仿真结果数据来显示仿真状况,属于电影回放playback类型,而omnetPP是属于现场直播Live, 很适合在早期发现设计中的错误。 OmnetPP只是一个通用的网络仿真软件,在其上需要对计算机网络进行仿真,需要INET模块。

 

INET模块是一个独立的计算机通信网络协议集在OmnetPP上的实现, 包括从物理层到应用层的网络协议,真让人叹为观止。 而且这个模块有专门的团队负责维护,文档方面非常完备。就这点我就没理由不用它了。 INET模块主要用于互联网的仿真, 由于我只是希望对P2P这类特定应用进行仿真,所以INET的细节方面并不是我所关注的,它只是我所需要的Oversim模块所必须的下层模块,所以在这里提一下。

 

Oversim模块根据他的名字就看出他主要是用于Overlay类型的应用层网络仿真所设计的。但是在实际的开发中,他却主要用在目前主要的那些P2P应用协议的仿真上了。 Oversim的底层是建立在一套简化的UDP协议之上(依靠了INET里面的实现),在其上,他定义了一套层次框架,由下至上为 OverlayApplicatoin Tier1 Applicatoin Tier2 Applicatoin Tier3 . 根据其设计的说明, Overlay层用于包括通用的底层Overlay协议的实现。而上层具体的应用,可以一层一层的叠加上去,作为Tier1Tier2 Tier3。拿P2P的仿真来举例,通用的Pastry协议的实现就是放在Overlay这层的,而可以利用Pastry的各种应用,比如p2p存储, 聊天,媒体播放功能可以作为Tier1层堆叠上去。 各个层次的对上层接口都由Oversim定义,也可以自己扩充(我就扩充了一套专门用于媒体数据传输的接口)。可以说Oversim提供了一个很不错的P2P设计的程序框架的参考。

 

实验室选取的仿真平台为oversim,它是一个基于OMNET++的专门用来仿真P2P网络应用的开源仿真模块。首先在这里介绍一下oversim的结构特点,以后关于oversim的具体分析也会写出来供大家参考。

 

    大结构来说,从下至上依次为OMNET,INET,OVERSIM。因为OVERSIM是依托于OMNET的,所以对于OMNET的学习也是必须的,OMNeT++是高度模块化的,模块是用NED语言定义的,这些模块或者是复合模块(compound  modules)——由其他模块                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     组合而成的,或者是简单模块(simple  modules)——直接用C++实现。模块之间通过gate和connection来通信交换信息的。提供可视化工具GUI 显示网络拓扑结构、节点和信息。

 

   OVERSIM的结构也是分为三个层次,从下至上依次为underlay,overlay,application。

 

一、     Underlying network  model

 

     具有三种网络模型:simple、singleHost、INET

 

1、simple underlay: 每个节点存储一张全局路由表,数据包是从一个节点直接传送到另一节点上,它的时延或者是一衡量或者和节点之间的距离有关。

 

2、SingleHost  underlay:每个OverSim实例只能仿效一个单一的Host,在真实的Internet网络上它能和其他实例即其他Host相连接。

 

3、 INET:INET underlay模型是从OMNeT++里的INET构架上衍生而来的,它包含下部是MAC层的所有网络层的仿真模块。如果需要的话,它对整个骨干网的仿真是非常有用的。INET构架还包括对IEEE802.11(即无线局域网)网络的物理层的仿真模型,故它还能对ad hoc网络进行仿真。这些所有的underlaying网络模型都有一致与Overlay协议的UDP/IP接口,所以对于Overlay层来说下面的不同的underlay网络模型都是透明的。

 

 

 

二、Overlayprotocols

 

    大多数是有结构的p2p协议,如:Chord、Kademlia、Koorde、Broose,还有无结构的p2p协议,如GIA。

 

本层具有一些功能:

 

1、Overlay信息处理(RPC和统计资料数据)

 

   Overlay信息处理者提供RPC接口帮助处理由于包丢失引起的超时和包重发;还收集统计数据的信息,如节点发送,接收,转发和丢失的包的数量

 

2、一般的查找功能

 

    提供一般的迭代查找和递归查找接口,还包括仿真恶意节点的行为。

 

3、提供Overlay拓扑结构的可视化

 

4、有一个叫Global Observe的模块,现主要提供两个功能:

 

    一是作为一个Bootstrap Oracle,为那些想加入Overlay网络的节点提供一个Overlay网络中已存在的随机节点的地址,二是可用于一个全局统计资料的收集者。

 

5、 Common API

 

    用于Overlay和应用层之间的通信。对于每个想用这个API的Overlay协议必须至少提供一个KBR(key-based routing interface基于Key的路由接口)给应用层。实现DHT的Overlay协议能够用一个KBR接口为应用层提供服务。

 

  三、Applications

 

   KBR test应用依赖于参数值,周期地发送检测信息,随即的Overlay key 或nodesIDs,并记录信息延时和跳数。不久前OVERSIM刚刚发布的最新的版本,最新版本中在增加了很多应用层仿真程序,如:P2PNS,组播应用等等。

 

 

OverSim

 

OverSim是一个开源的覆盖网仿真框架,它工作在OMNET++/OMNEST仿真环境下。这一P2P仿真器包含了多个P2P协议,例如结构化覆盖网中的chord,Kademilia,Pastry,                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       非结构化覆盖网中的GIA。

  OverSim由Telematics (research group Prof.Zitterbart)研究所,Universit?tKarlsruhe (TH)共同开发, 隶属于ScaleNet项目,由德国联邦政府的教育科研资金支持,它可以运行在Linux,Windows,MAC OS X 和Maemo平台上.

  OverSim有如下几个特点:

  灵活性:仿真器支持结构化和非结构化覆盖网(目前Chord,Pastry, Bamboo, Koorde, Broose, Kademlia, GIA, Vast, and Publish-Subscribe forMMOGs已经实现). 模块化设计和通用API的使用使扩展新的特点和协议更加方便。模块行为可以有用户可见的配置文件中自行定制。

  交互式GUI:为了验证和测试新的或是已有的覆盖网协议,你可以使用OMNeT++的GUI界面,它使网络拓扑结构,消息和节点状态变化如路由表一般可视化。

  可交换的底层网络模块:我们的方针框架有灵活的底层网络模式,一方面提供完全网络拓扑配置---可实现的带宽、包的延迟、包丢失;另一方面为仿真提供快速的模型性能表现。

  可扩展性:Oversim以性能为设计目标,在当前流行配置的一台PC上,一个典型的有10000个节点的chord网络可以实现实时仿真,我们甚至成功仿真了具有100,000个节点的网络。

  基层覆盖网类:基层覆盖网类通过为应用提供RPC界面,遗传查找类和通用API关键路由接口使得结构化覆盖网协议的设计非常方便。

  不同的路由模式:所有已经实现的KBR协议支持以下路由模式:递归,穷尽递归,半递归,全递归和源路由递归(iterative, exhaustive-iterative, semi-recursive, full-recursive, andsource-routing-recursive).

  仿真代码的重用:在实际网络应用中的不同协议实现是可以重用的,因此研究者可以通过于实际网络数据(PlanetLab)的 比较验证仿真结果。因此仿真框架可以处理实际网络包并与其他相同的覆盖网协议通信。

  动态流失模型:仿真器支持不同的动态流失模型包含生命动态流失和Pareto动态流失模型。

  统计:仿真器收集不同的统计数据例如每个节点的发送、接收、转发数据量,成功或不成功传输的包,以及包的跳数。

 

Inet

  Inet是密歇根大学于1999~2002年间开发的一个AS级拓扑产生器,最新发布的是3.0版本。其特点是利用route-views.oregon-ix.net上从1997年11月到2002年2月间的大量BGP数据来确定拓扑度量的值,可信性很高。Inet采用PLGR算法与优先附着实现幂律,重视连通性(最小节点覆盖),并针对最大团尺寸和聚类系数做了优化。Inet使用简便,只需在命令行输入拓扑图节点总数即可。

 

OMNeT++  

基于离散事件的OMNeT++,是一个免费的、开源的多协议网络仿真软件,在网络仿真领域中占有十分重要的地位。OMNeT++英文全称是Obj                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     ectiveModular Network Testbed in C++,是近年来在科学和工业领域里逐渐流行的一种基于组件的模块化的开放的网络仿真平台。OMNeT++作为离散事件仿真器,具备强大完善的图形界面接口

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值