APP下载

基于NS2的网络仿真技术研究

2010-12-22

河池学院学报 2010年2期
关键词:网络通信数据源队列

梁 潘

(阿坝师范高等专科学校 电子信息工程系,四川 郫县 611741)

基于NS2的网络仿真技术研究

梁 潘

(阿坝师范高等专科学校 电子信息工程系,四川 郫县 611741)

网络仿真是网络通信设计的重要环节,也是网络通信性能分析的关键 .介绍了 NS2作为一款开源的免费仿真工具在构件库、灵活性、通用性等方面所具有的优势;剖析了 NS2的系统结构、仿真原理、仿真设计流程;以 NS2为平台对丢尾队列算法进行仿真实验,并对实验数据加以分析,证明了该平台仿真的有效性,同时给出了利用NS2进行网络通信研究的一般方法 .

网络仿真;NS2;丢尾队列

0 引言

网络通信的研究一般分为理论研究、网络仿真、实验网三个阶段,网络仿真由于采用仿真软件进行模拟,使很多研究人员能够研究大规模网络和设计、开发新协议新算法,并能在网络试用前对其进行检验和改进,所以网络仿真技术发展飞速,应用领域越来越广 .由于国内近几年才开始使用该技术研究网络通信,所以还相对比较落后,为此研究网络仿真技术具有重要的意义 .

1 NS2综述

1.1 NS2的特点

目前,国外研制了 OPENT、MATLAB、NS2、SPD等几种高质量的网络仿真软件 .这几种仿真软件各有特点:OPENT主要运用于网络路由模拟,MATLAB运用于科学计算、矩阵运算,NS2在 IP网络协议、算法模拟方面具有更多优势,SPD则主要运用于DSP的模拟场合 .除了 NS2外其他几种软件均需要投入高昂的费用,这对科研院所、高校来说是一笔巨大的开支 .所以,这里主要讨论开源、免费的NS2.

NS2是一个离散事件驱动的网络仿真工具,由 LNBL的网络研究小组开发,其前身是 S.Keshav研制的REAL网络仿真器[1],NS2具有如下特点[2-3].

(1)丰富的构件库 .NS2对网络仿真中一些常用、通用的实体进行了建模,封装了节点 (node)、链路(Link)、队列管理 (QueueManagement)、代理 (Agent)等,这些实体的特性和功能通过相关封装类的对象来实现,丰富的构件库支持包括广域网、局域网、移动通信网和卫星通信网在内的多种网络 .

(2)灵活性高 .NS2使用了分裂模型的开发机制,采用 C++和 Otcl两种语言,它们之间采用 Tclcl进行自动连接和映射,由于 C++运行速度快但改变比较慢、Otcl运行速度慢但转变快的特点,前者经常用于具体协议的描述,后者常用来重新设置和修改模拟场景 .

(3)支持各种业务模型和多种通信协议来模拟产生实际网络中的业务流 .NS2内置了流量产生器和应用模拟器,流量产生器实现指数分布、Pareto分布、固定比特和 Trace文件等四种概率模型流量的产生,应用模拟器则实现了 FTP、Telnet等各种常用的业务模型;NS2同时还支持多种路由协议,如广播路由、多播路由、静态路由、动态路由等 .

(4)强大的结果处理能力 .NS2能将仿真过程中需要的数据完整地收集到文件中以便后期处理,文件中详细的记录了仿真的整个过程,包括每一个数据分组到达、离开链路或队列,或者被丢弃分组的信息,最后可以利用 Xgraph或 Gnuplot绘图工具轻松地将仿真结果转换成直观的图表 .

1.2 NS2的系统结构

NS2系统是由众多软件包组成,主要包括 C/C++、Tcl/Tk、OTcl、Tclcl和 NS,其结构如图 1.Tcl是开放的脚本语言,用来对 NS编程;Tk提供了 Tcl的图形界面开发环境;Otcl是 Tcl面向对象的扩展,用来提供C++对象面向用户的接口;Tclcl则提供了 NS和 Otcl的接口,其封装了六个 C++类:Tcl、Tc lObject、TclClass、TclComman、EmbeddedTcl和 InstVar.

