Mobility Model and Routing Model about the ONE
ONE主要的功能是节点的移动,节点间的相遇情况,路由情况以及消息的处理机制。下面简要介绍下目前ONE自带的六种移动模型和六种路由模型。
Mobility Model:
从大的方面,可以分为三种,1)随机移动;2)基于Map的随机移动;3)基于用户行为的移动
进一步细分:
1)包括两种:Random Walk(RW)和Random Waypoint(RWP)
2)包括三种:Random Map-Based Movement (MBM), Shortest Path Map-Based Movement (SPMBM),和 Routed Map-Based Movement (RMBM).
3)包括一种:Working Day Movement Model(WDM)
所有的移动模型都封装成一个类,继承于MovementModel,提供节点选择新路径的接口,SimMap类中描述了Map数据,DijkstraPathFinder类可以使用这些数据来找到一条最短路径,PointOfInterest类可以从Map数据中选择合理的POI数据点。模型见初识the ONE。下面分别描述几种模型。
RW:节点从当前位置随机选择一个方向和速度移动到一个新的位置,方向和速度从一个预先定义的范围里面选择,如:[speedmin, speedmax],[0,2 π].通过一个固定的时间间隔t或固定的距离d之后,节点的方向和速度在重新计算。如下图:

RWP:该模型类似RW,只不过节点在选择下一个方向和速度时有一段自定义的暂停时间(Pause time),节点需要在这个节点待一段时间。

