NS-2仿真

2024-09-21

NS-2仿真(共4篇)

NS-2仿真 篇1

(一) NS-2简介

NS-2是面向对象的、基于离散事件驱动的一种很好的网络环境模拟器, 受到网络界的普遍欢迎。它实现了多种网络协议的模拟, 如传输层的TCP、UDP协议, 应用层的FTP、Telnet、Web协议, 同时还实现了Drop-tail、RED等几种路由器队列管理机制以及动态路由、静态路由、组播路由等路由算法。此外, NS-2还支持组播协议SRM及部分MAC层的协议。NS-2用C++和Otcl语言编写而成。它的一个突出的优点就是它的源代码全部公开, 提供开放的用户接口, 并且容易扩展、配置, 用户可以很方便地将自己开发的新协议模块集成到NS-2环境中。NS-2网络仿真的主要原理如下:

1. 离散事件仿真器。

模拟器所做的就是不停地处理一个个事件, 直到所有的事件都处理完成或者某一特定的事件发生为止。NS中有一个“调度器” (Scheduler) 负责记录当前时间, 调度网络事件队列中的事件, 并提供函数产生新的事件, 指定事件发生的时间;

2. 丰富的构建库。

NS构件库支持的网络类型包括广域网、局域网、移动通信网、卫星通信网等;流量产生模型有Telnet流量模型、FTP流量模型、CBR流量模型、实时音频流量模型、RTP模型、WEB流量模型、指数分布流量模型、Pareto分布流量模型等;跟踪监测包括包类型、队列监测和流监测;路由模型有点到点传播路由、组播路由、网络动态路由、层次路由;

3. 分裂对象模型。

NS构件一般都是由相互关联的两个类来实现, 一个在C++中, 一个在Otcl中, 这种方式称为分裂对象模型。用户先通过编写C++程序来描述链路中的算法和增加各种网络协议, 再使用Otcl脚本来描述需要仿真的场景、拓扑结构、链路中使用的算法和协议, 并对这些对象进行配置、组合, 最后调用NS来完成仿真。

(二) NS-2的层次结构

为了提高代码的执行效率, NS-2采用了两级体系结构, 将数据操作与控制部分的实现相分离, 事件调度器和大部分基本的网络组件对象在后台使用C++实现和编译, 称为编译层, 主要功能是实现对数据包的处理;NS-2的前端是一个Otcl解释器, 称为解释层, 主要功能是对模拟环境的配置、建立。从用户角度看, NS-2是一个具有仿真事件驱动、网络构件对象库和网络配置模块库的Otcl脚本解释器。NS-2中编译类对象通过Otcl连接建立了与之对应的解释类对象, 这样用户可以在Otcl空间能够方便地对C++对象的函数和变量进行修改与配置, 充分体现了仿真器的一致性和灵活性。

图1显示了NS-2的模拟体系结构。NS用户写出TCL脚本程序, 可以通过Otcl了解脚本情况, 也可以直接提交给NS系统, NS调用Tc1CL (TclCompile Language) 对脚本语言进行解释, 然后NS的事件调度机制以及构件库被调用执行。通常情况下, 模拟器模拟工作的开始, 就是通过创建一个Simulator:类的实例后开始的。Simulator类可以看成是对整个仿真器的封装, 含成员类Node、Link、Agent、Package、LAN等。从创建一个仿真器的实例对象开始, 通过这个仿真器调用各种方法生成节点, 进而构造拓扑图, 对仿真的各个对象进行配置, 定义事件, 然后根据定义的事件, 模拟整个网络活动的过程。在创建模拟器对象时, 在构造函数中同时也创建一个该模拟器的事件调度器 (Event Scheduler) , 用来调度当前事件链中的仿真事件。

仿真器封装了许多功能模块, 最基本的是节点、链路、代理、数据包格式等等。下面分别是这些模块的解释:

1. 事件调度器。

目前NS-2提供了四种具有不同数据结构的调度器, 分别是链表、堆、日历表和实时调度器。由于NS-2是基于事件驱动的, 调度器也就成为NS-2的调度中心, 它可以跟踪仿真时间, 调度当前事件链中的仿真事件并交给产生该事件的对象处理。

2. 节点。

节点是由TclObject对象组成的复合组件, 在NS-2中可以表示端节点和路由器。每个节点具有唯一的地址 (ID标识) , 节点有单播节点和组播节点两种不同类型, 通过节点内部的nodetype变量来区分, NS-2中默认的是单播节点, 节点有一个路由表以及路由算法, 由地址分类器根据目的地址转发数据包。

3. 链路。

链路是由多个组件复合而成的, 主要通过它来连接网络节点, 以队列的形式来管理分组的到达、离开和丢弃。

4. 代理。

