1 DTN
时延容忍网络(delay Tolerant Networks),也称为挑战性网络,它允许在稀疏移动自组织网络和其他挑战性网络进行通信。DTN具有高延迟、低传输率、间歇性连接、节点频繁移动、延迟容忍、错误容忍、有限的存储以及通信环境恶劣等特点。传统的TCP/IP协议无法满足这种网络的传输。DTN协议由此产生。The One 模拟器(Opportunistic Networking Environment)是为了评估DTN网络路由的模拟器,它允许用户创建基于不同合成运动模型和真实世界轨迹的场景。
2 The One Simulator
2.1 模拟器功能
- 该模拟题提供了一个可扩展的模拟框架,它支持移动性和事件生成,消息交换,DTN路由协议和应用协议,能源消耗的基本概念,可视化和分析,用于导入和导出的移动性跟踪,事件和整个消息的接口。
- 利用这个框架,实现了一套广泛且可用的模块:
模拟器结果通过仿真运行期间的报表模块生成的报表收集。报告模块从模拟引擎接收事件并基于它们生成结果。生成的结果可能是事件日志,然后由外部处理工具进一步处理。GUI进行模拟状态的可视化。
2.2 节点
模拟器中的基本代理称为节点。一个节点模拟一个移动端点,它可以充当一个存储向前的路由器(例如带有硬件的汽车),仿真场景由仿真世界中的节点组构建而成,不同的节点组可以配置不同的功能(例如无线电接口,持久存储,移动,能源消耗,消息路由等)。不同的移动模型等更复杂的功能需要为功能实现特定行为的专门模块。
每个节点的模块都可以访问节点的基本仿真参数和状态,包括位置、当前运动状态和当前邻居。模块可以通过模块间通信总线使它们的任何参数对同一节点中的其他模块可用。
模拟器的重点是存储转发网络。无线电链路被抽象为一个通信范围和比特率。可以根据环境、对等点之间的距离和附近节点的数量来调整范围和比特率。
节点能量消耗模型基于能量预算方法,每个节点都有一个能量预算
2.3 移动性建模
运动模型包括三种类型:
- 随机运动
- 地图约束的随机运动
- 基于人类行为的运动
模拟器包括创建移动模型和加载外部数据的接口框架。包括随机漫步(RW)和随机路径点(RWP)。为了更好地模拟真实世界的移动性,基于真实地图进行预定义,为了更好地实现,利用工作日运动模型(WDM)
2.4 基于地图的移动模型
基于地图的移动模型将节点移动限制为在地图数据中定义的路径,包括了三种模型:
- 基于地图的随机移动(MBM)
- 基于最短路径地图的移动(SPMBM)
- 基于地图的路由移动(RMBM)
此时的移动模型可以理解为在已知文本中定义的任意映射数据,此类数据通常由真实世界的地图数据转换而来,或者使用OpenJUMP等地理信息系统程序手工创建。
2.4.1 MBM
节点随机运动,但始终遵循数据定义的路径。导致了地图数据定义的网络随机游走,因此并不非常精确接近真实的人类移动。
2.4.2 SPMBM
节点在地图上选一个随机点,然后从当前位置沿着最短路径到达该点。这些点可以完全随机选择,也可以从兴趣点列表进行选择
2.5 工作日运动模型
当节点数量很小时,为了提高节点移动的真实性,工作日模型因此产生。工作日模型中的节点有如下三个活动:
- 在家睡觉
- 在办公室工作
- 晚上与朋友外出
这三种模型被划分为相应的子模型,模拟节点根据一天的时间在子模型之间转换。除了活动本身之外,还有三种不同的传输模型,可以单独移动,也可以通过步行,驾驶或乘坐公共汽车来成群移动。WDM还引入了社区和社会关系。
这里有六个路由协议:
- 直接交付(DD)
- 首次接触(FC)
- 喷雾等待(spary and wait):n拷贝协议,正常模式下,节点给联系人一个副本,在二进制模式下,一半的副本被转发,只剩下一份副本时,就只会转发给最终的收件人。
- PRoPHET:根据节点遇到的历史,试图估计哪个节点将消息传递到最终目的地的“可能性”多大。
- MAX-Prop:填充消息,但副本传递到目的地后显示清除它们,按特定顺序将消息发送到其他主机,该顺序考虑了消息跳数和基于先前遭遇的消息传递概率。
- Epidemic:将消息复制遇到所有遇到的节点
DTN路由协议中最重要的类别:单拷贝协议、n拷贝协议、无限制复制协议、基于估计的协议
2.6 添加路由协议
为了评估模拟器中的新路由协议,需要为各自的协议创建一个新的路由模块,所有路由模块都从MessageRouter模块继承基本功能,例如简单的缓冲区管理和各种消息相关事件的回调。e.g. 当一个新消息被创建或消息被发送到节点时,路由器模块需要处理这些事件,还需要定义在每个时间步骤中要执行的动作,以及当一个新节点进入或离开该节点的无线电范围时的行为。
事件的基本功能都是通用的,通过扩展ActiveRouter模块,可以被重新用于新的路由协议。该模块提供了检查当前缓存的消息是否命中临近节点,向临近节点提供一些消息,处理成功传输和中止消息传输的功能。实现了FIFO和随机排序缓冲区管理。
更高级的路由模块需要跟踪节点联系人,实现节点发现回调, PRoPHET和MaxProp对过去的遭遇进行他们自己的记录。还可以使用标记机制将状态附加到消息上,从而可以通过网络转发路由信息。Spray-and-Wait路由器使用这种机制在每条消息中包含一个副本计数。当使用新的路由模块运行模拟时,报告模块收集与使用现有模块相同的路由过程性能数据,因此比较新模块与现有模块的性能非常简单.
2.7 应用程序支持
模拟器提供两种方法来模拟生成应用程序消息:
- 消息生成器
- 外部事件文件
内置消息生成器创建具有随机或固定来源、目标、大小和间隔的消息,还包括用于生成消息事件文本的单独工具。在模拟器中可以控制用于生成消息事件文本的单独工具,并发使用任意数量的此类消息事件源。
特定于应用程序的报头可以负载到附加消息上,以此检查消息报头和内容。
2.8 接口
能够与其它程序和数据源交互,模拟器提供交互的接口。
节点移动,连接和消息路由跟踪,可以利用TRANSIMS或来自真实世界的GPS跟踪,需要转换为适合外部移动模块的形式。分发包包含一个简单的脚本,将TRANSIMS的输出转化为这种格式。
除了读取其他程序的输出,还可以输入跟踪,利用报告模块,其输出兼容dtnsim和dtnsim2连接跟踪输入。
报告模块可以与其他模块实时通讯。
2.9 可视化界面
节点位置,当前路径和节点之间的连接,节点承载的消息数量等在主窗口显示。可以生成经过筛选的模拟事件日志,例如联系人和消息传输。过滤器用于进一步筛选检查。
模拟器包括一个消息统计报告模块,用于收集总体性能的统计信息(消息数量,消息传递比率,消息在节点缓冲区停留的时间等)
图中的p,w,t应该指的是不同功能的节点。
2.10 定义模拟场景
通过定义模拟节点及其功能来定义模拟场景,行为细节配置使用子系统进行调整,可以利用新代码或利用钩子进行修改。路由模块、移动模型、事件生成器和报告模块都是在模拟器启动时动态加载的。