APP下载

基于Python的DTN仿真平台

2016-11-15姚建盛刘艳玲李淑梅

新型工业化 2016年9期
关键词:迟延网络协议路由

姚建盛,刘艳玲,李淑梅

(1.吉林师范大学计算机学院,吉林 四平 136000;2.哈尔滨工程大学计算机科学与技术学院,黑龙江 哈尔滨 150001.)

基于Python的DTN仿真平台

姚建盛1,2,刘艳玲1,李淑梅1

(1.吉林师范大学计算机学院,吉林 四平 136000;2.哈尔滨工程大学计算机科学与技术学院,黑龙江 哈尔滨 150001.)

延迟容忍网络(DTN,Delay Tolerant Networks)是一种新型移动自组织(MANET,Mobile Ad-hoc NETworks)网络,通过“存储-携带-转发”的路由模型实现不存在完整通信链路节点间的通信,对物联网和普适计算有重要意义。由于DTN网络的特殊通信模式导致传统基于TCP/IP体系结构的网络协议无法直接应用于DTN网络,因此现有多数网络仿真器不能直接仿真DTN网络。ONE是一款基于Java的DTN网络仿真器,但是不能提供完整的数据统计分析模块。鉴于Python拥有强大的数据统计分析库和仿真库,设计一个基于Python的DTN网络仿真平台。该平台集成了Python离散事件仿真库SimPy,科学计算库NumPy、SciPy和SymPy,以及图形库PyViz和Matplotlib,为DTN网络仿真提供了完整的仿真平台,包括网络仿真、场景可视化和数据统计分析等功能。

DTN;仿真;Python

0 引言

在一些真实的移动自组织(MANET,Mobile Ad hoc NETwork)[1]网络中,由于节点移动、稀疏或无线链路不稳定等原因,导致通信节点间不存在完整通信链路,因此传统基于TCP/IP体系结构网络协议无法使用。延迟容忍网络(DTN,Delay Tolerant Networks)[2]通过“存储-携带-转发”的理由模型,利用节点移动带来的接触机会能够实现不存在完整通信链路节点间的通信,这使手持便携设备和车载设备等可以随时随地感知并扩散热点区域信息,满足物联网泛在互联与透彻感知的需求[3],对物联网和普适计算有重要意义。

当前研究DTN网络协议的方法有理论分析、部署真实环境、搭建实验床、网络仿真等。其中理论分析通过建立数学模型分析相关网络协议性能是最快捷和经济的方法,但是也需要通过真实或实验环境验证;部署真实环境和搭建实验床最能真实测试网络协议,但是部署或搭建周期较长,代价较高;网络仿真通过在计算机上建立虚拟网络仿真平台,实现真实网络环境的模拟和分析,该方法具有成本低、开发周期短和灵活可靠等优点,因此是当前研究DTN网络协议的主要方法[4]。

DTN网络仿真工具有ns-2、ns-3、OMNet++、OPNET、GloMoSim和ONE等。其中除了ONE仿真器外,其它仿真工具都是比较普适的网络仿真工具,可以仿真各种网络场景,需要通过二次设计才能仿真DTN网络。ONE是专门的DTN网络的仿真工具,提供了DTN网络仿真环境,并且实现了典型网络协议,因此称为当前主流的DTN仿真工具[5]。

ONE是基于Java语言的,虽然提供了仿真的可视化界面,但是对仿真数据处理、分析、统计作图需要其它工具的配合,比如matlib、origin或sigmaplot等统计分析作图工具,本文基于Python语言和其仿真、科学计算库搭建完整的DTN网络仿真平台,该平台不仅能仿真DTN网络、提供可视化界面,而且集成了数据分析统计功能。

1 搭建DTN网络仿真平台

DTN是一种新型MANET网络,DTN采用一种“存储-携带-转发”的路由模型,因此传统网络的基于TCP/IP体系结构的协议无法直接使。常见的网络仿真工具大都不能直接支持DTN网络,需要开发相应模块。

ONE是专门的DTN网络仿真工具,但是ONE本身不能提供数据分析等功能。Python是一种面向对象的解释型计算机程序设计语言,具有丰富和强大的库,Python也被称为胶水语言,能够把其它语言模块(包括C/C++和Java)联结在一起,因此基于Python开发DTN仿真平台,能实现较完备的功能。本节首先列出基于Python搭建DTN仿真平台的相关Python库,然后给出仿真平台框架。

1.1 相关程序包