负载网络层分组的产生和接收, 也可以用在各个层次的协议实现中。Agent类包含源及目的节点地址、分组类型、大小、优先级等状态变量, 并利用这些状态变量来给所产生的分组的各个字段赋值, Agent是实现UDP协议及各种版本TCP协议的基类。

5. 包。

仿真系统包由头部和数据两部分组成, 头部包括corn header、ip header、tcp header、rtp header及trace header等, 头结构的格式是在仿真器创建时被初始化的, 各头部的偏移量也被记录下来, 数据部分携带通信双方索要交换的信息。

(三) Windows xp下NS-2的安装

对算法的验证需要在仿真环境下进行, NS-2可以在Linux平台上使用, 若使用Windows平台则需要安装sygwin软件, 以下是作者在Windows xp系统平台上安装NS-2的完整过程:

1.首先下载cygwin, http://140.116.72.80/~smallko/ns2/ns_setup.rar;

2.解压下载的文件, 运行setup, 选“Install from Local Directory”, 选好下载位置"ftp%3a%2f%2fftp.nctu.edu.tw%2f Windows%2fcygwin", 安装XFree86-base, XFree86-bin, XFree86-prog, XFree86-lib, XFree86-etc, make, patch, perl, gcc, gcc-g++, gawk, gnuplot, tar and gzip, 注意不可漏选, 否则会产生很多难以解决的问题;

3.然后到http://www.isi.edu/nsnam/dist/nsallinone-2.29.tar.gz, 下载ns-allinone-2.29 (这个版本是目前比较好用的) , 进入c:cygwinhomeabc (abc是作者计算机登录的用户帐号) 目录下;

4.双击桌面图标进入cygwin, 它会自动创建3个文件, 在C:cygwinhomeabc下, 分别是.bashrc、bash_profile和.inputrc;

5. 使用用tar xvfz ns-allinone-2.29.tar.gz解压文件;

6.修改C:cygwinhomedinglanns-allinone-2.29nam-1.11agent.h文件第73行NULL为0;

7.用cd ns-allinone-2.29进入/home/dinglan/nsallinone-2.29目录;

8. 用./install进行ns安装;

9.进入/home/abc/.bashrc, 用Uedit32编辑器编辑.bashrc文件, 在文件的最后加入如下内容:

若要验证就用cd ns-allinone-2.29/ns-2.29, 可以运行example2.tcl的例子:启动cygwin, cd ns-allinone-2.29/ns-2.29, cd ns-tutorial/examples, 然后startxwin.bat, ns example2.tcl。图2是NS安装成功状态显示图, 图3是用于脚本验证的调用命令图, 图4是实验运行动态nam显示图。

(四) 文本编辑工具Ultra Edit

UltraEdit是一套功能强大的文本编辑器, 可以编辑文本、十六进制、ASCII码, 可以取代记事本, 内建英文单字检查、C++及VB指令突显等功能, 可同时编辑多个文件, 而且即使开启很大的文件速度也很快。该软件附有HTML标签颜色显示、搜寻替换以及无限制的还原功能, 一般用其来修改EXE或DLL文件。图5是UltraEdit进行文件编辑的图形。

(五) trace文件分析工具gunplot

gnuplot是一种绘图工具, 可以移植到各种主流平台 (Windows、Unix、Linux等) 。它可以下列两种模式之一进行操作:当需要调整和修饰图表使其正常显示时, 通过在gnuplot提示符中发出命令, 可以在交互模式下操作该工具。或者, gnuplot可以从文件中读取命令, 以批处理模式生成图表, 图6是用gnuplot对trace文件进行分析时的执行命令图。用Gnuplot这种绘图工具可以将两列数据中的第一列作横轴, 第二列作纵轴用曲线描绘出来。若把数据文件名保存为file, 则用gnuplot绘图的指令是$:gnuplot, 进入gnuplot环境后, 可以设置标题、横轴和纵轴的label等:

然后绘图:

>plot“file”with lines (用连线方式, gnuplot有九种绘图方式)

(六) 网络模拟的方法和过程

NS-2模拟分两种:一种是基于Otcl编程的, 利用NS-2己有的网络元素实现模拟, 无需对NS-2本身进行任何修改, 只要编写Otcl脚本;另一种是基于C++和Otcl编程的, 如果NS-2中没有所需的网络元素, 就需要首先对NS-2扩展, 添加所需要的网络元素。这就需要利用前面所提到的分裂对象模型, 添加新的C++和Otcl类, 然后再编写Otcl脚本。这个模拟过程如图7所示。

完成了对NS的扩展, 或者NS所包含的构件已经满足了要求, 可以进行一次模拟, 过程如下:1.编写Otcl脚本, 配置网络拓扑结构;2.建立协议代理;3.配置业务量模型的参数;4.设置Trace对象;5.设定模拟结束时间;6.利用NS-2解释执行Otcl脚本;7.分析trace文件;8.调整配置, 重新进行模拟。

