深入学习one

本文详细介绍了一款基于代理的离散事件仿真器ONE的功能与特点,包括节点能力、移动建模、路由协议、应用建模等方面的内容,适用于网络研究与教学。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Introduction

整个仿真最重要的部分就是routing和forwarding 算法的设计。在ONE中,并没有专门去涉及底层的东西,只是简单地可以设置data rate,radio range等等,这样就可以产生一定的数据量。

2.The ONE Simulator

ONE是一个agent-based的
离散事件仿真器。它的重要功能就是使用不同的interfaces,routing,message handling以及application interactions来进行模拟node movement,inter-node contacts。

node根据movement models来进行移动。

messages通常来说总是unicast,只有一个source和destination host。

A.Node Capabilities

simulator里面最基本的单元叫做node。一个node用来模拟可以作为store-and-forward的router的
移动终端 (比如持有所要求的硬件的行人,汽车,电车等)。

每个node都模拟了一些
性能,radio interfaces,persistent storage,movement,energy consumption,message routing 和 application interactions。

关于底层的东西,这里面都没有怎么涉及,只是在配置文件中设定参数,比如data rate,radio range,不过这些都跟具体的interface有关,比如蓝牙或者wifi。

关于energy consumption,我暂时就不考虑了,仿真器里面本身考虑得也很简单。

B.Mobility Modeling

Mobility models定义了生成path的算法和规则。3种:a)random movement b) map-constrained random movement c) human behavior based movement

1)Map-Based Mobility

任意的Well Known Text (WKT)格式的地图数据都可以用于map-based movement model

模拟人的运动使用ShortestPathMapBasedMovement(里面可以添加感兴趣的点,shop,park之类的),模拟汽车电车等等车的运动使用RouteMapMovement(这样就可以使他们按照既定的路线走,比如说汽车不能走到商店里,电车只能按照路轨来走)

2)Working Day Movement Model

这个Model模拟了3种主要的activities, a)Sleeping at home b)Working at the office c)going out with friends in the evening。这三种activities的转换是依照一天的时间来的。

这个model包括3种运动的models,move alone or in groups by walk, driving or riding a bus。

最后,这个模式引入了communities and social relationships,communities是那种在同一个office工作,在同一个evening activity spot的人,或者live together。

3) Composite Movement Models

就是说有些node可以簇拥在一个地方,比如shops,parks,他们在里面randomly运动,令一些nodes按照route来走。这样就形成了几团人在固定的区域运动,还有一行人或者车在他们之间或者外面随机运动。

C.Routing

这里先介绍6种。分为3类,single-copy,n-copy,unlimited-copy protocols。

1) Single-copy protocol

Direct Delivery和First Contact routing protocols都是single-copy,,意思就是每个message都只能有一份copy存在于网络中。

对于Direct Delivery协议来说,node携带messages直到它遇到final destination。

对于First Contact协议来说,node将messages传递给第一个遇到的node,这样就造成了通过random walk来寻找destination node。

2) n-copy protocol

Spray-and-Wait,可以通过配置文件来设置一个最大能存储或者说携带的copy数,在耗尽这个数字之前,都可以正常地传递copy。

这个地方有2个模式我不是很懂,一个是传半个copy,一个是传整个copy。

3)unlimited-copy protocol,一共有3个

Epidemic将messages复制给所有遇到的nodes。

PRoPHET试图根据node 的 encouter history 估计哪个node最有可能将message送到终点。

MaxProp也是遇到就复制,但是一旦某个message被送到终点,它就会明确地删除它们。另外,这个协议会首先考虑message hop counts和基于之前遇到的nodes的message delivery probabilities,然后排出一个顺序,根据这个顺序来send messages。

4)Adding Routing Protocols

所有的routing modules都从MessageRouter继承一些基本的功能,例如 simple buffer management,对各种消息事件的回调(比如说什么时候创建一个message,什么时候一个message传递给node)。那么一个router module必须能够handle这些诸如上面的这些事件,并且定义一些actions来应付node comes into or leaves the node's radio range这样的事件。