(1)基于Python的网络仿真库——SimPy[6]:SimPy是面相过程的离散事件仿真框架,是仿真DTN的核心。SimPy库使用很简单,只提供了三个抽象/父类,即Processes(进程)、Resources(资源)和Monitors(监控)。模拟中的核心概念是进程,一个进程是一个对象,它完成某些任务。

(2)基于Python的科学计算库[7]——NumPy、SciPy和SymPy:其中NumPy可用来存储和处理大型矩阵,提供了许多高级的数值编程工具,如:矩阵数据类型、矢量处理,以及精密的运算库。SciPy函数库在NumPy库的基础上增加了众多的数学、科学以及工程计算中常用的库函数。例如线性代数、常微分方程数值求解、信号处理、图像处理、稀疏矩阵等等。SymPy是数学符号计算库,用它可以进行数学公式的符号推导。

(3)基于Python的图形库——PyViz[8]和Matplotlib[9]:其中PyViz是可视化工具,用来形象展示DTN网络环境和运行过程;Matplotlib是作图工具,用来形象展示仿真数据结果。

1.2 仿真框架

仿真平台由以下几个模块组成:

(1)节点移动模块:生成动态网络拓扑结构。

(2)数据流量模块:生成网络数据流量。

(3)访问控制模块:SimPy本身并不是网络仿真工具,而是离散事件仿真工具,因此为了仿真DTN网络,我们添加了基本的DTN无线访问控制模块。

(4)路由层模块:平台只提供一个路由父类,定义了一些共性接口,如路由更新、路由计算和数据转发等,在实现具体路由协议时安装路由规则重写相关方法。

(5) 可视化模块:动态展示网络运行情况。

(6) 数据统计分析模块:收集、统计和分析仿真数据结果并作出相应图形。

模块间流程结构如图1所示,移动模块生成网络拓扑结构,然后注册节点连接和断开事件,当执行到该事件时触发路由模块,路由模块则依据路由计算注册消息转发和接收事件,该事件则结合访问控制模块决策消息的转发和接收;流量模块注册消息生成和超时事件;整个网络仿真场景有网络场景可视化模块动态显示;仿真结果由数据统计分析模块收集、统计和分析,并由数据可视化模块显示。

图1 仿真框架Fig.1 Simulation Framework

图2 仿真场景Fig.2 Simulation Scenario

2 仿真示例

仿真场景如图2所示,仿真区域大小为100m×100m,仿真区域内随机分布30个移动节点,系统开始运行时,移动节点在仿真区域内随机分布,然后按照RWP(Random Way Point)移动模型移动,节点首先生成目的位置D,然后以速度v m/s从当前位置沿直线匀速运动到D,在D处静止t秒后再选择下一个目的点D,进行下一次重复运动过程,其中v服从5~10的均匀分布,t服从10~50的均匀分布。系统每隔1s生成一个数据,数据大小为1024kb,随机选择不同的源节点和目的节点,网络带宽为10 Mbps,节点通信半径为5m,仿真时间500s。仿真以Epidemic[10]路由为测试对象,分别在缓存为4和8时测试路由性能在不同消息生存周期TTL(Time to Live)下的值,路由性能包括投递率、迟延和网络负载,其中迟延成功转发消息的迟延。

仿真结果如图3所示,随着TTL增加,投递率、迟延和网络负载都增加,这是因为随着消息生存时间增长,消息被转发的概率增加,因此增加了网络负载和投递成功率,但是同时意味着消息可以更晚些到达目的节点,因此消息迟延也增加。另外,随着缓存增加,投递率和网络负载也增加,原因同样是较大的缓存为消息提供了更多的转发机会,因此网络负载增加,投递成功率也增加,但是迟延在缓存为4和8时基本相同,这是因为这里的迟延性能只统计成功投递消息的迟延,因此缓存较大成功投递的消息增多。

3 结论

针对当前DTN网络仿真工具不能提供完整的平台,基于Python和其丰富的库(SimPy、PyViz和matplotlib等)搭建DTN仿真平台,实现了DTN网络仿真、数据统计分析及可视化仿真场景和数据结构等功能。Python的简单、强大使该平台可以很容易的高效二次开发,方便了研究DTN网络协议。

图3 仿真结果Fig.3 Simulation Results

[1] Soni S,Srivastava S. Survey of Quality of Service Routing Protocol in MANET[J]. International Journal of Computer Applications,2016,136-142.

[2] Sobin C C,Raychoudhury V,Marfia G,et al. A survey of routing and data dissemination in Delay Tolerant Networks[J]. Journal of Network & Computer Applications,2016,67(C):128-146.