(七) 小结

本文较为详细地介绍了作者在改进算法的实验中所使用的相关软件NS-2、UltraEdit、gnuplot的安装和使用方法, 以及仿真环境下网络的模拟方法和过程, 这种仿真方法应用于实际的教学中可以帮助学生理解网络协议的实现过程, 对于解决复杂网络无法真实验证能起到很好的教学辅助作用。

参考文献

[1]刘强.基于免费软件ns2的网络仿真[J].电子技术应用, 2001 (2) :63-64.

[2]杨玉华, 刘培宁, 刘际炜, 陈涵生.NS-2的仿真模拟技术分析[J].计算机工程, 2005, 31 (15) :110-112.

[3]魏蛟龙, 肖艳华, 张弛.NS体系结构及其扩展[J].计算机仿真, 2004, 21 (8) :179-182.

[4]杨吉文, 张卫东.基于NS2的主动队列管理仿真研究[J].计算机工程.2006, 32 (17) :189-191.

[5]于斌, 等.NS与网络模拟[M].北京:人民邮电出版社, 2007:3-8, 17-23.

NS-2仿真 篇2

无线自组织网络是一种移动通信和计算机网络相结合的网络, 动态移动性与没有中心分布控制是其区别于传统的通信网络的重要特点, 因此, 在高校无线自组织网络的教学实验中存在以下几个方面的问题:

(1) 实验场景无法搭建。无线自组织网络中的节点是移动的, 路由是动态的, 信号的覆盖范围、天线的发射方向都在不断变化中, 类似于街道、高速公路等场景是高校无法实现的实验环境。

(2) 无线自组织网络包含大量复杂的网络协议与通信算法。协议的理论知识和算法过于抽象, 实验中难以体现。

(3) 无线自组织网络的实验数据可能来自于几十个甚至上百个节点, 采用移动通信方式, 学生在实验过程中对数据的采集、测量、计算、分析都困难重重。

针对这一现状, 采用一种成熟的网络模拟技术进行无线自组织网络实验是一种行之有效的方法。本文将优秀的网络模拟软件NS-2引入无线自组织网络实验环节中, 并使用NAM演示工具向学生展示网络的动态运行过程, 使用awk工具对仿真结果文件做数据分析, 通过Traced的扫描提取有效字段分析, 提高了学生的实验效果。

1 NS-2仿真软件简介

NS-2 (Network Simulator, Version 2) 是目前主流的、开源的网络模拟软件之一, 于1989年由UC Berkeley大学开发, 它为有线和无线网络上的TCP、路由和多播等协议的仿真提供了强有力的支持。因为其开源免费, 所有源代码都开放, 任何人可以获得、使用和修改其源代码, 世界各地的研究人员每天都在扩展和更新它的功能, 为其添加新的协议支持和功能模块。它也是目前网络研究领域应用最广泛的网络仿真软件之一。

NS-2的本质是一个面向对象的、离散时间驱动的模拟器, 利用虚拟时钟, 所有的仿真都由离散事件驱动, 还可以用于仿真各种不同的通信网络。它功能强大, 模块丰富, 已经实现的一些仿真模块有:网络传输协议, 如TCP和UDP;业务源流量产生器, 如FTP、Telnet、Web CBR和VBR;路由队列管理机制, 如Droptai、RED和CBQ;路由算法, 如Dijkstra, 以及无线网络的WLAN, Ad hoc路由, 移动IP和卫星通信网络等。NS2也为进行局域网的仿真而实现了多播以及一些MAC子层协议。

NS-2使用C++和OTcl作为开发语言, 学生只要通过简单易用的Tcl/OTcl脚本编写出仿真代码, 对仿真拓扑、节点、链路等各种部件和参数进行方便快速的配置。NS可以说是Otcl的脚本解释器, 它包含仿真事件调度器、网络组件对象库等。事件调度器控制仿真的进程, 在适当时间激活事件队列中的当前事件, 并执行该事件。网络组件模拟网络设备或节点的通信, 它们通过制定仿真场景和仿真进程, 交换特定的分组来模拟真实网络情况, 并将执行情况记录到日志文件 (称为Trace文件) 中, 以提供给仿真用户进行分析解读, 获取仿真结果。NS采用这种分裂模型既提高了仿真效率, 加快了仿真速度, 又提供了仿真配置的灵活性和操作的简便性。经过多年的发展已经成为一个涉及网络各个方面的模拟工具, 此外, 广泛应用在网络技术教学方面。

2 网络仿真实验设置

本次无线自组织网络仿真中, 建立网络拓扑结构图如图一所示。

本实验中放置7个节点, 条件如下:

(1) n0至n4为水平放置的5个无线节点, 间隔距离为200m, n5放置于n0节点下方200m位置, n6放置于n4节点上方200m位置, TCL脚本为:

(2) n6节点在第5s时以10m/s的速度水平移动至n0上方位置, 耗时80秒, 到达后停留5秒再以相同的速度回到出发点。

$ns at 5"$n6 setdest 200 500 10"

$ns at 90"$n6 setdest 1000 500 10"

(3) n5与n6之间建立一个以udp为通信协议的cbr联机, cbr封包大小设置为512B, 传输速度0.2Mbps。仿真时间为第2s开始发送数据, 在第175秒结束传送, TCL脚本为:

(4) 该实验模拟环境使用ADOV作为路由协议, 参数设置TCL脚本为:

3 网络仿真实验演示

脚本编辑完成后使用NS-2进行网络传输模拟, 通过NAM (Network Animator) 进行仿真演示, 该软件的功能是根据网络模拟的特定格式Trace输出文件来运行动画, 以观测网络模拟中的Trace和数据流分组流向, 图二至图六为本次实验的NAM仿真画面。

实验中, n6节点从 (1000, 500) 位置水平移动至 (200, 500) 位置后, 停留5秒钟再以相同速度回到初始位置, 路由协议自动寻找最适合的路径来传送封包, 考虑到路径的相似性, 本文只列出实验过程中0~90秒的仿真画面。

图二为3.74秒时的数据流流向, 分析出传输路径为 (n6→n4→n3→n2→n1→n0→n5) 。

图三为25.77秒时的数据流流向, 分析出传输路径为 (n6→n3→n2→n1→n0→n5) 。

图四为46.77秒时的数据流流向, 分析出传输路径为 (n6→n2→n1→n0→n5) 。

图五为65.28秒时的数据流流向, 分析出传输路径为 (n6→n1→n0→n5) 。

图六为86.26秒时的数据流流向, 分析出传输路径为 (n6→n0→n5) 。

4 仿真实验结果分析

本实验使用awk工具对仿真记录文件out.tr进行结果分析。awk是一种优良的文本处理工具, 它扫描Trace文件中的每一行, 查找与命令行中所给定内容相匹配的模式, 发现匹配内容后进行编程分析, 端点至端点延迟时间的关键awk代码如下, 延迟时间如图七所示。

cbr封包遗失率间的关键awk代码如下, 遗失率如图八所示。

5 结束语

本文将NS-2仿真技术应用于自组织无线网络, 通过模拟环境下的网络配置, 设计仿真案例, 编写仿真源代码、设置仿真参数, 使用NAM进行动画演示, 用awk分析仿真结果, 加深学生对网络原理和相关协议的理解;同时熟练掌握NS2仿真工具的使用, 从而进一步提高学生自己动手设计和独立思考的能力;在教学实践中, 使理论知识的学习不再枯燥乏味, 激发学生的学习兴趣, 提升实验教学效果, 具有一定的应用价值。

参考文献

[1]柯志亨, 程荣祥, 邓德隽.NS2仿真实验——多媒体和无线网络通信[M].北京:电子工业出版社, 2009.

[2]黄化吉, 冯穗力, 秦丽娇, 等.NS网络模拟和协议仿真[M].北京:人民邮电出版社, 2010.

[3]徐雷鸣, 庞博, 赵耀.NS与网络模拟[M].北京:人民邮电出版杜, 2003.

[4]孙祺, 李骐, 高振明.基于NS网络仿真器的研究与扩展[J].山东电子, 2004, 1 (01) :24-26.

[5]王波, 孙炎炎, 周志伟.计算机网络实验综合模拟平台的研发[J].计算机教育, 2009, 7 (03) :85-88.

[6]李大勇.NS2仿真软件在无线网络教学中的应用[J].微计算机信息, 2010, (19) :173-175.

[7]王栋, 王小明, 吴三斌, 等.一种无线多媒体传感器网络仿真器设计方案[J].计算机技术与发展, 2011, 21 (09) :1-5.

NS-2仿真 篇3

ASON(自动交换光网络),亦称智能光网络,是下一代光网络的发展方向[1]。与传统的光传送网相比,智能光网络最大的不同在于引入了具有智能特性的控制平面。但是,控制平面在增加光网络智能性的同时,也带来了新的安全隐患[2]。这就要求使智能光网络能全面有效地支持未来多样性业务的同时,也要把路由安全性作为网络规划和建设之初需重点考虑的因素。为了提高智能光网络中路由的安全性,一般采取以下安全措施[2,3]:采用密钥管理和认证机制,防止攻击节点的非法接入;对路由信息进行加密保护;采用完整性验证,防止消息被篡改;采用消息序列号,防止针对路由信息的重放攻击;采用数据源认证机制,防止来自攻击源的消息。