//这里插一句,就是router的部分其实主要是负责功能,比如创建message,传message,删message,存储message等等这些功能,而application是干什么的呢?它主要是调用我觉得,比如要删一条信息,点一个删除键,这个东西是在application的层面上来实现的,但是,一按下这个键以后,这样只是用户知道了,剩下的工作就由router来做了。

基本上来说,可以继承ActiveRouter,这样就可以得到由它提供的一些功能。比如说check 是不是所有的现在在buffer中的messages都以某个neighboring node作终点;offer 一些messages给neighboring nodes;处理succesfully transferred和aborted消息传输;实现了FIFO和随机顺序buffer管理。

对于Epidemic,Direct Delivery,和First Contact来说,他们只需要这些功能就行。

查看文章中具体的伪代码

更加advanced的routing moduls需要track node contacts,因此需要实现node 的discovery callback

D.Application Modeling

1)支持2种:一种是high-level modeling of unicast,还有一种是request-response interactions through message generators,详细的说就是通过application layer framework。

2)message generator可以用于通过定义source,destination,size,服从随机分布的interval来创建traffic,或者从外部文件读取。

3)application layer framework允许application modules 1) 接收消息 2)修改message,包括改变,添加,删除任何值和属性  3)向router传递信号说这个消息应该被drop掉 4)产生messages 5)在每个time step管理执行任意的actions。

4)在ONE中,messages并不能包含任何payload,都是使用name-value对,即所谓的属性。

5)application layer framework还支持report module。根据它创建events的一些参数和类型,report modules可以监听并且创建相关的reports

6)Adding Application Protocols

要仿真一个application,必须要创建一个application module和一个report module。

每个application module都可以从Application继承,得到一些内置的方法。比如说调用处理incoming messages;每个time step的update;还有每个时间片产生一些消息传递给report module。新的application实现一些方法以适应不同的应用,并且向report module发送application events。

7)为了创建一个"ping" application,这个application要实现update方法以在一定的时间间隔内产生ping messages。

这些messages被传至router,并且像其它messages一样被forwarded出去。

handle方法是为了接收ping message并且生成一个pong message作为回应。

然后,每次创建或者收到ping或者pong messages的时候都会生成events。

之后,report module就可以根据这些events来计算delivery probabilities。

E.Link Layer Modeling

1)因为ONE仿真的主要focus是network layer的建模,而link层就直接被模拟成为了bit rate和radio range。但是,仿真器支持统一的interfaces,用来模拟拥有多个radios(bluetooth,wifi等)的nodes,或者创建具有时变性质的links(比如interference limited links)

2)
每个node都可以配置为有多个interfaces,相同的interface可以彼此创建连接。

   bluetooth:short range but high bit rate
   cellular:longer range but lower bit rate
   backbone:长距离低速率的用于subset里面的通信,短距离高速率的用于和其他node之间的通信

3)有一个interference-limited interface,暂时没有清楚具体的功用,后面再看看
 

F.External Interfaces

这个仿真器很重要的一个特性就是有外部接口,使用一些外部数据源,比如说node movement,connectivity,message routing traces。



//暂时先不说这个吧,有点晕

G.Reporting and Visualization

关于GUI的部分就不说了,主要说说reporting的部分。

1)ONE里面包含了可以创建和Graphviz兼容的report module。

2)还包含了message location report module。

3)还包含了message statistics report module。可以收集整个performance的统计数据(number of created messages,messages delivery ratio,how long messages stay in node buffers等等)

4)还包含可以绘制report module输出的后期处理script。

H.Creating Simulation Scenarios

创建simulation scenario的过程也就是定义simulated nodes和相关的性能的过程。其中包括定义基本的参数,比如说storage capacity,transmit range,bit rate,还有选择特定的movement model和routing model以及为他们配置相应的参数。还有比如说simulation duration和时间粒度也需要被定义。

通过配置文本式的文件来配置,配置文件中包含了1)仿真参数(rouing,movement),2)用户接口参数,3)event generator,4)reporting参数。
 





















 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值