为了充分发挥 C++语言运算速度快和 Otcl语言灵活的优点,NS2使用了图 2所示的分裂模型将他们结合起来,所以结构中存在编译类和解释类,一般情况下,C++用于各种协议、数据流业务的实现,Otcl用于模拟场景的建立,在做网络仿真研究时,仿真对象通过解释器建立并初始化,Tclcl通过 TclObject、TclClass两个类把Otcl和 C++类关联起来使相应类的对象建立映射并一一对应 .

NS2由网络组件对象库、网络设置模型库和事件调度器三个部分组成 .事件调度器是NS2的总控部分,由于NS2是一个事件驱动的仿真器,所以网络仿真就是在不断地处理事件,在仿真开始前,按照网络模拟脚本中的描述生成所有事件,按事件触发时间排序并存放在事件表中,仿真时时间调度器就从事件表中依次提取事件并处理 .网络组件对象库中包含节点、链路、代理等,它们共同继承了 NsObject和事件处理器类来处理多项事务 .节点实际是仿真真实网络中的计算机、交换机和路由器等网络设备,它们通过链路连接起来,在 NS2中,链路与 TCP/IP网络分层结构中的数据链路不同,它同时实现了物理层、数据链路层及网络层的部分功能;代理是实际产生和消费分组的对象,是传输层的实体,分为 TCP和 UDP代理 .如前所述,NS2的网络组件非常丰富,所以简单网络仿真时只要熟悉研究课题中需要使用的网络组件,其他的都可做“透明”处理来完成 .

1.3 NS2的仿真原理及流程

用户在使用 NS2做网络仿真通信时,必须分析仿真过程中要涉及到解释层还是编译层,如果仅仅涉及解释层 (NS2能提供所有组件),则不需要对 NS2系统本身进行任何修改,只需编写 Tcl或 Otcl脚本,搭建合适的网络模拟场景并确定链路的基本特性 (如带宽、延迟、队列管理类型、应用层业务等)及节点的初始设置(单播、多播、有线、无线、位置等),最后建立追踪文件将仿真过程中用户感兴趣的数据保存下来以便分析 .在仿真过程中可以使用Network Animator(NAM)观测仿真的动态过程,显示从开始到结束整个过程中拓扑结构 (无线网络)变化、队列情况、丢包状况等 .这类仿真主要用于在教学过程中加深学生对网络协议和算法的理解 .如果所需要的仿真功能在 NS2中没有提供,例如对某个协议的改进或新提出的算法进行仿真,这就涉及到编译层,需要添加新的 C++和Otcl类添加新的协议,然后编写 Otcl脚本重复上述涉及解释层的工作 .添加新协议的流程需要注意的是[4]:(1)做适当的类定义,添加协议类;(2)定义新协议的分组头结构;(3)定义 C++和 Otcl代码之间的接口连接;(4)定义数据包接收 (recv())、命令处理 (command())以及时钟类等函数;(5)对新协议代码做必要改动,并在 NS目录下运行Make Depend和Make重新编译 NS2.

2 仿真实验

NS2功能强大、数据准确,对有线网、无线网都提供了支持,本文将以丢尾队列[5]的队列管理模式为例,使用NS2作为仿真器,验证该队列管理方法理论分析的正确性,给出使用 NS2平台进行网络通信研究的一般步骤 .

2.1 丢尾队列简介

在网络通信中,路由器中数据报到来的速度高于转发的速度,则队列会增长,当达到路由器的内存或规定的极限值时,丢弃所有额外的数据报,这便是丢尾队列方法 .在简单情况下,数据报携带来自单个 TCP连接的报文段通过路由器,报文被丢弃时 TCP进入慢启动状态降低吞吐率,直到 TCP开始收到 ACK报文并增大拥塞窗口,但是,因为数据报一般是多路复用的,连续的数据报来自不同的源站,这会造成尾部队列策略使路由器丢弃来自N个连接的一个报文段,使 TCP的N个实例同时进入慢启动状态 .

2.2 基于NS2的尾部队列策略仿真实验

为了验证上述尾部队列策略存在的问题,在W inXP+Cygwin+ns2.28的环境下做了仿真实验 .