NS-2(网络仿真器(第二版))具有开源和免费等特点,已被各科研单位广泛用于网络分析与研究[4]。由于NS-2默认模块不支持对光网络的仿真,目前一些学者开发了若干基于NS-2的光网络仿真原型系统[5,6],例如基于NS-2的光突发网络仿真平台等,相关成果为光网络的研究奠定了良好的基础。但这些仿真平台都没有考虑光网络的安全问题,因此如何在NS-2平台中模拟网络协议的安全机制,是目前研究中面临的一个共同难题。本文构建了一种基于NS-2的SRSP-NA(ASON安全路由仿真平台)。

1SRSP-NA的系统描述

1.1SRSP-NA整体构架

由于NS-2中没有相应的智能光网络组件,因此SRSP-NA的设计属于C++和OTcl编程的层次。为了模拟智能光网络节点间的通信,需要定义新的智能光网络组件。如图1所示,SRSP-NA中智能光网络组件主要包括CC (连接控制器)、RC(路由控制器)、LRM(链路资源管理器)、SM(安全模块)、路由协议和相关数据库等组件。

(1)RC维持两种类型的表:拓扑结构表和路由表。拓扑结构表储存光网络的拓扑结构和节点间的路由与信令交换信息;路由表存储由拓扑结构表计算得到的路由。RC为CC在创建光路径时提供路由服务。(2)CC负责协调LRM和RC的工作,调用相关密钥信息,与对等的CC共同管理和监督光连接的安全建立、拆除和对已有连接参数的修改。(3)LRM维护链路资源表,其中还包括相邻链路的资源信息(如光纤、波长),另外光纤链路在NS-2有线链路上进行扩展,可增加波长数量和波长转换器等重要的光纤特征。(4)路由协议用于网络拓扑资源和公钥信息的分发。(5)SM模块完成加解密、数字签名、消息摘要计算和密钥管理等功能。

1.2SRSP-NA的类结构

为了实现智能光网络中的节点、多波长链路、路由协议、应用层数据源或连接请求产生源、SM、光路建立及波长分配和信令协议等功能,在SRSP-NA中定义了许多新的扩展类,如AsonNode、DuplexFiberLink、Agent/rtProto/SM、Agent/RC、Agent/LRM、Agent/CC和Application/Traffic/ConnectionRequestGenerator等,具体如图2所示。

类AsonNode包括Entry(节点入口)、LightPathClassifier(光路分类器)和PortClassifier(端口分类器)。利用Agent/rtProto/RC(智能光网络路由控制器)计算出的路由表,LightPathClassifier将连接请求送入多波长链路,经过多波长链路,然后到达相应的下一跳节点。因此,类AsonNode实现了光交叉连接器和部分CC的功能;类Agent/RC模块负责完成路由计算和波长分配,它主要实现了RC的功能;类Agent/rtProto/LRM负责链路状态的更新、邻居的管理和路由消息的管理等,主要实现链路资源管理的功能;类Agent/CC负责光连接的建立和维护等,它主要实现CC和部分RC的功能;类Agent/SM负责SM功能的实现;类Duplex-FiberLink实现光纤链路的功能。

这些类的调用关系如下:当边缘节点通过应用层的流量产生器生成连接请求消息后,Application/Traffic/ConnectionRequestGenerator将消息发 送至Agent/CC来为该请 求建立光 连接,Agent/CC随后调用Agent/RC为连接请求进行路由计算及波长分配,此时的路由表是由路由协议通过调用Agent/rtProto/SM计算出来的。随后Agent/CC将信令消息发 送至AsonNode的入口处,并到达LightPathClassifier,LightPathClassifier根据NextHop值将消息发送至相应的光链路,通过光链路将消息送到下一个节点的入口,再由下一个节点的LightPathClassifier根据目的地址的值来 决定此消息是接收还是转发,最后达到建立光路的目的,光路建立完毕后,即可进行数据传送。

1.3SM的设计与实现

SM是实现SRSP-NA的关键。SRSP-NA采用直接调用OpenSSL库函数的方式实现相关功能。OpenSSL是一个功能丰富的开源安全工具箱[7],提供的主要函数功能有:大量软算法(对称/非对称/摘要)、大数运算、非 对称算法 密钥生成、证 书请求(PKCS10)编解码和 数字证书 编解码等。 由于OpenSSL采用C语言开发,具有优秀的 跨平台性能,因此,安装OpenSSL后,SRSP-NA在NS-2中可通过调用include< >库函数的方式直接加载相应的安全函数库或直接使用相关命令生成需要的安全参数。