[3] 马华东,袁培燕,赵东. 移动机会网络路由问题研究进展[J]. 软件学报,2015,26(3):600-616.

MA HuaDong,YUAN PeiYan,ZHAO Dong. Research Progress on Routing Problem in Mobile Opportunistic Networks[J]. Ruan Jian Xue Bao/ Journal of Software,2015,26(3):600-616

[4] 马春光,姚建盛. ns-3网络模拟器基础及应用[M]. 人民邮电出版社,2014,1-6.

Ma Chunguang,Yao Jiansheng. Basic and application of ns-3 network simulator [M]. people's Posts and Telecommunications Press,2014,1-6.

[5] 解小刚,陈进. 采用i_d=0的永磁同步电机矢量控制系统MAT-LAB/Simulink仿真[J]. 新型工业化,2016,6(5):47-54.

Chen Jin,Jie Xiaogang. A new type of permanent magnet synchronous motor vector control system based on MAT-LAB/Simulink i_d=0 simulation [J]. The Journal of New Industrialization,2016,6(5):47-54.

[6] SimPy [EB/OL],http://simpy.readthedocs.io/en/latest/,2016-09-16.

[7] 邓杰,张学毅,周美琴,等.基于OFDM技术电力通信系统的仿真研究[J]. 新型工业化,2015,5(5):33-39.

DENG Jie,ZHANG Xueyi,ZHOU Meiqin,et al. Simulation of OFDM Communication System Based Power [J]. The Journal of New Industrialization,2015,5(5):33-39.

[8] Thomas B L,Crandall A S. A demonstration of PyViz,a flexible smart home visualization tool.[C]// IEEE International Conference on Pervasive Computing & Communications. IEEE,2011:304-306.

[9] Hunter J D. Matplotlib:A 2D Graphics Environment[J]. Computing in Science & Engineering,2007,9(3):90-95.

[10] Choksatid T,Narongkhachavana W,Prabhavat S. An efficient spreading Epidemic Routing for Delay-Tolerant Network[C]// IEEE Consumer Communications & NETWORKING Conference. 2016.

Simulation of DTN Platform Based on Python

YAO Jian-sheng1,2, LIU Yan-ling1, LI Shu-mei1
(1. College of Computer Science, Jilin Normal University, Siping 136000, China;2. College of Computer Science and Technology,Harbin Engineering University, Harbin 150001, China)

DTN (Delay Tolerant Networks) is a new type of MANET (Mobile Ad hoc NETwork). It can implement the communications between source node and destination node by the "store-carry- forward" routing model, even if there is no complete link between two nodes. So, DTN has important significance for Internet of Things(IoT)and ubiquitous computing. The special communication mode of DTN results that the traditional network protocol based on TCP/IP architecture cannot be directly applied to DTN, so most of the existing network simulators cannot directly simulate DTN. ONE written by Java is a network simulator for DTN, but it cannot provide a complete module of statistic and analysis. In view of Python has a strong statistic,analysis and simulation library, a Python-based network simulation platform for DTN was designed in this paper. The platform integrates a discrete event simulation library, SimPy, three scientific computing libraries, i.e. NumPy, SciPy and SymPy, two graphics libraries, namely PyViz and Matplotlib. It provides a complete simulation platform for DTN, including the functions of network simulation, visualization, statistic and analysis.

DTN; Simulation; Python

10.19335/j.cnki.2095-6649.2016.09.007

YAO Jian-sheng, LIU Yan-ling, LI Shu-mei. Simulation of DTN Platform Based on Python[J]. The Journal of New Industrialization, 2016, 6(9): 42-45.

姚建盛,刘艳玲,李淑梅.基于Python的DTN仿真平台[J]. 新型工业化,2016,6(9):42-45.

吉林师范大学高等教育教学研究重点课题: O2O模式在计算机专业教学中的研究与应用

姚建盛(1980-),男,博士研究生,讲师,计算机网络与通信,信息安全,可信计算等

猜你喜欢

迟延网络协议路由
铁路数据网路由汇聚引发的路由迭代问题研究
浅议海上货物运输中的迟延交付
关于建设工程合同中工期迟延的法律问题
多点双向路由重发布潜在问题研究
一种基于虚拟分扇的簇间多跳路由算法
路由重分发时需要考虑的问题
一种蓝牙多跳网络协议的设计与研究
迟延履行期间的一般债务利息如何计算?
基于载波技术的多点温度测量系统设计
基于DPI技术的语音视频流量监控系统设计与实现