(1)参数设置 .实验采用图 3所示拓扑结构,n2与n3之间的链路为瓶颈链路,S(1)、S(2)和 S(3)为源数据的发送点,n3为目的节点,主要考查n2与n3之间链路上的队列变化情况 .实验的参数为:瓶颈链路带宽为 0.7MB、时延 20ms、队列大小为 100,各源节点到n2的链路带宽为 10MB、时延 1ms,源节点与n2节点队列大小为 20,模拟周期 50 s.

(2)核心 TcL脚本分析 .根据 NS2原理和所提供的网络组件结合 2.2(1)中的参数设置,编写了实现尾部队列策略仿真的 Tcl脚本,由于篇幅有限,这里仅对核心代码做分析 .

#创建节点n2、n3以及它们之间的瓶颈链路并设置带宽、时延和队列管理策略#

#使用随机数来设定每个数据源 S(1)、S(2)和 S(3)的 ftp业务开始发送时间#

(3)实验分析与结论 .在 NS2中运行以上 Tcl脚本后,利用 Gawk语言从相关 Trace文件中提取第二列(事件发生时间)、第六列 (此时分组大小)数据,再利用 Gnuplot绘图工具绘制当前队列大小变化 (图 4)和各个 TCP数据源发送时的窗口大小变化 (图 5)曲线图 .

从图 4可看出队列在 13 s、25 s、37 s、49 s时达到实验时设置的队列大小极限 100,此时开始执行丢尾策略,结合图 5可看出,各个数据源大概在 13 s、25 s、37 s、49 s时被丢尾策略丢包,然后同时调整窗口大小,由此可知,各个 TCP数据源的窗口大小变化存在高度的同步性,既当队列满时,3个数据源新到的尾部数据同时被丢弃,使其进入慢启动状态 .

3 结语

本文在介绍 NS2的系统结构、仿真原理、仿真设计流程的基础上,以该仿真平台对丢尾队列策略进行仿真实验,从数据分析及曲线变化图来看,仿真结果和丢尾队列策略理论分析是一致的,这证明了 NS2仿真模拟的可靠性 .网络发展日新月异,随着网络规模的扩大,新协议、算法的不断提出,网络仿真正成为国内外网络研究人员研究的热点,NS2作为一种开源、免费、高效的仿真工具必将得到更为广泛的应用 .

[1]Fall K,Varadhan K.The NSManual.[EB/OL].http://www.isi.edu/nsnam/ns/doc/index/html,2003-11.

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

[3]王永胜,吴德伟,刘勇.基于 NS2网络仿真研究[J].计算机仿真,2004,21(11):257-259.

[4]The network simulatorNS-2:Documentation[DB/OL].http://www.isi.edu/nsnam/ns/ns-documentation/html.

[5]Douglas E Comer.用 TCP/IP进行网际互联,第一卷:原理、协议与结构 (第四版)[M].北京:电子工业出版社,2003:1.

A study into the Network S imulation Based on NS2

L IANG Pan

(Depart ment of Electron ic I nformation,Aba Teachers College,Pixian,Sichuan 611741,China)

Network simulation of network communication design is an important step,and it is also the key to network communication performance analysis.The paperArticle describes the advantages ofNS2 as a free open source simulation tools in the component library,flexibility and versatility.Then it analyses the system structure,NS2 method and s imulation design process.And finally it conducts an experimenton theDistiller’s tail queue algorithm byNS2 and gets useful data to prove the validity of the simulation and obtains the generic methods of network communication.

ne twork s imulation;NS2;distiller’s tail queue

TP3

A

1672-9021(2010)02-0057-05

梁潘 (1978-),男,四川广汉人,阿坝师范高等专科学校电子信息工程系讲师,主要研究方向:计算机软件与网络 .

阿坝师专校级规划项目 (ASC09-15)

2010-03-10

[责任编辑普梅笑 ]

猜你喜欢

网络通信数据源队列
队列里的小秘密
基于多队列切换的SDN拥塞控制*
基于网络通信的智能照明系统设计
在队列里
网络通信中信息隐藏技术的应用
基于网络通信的校园智能音箱设计
Web 大数据系统数据源选择*
谈计算机网络通信常见问题及技术发展
丰田加速驶入自动驾驶队列
基于不同网络数据源的期刊评价研究