MBM:依托于Map数据,选择一个节点随机地放置在map area,使其在该路段上行驶,直到到达一个路段终点,然后选择返回或结束,如果节点到达一个十字路口,再随机选择一个方向行驶,如果达到预先配置的距离或时间,停止一段时间,在继续行驶,如果达到目的地,则停止行驶。
SPMBM:该模型为MBM的升级版,节点从map数据中通过Dijkstra算法找出一条最短的路径,然后沿着这条路径进行行驶。
RBMB:该模型适用于一些有着预定义的路径的节点,如Bus,train等节点。其包含了一条路径中所有可能遇到的stop和在stop停止的时间间隔。
WDM:该模型考虑了用户的行为,包括用户可能sleeping at home, working at office, 以及going out with friends in the evening等活动。此外,WDM中引入社交关系和社区(community)的概念。
Routing Model:
ONE实现了六种路由协议:1) Direct Delivery (DD), 2) First Contact (FC), 3) Spray-and-Wait, 4) PRoPHET, 5) Max-Prop, and 6) Epidemic.
涵盖了DTN路由协议的所有类型,包括single-copy,n-copy,unlimited-copy以及基于估计的协议。
所有的路由协议都封装成一个类,继承于MessageRouter类,该类有两个兄弟类,ActiveRouter和PassiveRouter类,所有实现的六种路由协议皆继承自ActiveRouter类,而PassiveRouter类提供用户自定义的路由协议类的上层接口。
DD:是一种single-copy的路由协议,只有当携带信息的节点遇到目的节点的时候,才进行数据转发。
FC:也是一种single-copy的路由协议,携带信息的节点只要遇到一个节点,就进行转发,直到到达目的节点。
这两种方法保证了整个网络中只有一个信息的copy,只要信息转发成功,就将原信息删除,是简单的store-and-forward.虽然节省了网络带宽,但不能提高网络中信息的传送率。
Epidemic:是一种n-copy的路由协议,泛洪式的信息传播方式,携带信息的节点将自己所有的信息进行泛洪,直到到达目的节点,或TTL时间到进行删除。
Spray-and-Wait:和Epidemic比较相像,只不过限制信息copy的数量。
这两种方法虽然能提高网络中信息的传送率,但大量消耗网络的资源,如网络带宽和节点的存储能力。所以,为了权衡上面几种协议之间的利弊,提出了下面基于估计的两种协议。基于估计的协议的本质的原理是:通过节点之间维护着一张和其他节点相遇的表,通过概率模型计算,如果两个节点相遇,那么根据他们估计的相遇概率,可以估计它们下次再次相遇的概率,选择相遇概率大的节点进行转发。
PRoPHET:该协议模型选择和目的节点相遇概率大的节点进行转发。
Max-Prop:该协议进一步优化,使用相遇概率通过Dijskra算出从一个节点到目的节点的最短路径,选择在最短路径上的节点进行转发。
上面就是对几种移动模型和路由模型的简单介绍,下面在进一步通过对源码的分析和实际场景的模拟来进一步剖析ONE,并尝试着把自己的模型放进来。
Reference:
[1] A Survey of Mobility Models for Ad Hoc Network Research
[2] The ONE Simulator for DTN Protocol Evaluation
Mobility Model and Routing Model about the ONE的更多相关文章
- MVC中@Html.DisPlayFor(model=>model.newsName)和 @Model.newsName的区别
MVC中,在Controllers查询到数据,返回一个实体给View并显示,可以用@Html.DisPlayFor(model=>model.newsName)和 @Model.newsName ...
- 【转载】Analysis Service Tabular Model #003 Multidimensional Model VS Tabular Model 我们该如何选择?
由于Multidimensional Model 和 Tabular Model 并不能互相转换, 所以在项目之初就应该要考虑好选择哪一种模型进行开发. 以下只是一些建议: Licensing 许可和 ...
- Generative model 和Discriminative model
学习音乐自动标注过程中设计了有关分类型模型和生成型模型的东西,特地查了相关资料,在这里汇总. http://blog.sina.com.cn/s/blog_a18c98e50101058u.html ...
- JFinal项目eclipse出现the table mapping of model: com.gexin.model.scenic.Scenic not exists or the ActiveRecordPlugin not start.
JFinal项目eclipse出现the table mapping of model: com.gexin.model.scenic.Scenic not exists or the ActiveR ...
- MVC:一个View显示多个Model(多个Model你可以使用ViewBag或ViewData , 或者:Model["myInfo"] as)
MVC:一个View显示多个Model 多个Model你可以使用ViewBag或ViewData , 或者:Model["myInfo"] as. 比如: Tuple<str ...
- MVC中Model BLL层Model模型互转
MVC中Model BLL层Model模型互转 一. 模型通常可以做2种:充血模型和失血模型,一般做法是模型就是模型,不具备方法来操作,只具有属性,这种叫做失血模型(可能不准确):具备对模型一定的简单 ...
- 大话胖model和瘦model
今天业务完成到一定程度,查看下代码,猛然发现目前的这个代码有点奇怪.奇怪就奇怪在我的model中有很多文件,每个文件都对应数据库中的一张表,然后每个model中有很多是几乎没有什么逻辑代码的.比如: ...
- js 实现angylar.js view层和model层双绑定(改变view刷新 model,改变model自动刷新view)
近段时间研究了下angular.js 觉得它内部实现的view和model层之间存在很微妙的关系,如下图 如上图说的,view的改变会update 数据层model, 数据层会update视图层vie ...
- django中通过model名字获取model
django1.6, 通过字符串和get_app.get_model获得对应的object 只需要两行代码: from django.db.models import get_model get_mo ...
随机推荐
- spring proxy-target-class
<tx:annotation-driven transaction-manager="transactionManager" ...
- JAVA中的配置文件XML
一:概念 1.XML Extensible markup Language 可拓展标记语言 2.功能:存储数据(配置文件,在网络中传输数据) 3.html和xml的区别 3.1xml标记全是自定义的 ...
- 《Network Security A Decision and Game Theoretic Approach》阅读笔记
网络安全问题的背景 网络安全研究的内容包括很多方面,作者形象比喻为盲人摸象,不同领域的网络安全专家对网络安全的认识是不同的. For researchers in the field of crypt ...
- 好看的alert弹出框sweetalert
转载:https://www.cnblogs.com/lamp01/p/7215408.html
- List Set Map的区别
1.读取频繁选用List 快速访问选取ArrayList,经常进行添加删除工作可以选用LinkList 2.如果你想进行有序的插入那么还是选型List,因为List是一个有序的容器 3.如果你想保证插 ...
- React Context(一):隐式传递数据
一 Context概述 Context provides a way to pass data through the component tree without having to pass pr ...
- echarts仪表盘
echarts链接:https://gallery.echartsjs.com/editor.html?c=xkasbcOqh0 代码: var axislineColor = new echarts ...
- swift 警告框 - 自定义按钮颜色,图片
1.封装 弹框http://www.hangge.com/blog/cache/detail_651.html import UIKit extension UIAlertController { / ...
- 学习笔记《简明python教程》
学习笔记<简明python教程> 体会:言简意赅,很适合新手入门 2018年3月14日21:45:59 1.global 语句 在不使用 global 语句的情况下,不可能为一个定义于函数 ...
- MySQL开发——【高级操作、五子句】
高级新增操作 ①基本插入操作: insert into 数据表名称(字段) values (值); ②批量插入操作: insert into 数据表名称(字段) values (值1),(值2),(值 ...