(1)加解密模块。由于 可直接调 用OpenSSL安全库函数,SRSP-NA可支持多种常 用加密模 式(如ECB(电子密码本模式)、CBC(密码分组链接)、CFB(加密反馈模式)和OFB(输出反馈模式)等)和常用的加解密算法(如DES(数据加密标准)、3-DES(三重数据加密标准)和AES(高级加密标准)等)。在ASON的路由过程中可直接调用该模块,完成对路由信息或数据分组的加解密功能。为了提高系统的安全性,SRSP-NA采用“一次一密”的加密方法,在SRSP-NA的C++代码中,通过调用OpenSSL的加/解密模块的外部接口函数完成相应功能。例如,采用CBC与AES相结合的加密方案需要分别调用如下函数:(a)设置AES加解密模式:constEVP_CIPHEREVP_aes_128_cbc();初始化加解密上下文:EVP_CIPHER_CTX_init(EVP_CIPHER_CTX&ctx);(b)密初始化:intEVP_EncryptInit_ex(EVP_CIPHER_CTX&ctx,EVP_CIPHERcipher,NULL,char* AESkey,char*iv);(c)完成加密:intEVP_EncryptUpdate(&ctx,AESout+AESlen,&outl,AESin,inl);(d)获取加密结果:intEVP_EncryptFinal_ex(&ctx,AESout+AESlen,&outl)。

(2)数字签名模块。在SRSP-NA中,数字签名模块主要对路由消息的摘要进行签名,一方面可提供对消息的源认证功能,另一方面可保证所传递消息的完整性和防止数据源的事后否认行为。同时,为了防止数字签名中的消息重放攻击,SRSPNA中通过设置消息序列号来检测判断。采用SHA(安全散列算法)消息摘要函数和非对称加密算法RSA(公钥加密算法)实现的数字签名方案调用的OpenSSL函数如下:(a)消息摘要计算:char* SHA(char* md_in,char* md_n,char* md_out);(b)完成RSA私钥加密功能,即实现消息的数字签名:intRSA_private_encrypt(intflen,char* Cfrom,char* Cto,RSA* MyPriKey,intpadding);(c)完成RSA公钥解密功能,即实现消息的数字签名验证:intRSA_public_decrypt(intflen,char* Cfrom,char* Cto,RSA* PubKey,intpadding)。

(3)密钥管理模块。在SRSP-NA的安全机制中,对于不同类型的密钥,我们采取不同的密钥管理措施。密钥管理分为四个阶段:

(a)密钥产生阶段。ASON中的每个节点按照数字签名算法产生自身所需的公钥和私钥,并向CA(证书机构)申请CA签名的公钥证书。同时,源节点产生加密所需的会话密钥(“一次一密”)。在SRSP-NA中,公钥证书的类型为自定义的结构体StructCertificate,Certificate包含公钥证书的序列号、节点ID号、节点ID对应的公钥、CA的ID号以及CA的签名等信息。

(b)密钥分发阶段。SRSP-NA通过增加光网络路由协议新报文来分发每个节点的公钥证书。例如在OSPF-TE(OSPF流量工程)中,可采用PKLSA(公钥链路状态通告)类型的报文来分发每个节点的公钥证书。因为路由协议在网络初始化时已经运行,所以可在协议运行前把各节点的公钥证书分发出去。

(c)密钥更新阶段。采用定时更新和事件激活相结合的方式来引发相关密钥更新操作。

(d)密钥存储阶段。SRSP-NA使用一种类似数据库的PublicCertMap的数据结构来存储收到的每个节点的公钥证书,利用它可以灵活地删除、插入、查找和更新证书。同时,对节点私钥和会话密码采用加密和保护存储。PublicCertMap被定义为typedefLsMap<int和Certificate> PublicCertMap的形式。

2SRSP-NA仿真实例研究

2.1仿真设置

为了验证平台的有效性,CC中的信令协议采用GMPLSRSVP-TE(通用多协议标记交换体系下的资源预留协议),路由协议采用GMPLSOSPFTE(扩展的开放式最短路径优先协议),并在其上添加了PKLSA报文,用于公钥证书的分发。另外,仿真采用CERNET(中国教育科研网)作为拓扑结构,光连接请求到达满足泊松分布,连接保持时间满足指数分布,网络负载的单位为Erl。各节点之间的光纤链路上 的波长数 为10,波长的带 宽为2.5Gbit/s。设置两个仿真场景:

场景一:比较并分析在正常情况(没有攻击)下ASON-OSPF(不带安全 机制的路 由协议 )与ASON-SOSPF(使用安全机制的路由协议)引起的光连接阻塞性能。

场景二:网络中设置3个攻击节点分别执行路由消息伪造、路由消息重放和故意丢包行为,判断分析出两协议在有攻击情形下的光连接阻塞性能。

2.2仿真结果与分析

