(3) 网络性能问题:RED算法控制的平均队列长度经常会随着连接数目的增加而增加,会造成传输时延抖动,引起网络性能不稳定。同时,当网络存在较大时延时,RED算法的性能较差,队列长度震荡很大,也会造成时延抖动。
2.2 网络模拟软件NS介绍
随着信息时代的到来,网络的规模和结构越来越复杂。不管是升级现有网络,还是搭建新的网络,或是测试新的协议都需要对网络性能进行有效而客观的评估。但是,由于各种原因,在新技术的研究过程中,实际网络系统的实现往往代价较高或者不现实。在这种情况下,模拟就成了可供选择的最佳的测试、评估和验证手段之一。网络模拟作为一种新的网络规划和设计技术,为网络的规划和设计提供客观、可靠的定量依据,提高了网络建设中决策的科学性,缩短了建设周期,降低了投资风险。因此,网络模拟技术逐渐成为网络规划、设计和开发中的主流技术之一。
网络模拟是指应用网络模拟软件建立所研究的网络系统的模型,在计算机上模拟运行这个模型,并分析运行的输出结果。它可以根据需要设计的网络模型,用相对很少的时间和费用了解网络在不同条件下的各种特性,获取网络研究的有效数据。
在众多的网络模拟软件中,因为NS(Network Simulation)充分支持TCP协议,并且开放源代码,用户可以任意增加所需要的功能,所以越来越多的研究机构开始使用NS来进行网络模拟,并且将研究结果提供给NS。NS支撑的平台包括大部分Unix(FreeBSD),Linux,SunOS,Windows+Cygwin,是一个比较成熟的软件[51]。
2.2.1 NS简介
NS起源于早在1989年的REAL网络模拟器。1995年NS的开发获得了DARPA的支持,通过VINT项目,由LBL、Xerox PARC、UCB和USC/ISI合作进行。目前NS的开发由DARPA的SAMAN项目和NSF的CONSER项目支持。
NS是一个离散事件模拟器。离散事件模拟,就是时间规定了系统状态的改变,状态的修改仅在事件发生时进行。NS的核心部分是一个离散事件模拟引擎。NS中有一个“调度器”类,负责记录当前时间,调度网络事件队列中的事件,并提供函数产生新事件,指定事件发生的时间。
NS采用分裂对象模型,即NS中的构件一般都是由相互关联的两个类来实现,一个在C++中,一个在Otcl中。NS使用这种分裂对象模型,是出于兼顾模拟性能和灵活性两方面的考虑[53]。
一方面,具体协议的模拟和实现需要一种程序语言,它需要很有效率的处理字节(Byte),报头(Packet Header)等信息,需要应用合适的算法在大量的数据集合上进行操作。为了实现这个任务,程序内部模块的运行速度(run-time speed)是非常重要的,而运行模拟环境的时间、寻找和修复bug的时间,重新编译和运行的时间(run-around time)就显得不是很重要了。所以NS得低层协议库、事件处理、包处理、路由选择等操作使用C++来编写。
另一方面,许多网络中的研究工作都围绕着网络组件和环境的具体参数的设置和改变而进行的,需要在短时间内快速开发和模拟出所需要的网络环境(scenarios),并且方便修改和发现、修复程序中的Bug。在这种任务中,run-around time就显得很重要了,因为模拟环境的建立和参数信息的配置只需要运行一次。解释性语言Otcl语言能很好地满足这方面的要求。
NS含有非常丰富的构件库,所支持的网络类型包括广域网、局域网、移动通信网、卫星通信网等,所支持的路由方式包括层次路由、动态路由、多播路由等,所支持的协议包括TCP协议、UDP协议等。NS还提供了跟踪和检测对象,可以把网络系统中的状态和事件记录下来以便分析。另外,NS的构件库还提供了大量数学方面的支持,包括随机数产生、随机变量、积分等[53]。 基于神经网络的自适应RED算法及其仿真研究(7):http://www.youerw.com/zidonghua/lunwen_5482.html