图3为路由协议运行后的网络拓扑图,包含了CERNET的骨干节点和链路。根据实验场景和实测数据,可得到图4、图5所示的结果。

(1)由图4可知,在正常情况下,随着网络负载的增加,两个协议的阻塞率都呈上升趋势。但是,ASON-SOSPF引起的光连接阻塞率略高于ASONOSPF。这是因为安全机制的引入在保证协议安全的同时,也不可避免地增加了协议的负载和开销。

(2)由图5可知,在有攻击的情况下,随着网络负载的增加,ASON-SOSPF引起的阻塞率比起ASON-OSPF引起的阻塞率有较明显的下降。这是因为没有安全机制的路由协议不能防御其面临的攻击,这些攻击不但产生故意丢包行为,而且致使光路建立过程中的路由发生混乱。

3结束语

NS-2仿真 篇4

数据通信网络在近年来获得了巨大的发展,人们需要设计新的协议和算法以满足日益增长的新的应用的需要,对这些新的协议和算法的测试和评价成为一个迫切的问题。在真实网络中解决上述问题存在着诸多的困难,一方面难以获得测试所需要的条件,另一方面构建一个真实的网络测试环境需要昂贵的花费。网络模拟器的出现为解决上述问题提供了一个行之有效的解决方案。NS—2是一款开源的网络模拟软件,为网络研究者提供一整套网络模拟工具。借助NS—2平台,网络研究者可以通过修改NS—2源代码以扩展NS—2功能,实现新的协议和算法。另外,网络研究者还可以方便地模拟自己需要的网络拓扑结构,并在其上模拟相关的业务流和数据流,以实现对新的协议和算法的测试和评价[1]。

2 IEEE 802.11简介及NS—2下802.11相关实现

IEEE 802.11规范的第一个版本发表于1997年,其中定义了介质访问控制层(MAC)和物理层的协议规范。为了使无线网络能够在各种复杂的网络环境下正确地工作,IEEE 802.11协议的设计者采用了一些有别于传统以太网的机制。在802.11中,接收方正确接收一个帧后必需回应以响应帧。如果发送方没有收到接收方发来的响应帧,发送方认为接收方没有正确接收该帧因而采用重传机制重传该帧。此外,在无线网络中还存在隐藏节点问题。图1中,节点3发送的信号节点1无法收到,对于节点1来说,节点3是一个隐藏节点。由于隐藏节点的存在,在无线网络中冲突很难被检测到。为了解决隐藏节点带来的冲突问题,802.11协议的设计者要求在发送大的数据帧(超过RTS阈值)时使用RTS/CTS帧序列来保留信道供后续传输使用。在无线网络中,多个节点通过相同信道传输数据,形成了竞争关系。为了能够顺利地使用信道发送数据,要求节点在发送数据前采用CSMA/CA机制竞争信道,默认工作模式为分布式协调功能(DCF)。在DCF模式下,每个节点检测到信道空闲后,需要等待DIFS(分布式帧间间隔)加上一个随机退避时间(退避次数×时隙长)后才能传输数据。当多个节点都在等待占用信道,哪个节点随机选择的退避次数越小,哪个节点就先发送数据[2]。为了在干扰比较严重的环境下改善无线网络的性能,802.11协议提供了分段选择,对于大的管理帧和数据帧,允许进行分段传输,如果干扰发生的话,影响的是小的分段而不是整个帧。通过减少被破坏的数据数目,分段能够提高无线网络的吞吐量[3]。

NS—2中关于IEEE 802.11实现的相关代码主要位于ns2.33/mac目录下的mac-802_11.h/mac-802_11.cc以及mac-timers.h/mac-timers.cc文件中,其中,2.33是NS实现的版本号。

在mac-timers.cc中实现了支持IEEE 802.11规范的七种定时器,关系如图2所示。BeaconTimer用于AP(无线接入点)定时发送信号帧;ProbeTimer用于移动节点完成无线网络扫描以及后续的授权关联过程;IFTimer用于指示接口已经把数据发送到介质中;NavTimer用于指示NAV(Network Allocation Vector)时间已经到期,节点可以争用介质;RxTimer用于指示接口已经完成帧的接收;TxTimer用于指示当前发送的帧是否超时,如果需要的话,重传当前帧;DeferTimer用于发送帧之前的延时(IEEE802.11要求每个节点检测到信道空闲后,需要等待DIFS(分布式帧间间隔)加上一个随机退避时间后才能传输数据。对于有些帧来说,这个时间是SIFS。);当DeferTimer到期,如果媒介忙的话,使用BackoffTimer继续发送。

在mac-802_11.cc中实现了IEEE 802.11规范的MAC层功能,帧发送简要状态图如图3所示。当收到一个帧时,如果是向下层发送的帧则进入准备发送状态,启动DeferTimer定时器,定时器到期后,如果媒介仍然空闲的话,通过接口把帧送入媒介,同时启动传输超时定时器TxTimer。在超时定时器到期前,如果收到接收方的ACK帧,表示帧发送完成,回到发送空闲状态,继续下个帧发送,如果没有收到接收方的ACK帧,表示帧传输过程中出现错误,需要重传当前帧,回到准备发送状态,对当前帧进行重传。

3 帧分段发送的实现

NS—2标准实现中没有实现IEEE802.11规范中建议的对大的数据帧和管理帧的分段实现。为了能够测试在干扰环境下分段对网络性能的影响,我们在NS—2中现有的802.11实现上增加了分段的功能。为了支持分段功能,我们在Mac802_11类中增加了以下成员变量:

分段帧发送简要状态图如图4所示。当接收到一个帧需要发送时,检测帧长度,如果小于分段阈值,按原实现中的发送过程进行发送;如果帧长度大于分段阈值,则记录当前帧大小到curPackSize_和remainSize_变量,进入分段传输中状态并发送分段;当收到接收方的ACK帧,更新remainSize_变量,如果remainSize_变量值不为0,表示还有分段需要发送,继续发送分段,如果remainSize_变量值为0,表示所有分段发送完成,回到分段空闲状态。分段的发送过程和非分段帧的发送过程基本一样。

分段帧接收简要状态图如图5所示。收到非分段帧时,提交给上层进行处理。当收到分段帧的第一个分段时,进入分段接收中状态并记录收到的分段大小、帧序号、分段序号、发送方的MAC地址到相应变量中。在分段接收中状态下,当收到分段帧并指示后续还有分段时,如果分段号、帧序号和发送方的MAC地址和保存的信息匹配,则更新收到的分段大小和分段序号。如果不匹配,表示分段接收过程出错,回到分段空闲状态。如果收到分段的最后一个帧,表示所有分段都接收完毕,提交给上层处理并进入分段结束中状态。在分段结束中状态有可能收到发送方重传的最后一个分段帧,此时回应以ACK帧并丢弃接收的分段帧。如果收到其他帧的话,回到分段空闲状态。

4 测试代码及相关数据

为了测试分段实现的正确性以及在干扰环境下分段对网络性能的影响,我们设计了网络仿真结构如图6所示。图6中,无线节点N1、N2、N3共享无线信道,无线信道的带宽为1 Mb,通过AP连接到有线网络,AP和节点N0通过全双工有线链路相连,有线链路带宽为10 Mb,时延为1 ms。N1、N2、N3三个无线节点上运行FTP应用,向节点N0不间断发送FTP数据包。统计节点N0接收到的数据流量作为无线网络性能的指标。TCP的发送窗口设置为30,数据包大小为1 500字节,分段阈值设置为500字节,使用DropTail缓冲区管理,缓冲区大小设定为300个数据包,模拟时间为100 s。发送方TCP采用标准实现,MAC层帧重传的上限次数为7。

在不同错误率情况下我们统计了节点N0接收的TCP流量,图7给出了实验结果。从图中可以明显看出,在BER(位错误率)较低情况下,分段实现的流量小于非分段实现,这是由于在分段实现中每个分段帧都需要额外的ACK及相应的等待时间。在BER较高情况下,分段实现的性能明显优于非分段实现,这是由于此时大的数据帧容易出错,如果不进行分段的话,每次出错都要重传整个数据帧,进行分段后,如果出错,需要重传的只是分段部分,减少了重传帧的大小,改善了网络的性能。

5 结束语

本文在NS—2的IEEE802.11实现的基础上增加了分段实现并进行了实验,实验结果表明,分段实现只有在网络环境比较差,位错误率比较高情况下才能有效地改善网络的性能。在网络环境较好情况下不需要开启分段功能。

摘要:NS—2是当前广泛使用的网络模拟器。在NS-2的IEEE802.11实现基础上增加了分段实现,并进行了实验。实验数据表明在网络环境较差的情况下,对大的帧进行分段传输能够有效地提高无线网络的性能。

关键词:无线网络,MAC,网络模拟器,分段

参考文献

[1]徐雷鸣,庞博,赵耀.NS与网络模拟.北京:人民邮电出版社,2003;11:2—3

[2]刘庆邦,周燕,喻其财,等.IEEE802.11用于ad hoc网络的性能问题及改进方法.计算机与信息技术,2007;13(6):37—41

【NS-2仿真】推荐阅读:

合成仿真07-21

模拟仿真05-09

仿真结构05-15

轮机仿真05-24

仿真约束05-26

仿真应用05-26

定性仿真06-07

仿真参数06-28

工业仿真06-28

仿真设计07-09

上一篇:高分作文下一篇:低碳园林的生态学途径