搜档网
当前位置:搜档网 › 网络模拟器NS2中仿真功能的问题分析及改进

网络模拟器NS2中仿真功能的问题分析及改进

网络模拟器NS2中仿真功能的问题分析及改进
网络模拟器NS2中仿真功能的问题分析及改进

第21卷第2期 系

统 仿 真 学 报? V ol. 21 No. 2

2009年1月 Journal of System Simulation Jan., 2009

网络模拟器NS2中仿真功能的问题分析及改进

况晓辉1, 赵 刚1,2, 郭 勇1,

3

(1.北京系统工程研究所, 北京 100101; 2.清华大学计算机科学与技术系, 北京 100084; 3.国防科技大学信息系统与管理学院, 长沙 410073)

摘 要:网络仿真技术为解决大规模网络规划、应用和协议设计面临的挑战提供了新的途径。作为广泛应用的网络模拟器,NS2为建立可扩展的网络仿真环境奠定了重要基础。在描述NS2仿真功能实现的基础上,重点分析了NS2仿真功能存在的不足。针对发现的问题,提出并实现了NS2仿真功能扩展,最后验证了仿真功能扩展的正确性。 关键词:网络仿真;NS2;报文转换;功能扩展

中图分类号:TP393 文献标识码:A 文章编号:1004-731X (2009) 02-0427-05

Improvement of Emulation Function in Network Simulator

KUANG Xiao-hui 1, ZHAO Gang 1,2, GUO Yong 1,

3

(1. Beijing Institute of System and Engineering, Beijing 100101, China; 2. Department of Computer Science and Technology,

Tsinghua University, Beijing 100084, China; 3. Department of Information System and Management of NUDT, Changsha 410073, China)

Abstract: Network emulate technology which enables real hosts and a real network to interact with a virtual network, becomes a very important way to resolve the challenge faced in network plan, application and protocol design. As a famous network simulator, NS2 proposed a foundation to construct network emulate platform. The emulation function of NS2 was described firstly. Based on analysis the problem of emulation function in NS2, the extension of NS2 emulation function was proposed and implemented. The correctness of extension was dominated in the end. Key words: network emulation; NS2; packet reform; function extension

引 言互联网的迅速发展与膨胀对网络的规划、应用和协议的

设计提出了新的挑战。在试验环境中对网络规划、新的应用和协议进行评估是应对上述挑战的有效手段之一[1-3]。当前构建复杂网络试验环境的实现技术主要包括测试床、网络模拟(network simulation )和网络仿真(network emulation )[4]等三种类型。

测试床具有逼真度高的优点,但是造价较高、规模和复杂性有限。网络模拟具有可控性强、灵活性高、代价低以及能够实现复杂网络拓扑等优点,但是对于网络流量以及实现细节支持不够,交互性不高。网络仿真综合了测试床和网络模拟的优点。在仿真环境中,网络应用运行在实际的硬件平台上,且能够与实际的环境交互,扩展性和灵活性较高,同时网络试验环境可配置、可控制、可重复,能够生成真实网络流量,从而成为当前构建网络试验环境的重要技术。当前网络仿真技术研究思路分为两种:一种思路是将仿真网络看作简单的延迟黑盒(simple delay lines ),仅关注网络出入口的设置,该思路具有硬件要求低的优点。相关研究包括:Dummynet [5],NIST net [6]等。另一种思路是通过建立虚拟网络模拟进行实时网络仿真。真实网络流量能够通过仿真

收稿日期:2007-06-10 修回日期:2008-02-09

作者简介:况晓辉(1975-), 男, 湖南新化, 博士, 副研究员, 研究方向为计算机网络, 信息安全;赵刚(1969-), 男, 河北保定, 研究员, 研究方向为计算机网络, 信息安全; 郭勇(1966-), 男, 湖南常德, 研究员, 研究方向为计算机网络, 计算机软件。

器,虚拟网络能够根据交互生成网络流量。相关的研究包括VINT/nse [7],ModelNet [8],NetBed [9], Virtual Routers [10],PlanetLab [11]以及IP-TNE [1]等。

随着网络复杂性的提高,基于延迟黑盒的网络仿真环境难以满足应用需求。因此,建立在网络模拟基础上的仿真环境成为网络仿真技术的研究重点。在网络模拟器实现中,NS2 [12]能够支持有线和无线、本地或卫星、局域网和广域网等各种网络类型以及网络分层模型,具有强大的二次开发能力以及可扩展、易配置和编程的事件驱动特性,为构建网络仿真平台提供了良好基础。然而,NS2已有的仿真功能在IP 地址支持、路由机制、协议支持等方面存在不足,难以满足网络技术研究和协议设计开发的实际需求。

本文在深入分析NS2仿真功能的基础上,重点分析了已有功能存在的不足,描述并实现了NS2仿真功能扩展,解决了IP 地址支持、动态路由以及拓扑验证的问题。最后,通过试验验证了仿真功能的正确性和有效性。

1 NS2网络仿真功能分析

事件驱动的网络模拟器NS2是DARPA 支持的VINT 项目中的核心部分,由Berkeley, USC/ISI 、 LBL 和Xerox PARC 等大学和实验室合作开发,其目的是构造虚拟的网络平台和模拟工具,以支持网络协议的研究、设计和开发。

1.1 仿真功能

NS2仿真模块实现了模拟器与实际网络的连接功能,

2009年1月系统仿真学报 Jan., 2009

包括分接代理对象、网络对象和协议仿真

对象等,它们与NS2模拟器的关系如图1

所示。分接代理对象负责真实网络报文与

模拟网络报文的转换。分接代理对象关联

的网络对象是接收和发送实际数据的入口

点。协议仿真对象实现对特定协议的仿真

支持。

1.1.1 仿真功能中相关对象

分接代理(Tap agent)

分接代理类是从代理基类派生而来的类,能够产生模拟报文。分接代理用来设置公共报头中长度、类型等字段。其中,类型设置为 PT_LIVE 表明该模拟报文中包含真实网络数据。分接代理能够发送数据包给关联的网络对象,并从关联的网络对象接收数据包。每个分接代理只能关联到一个网络对象,但一个仿真节点可以绑定多个分接代理。IPTapAgent和TCPTapAgent为Tap Agent的派生类,它将真实报文转换为模拟器中的IP报文或TCP报文,使得模拟器中已有的IP agent或TCP agent可理解此类报文,并对报头中的相关字段进行处理。同时, IPTapAgent和TCPTapAgent 还负责将模拟报文转换为真实报文。在转换过程中,通过将模拟报头中的IP报头和TCP报头与真实报文中的报头进行映射,实现真实节点与模拟节点在网络层和传输层的交互。

网络对象(Network Objects)

网络对象提供一个以特定访问模式(只读、只写、读写)进入实际网络Link、RawIP或UDP等协议层的入口。NS2提供三个网络对象:Pcap/BPF、IP网络对象、IP/UDP网络对象。

· Pcap/BPF 网络对象――提供LBNL包捕获库的扩展接口。其中,PcapLiveNetwork采用混杂方式从网络接口驱动中捕获链路层数据帧,PcapFileNetwork支持从特定格式的文件中获取链路层数据帧。

· IP 网络对象――提供访问IP报文的能力,该对象以原始套接字方式运行。以Network/IP为基类可以派生出实现更高层协议网络对象。IP网络对象的配置相当简单,它跟任何特定的物理网络接口都没有联系;系统的 IP 路由能力可以把报头中含有目的地址的数据包发送到适当的接口。

·IP/UDP 网络对象――IP/UDP是Network/IP的子类,它提供实现UDP 报文访问能力,同时支持 IP 组播操作的功能。

协议仿真对象

协议仿真对象实现对特定协议的仿真功能,目前NS2的仿真模块仅部分实现了ICMP、ARP、以及NAT等协议的仿真,提供的网络对象包括:IcmpAgent、PingResponder、ArpAgent以及NatAgent、TCPDestNat、TCPSrcNat、TCPSrcDestNat等。

· ICMP协议仿真对象――包括IcmpAgent、Ping- Responder,其中Agent/IcmpAgent,实现ICMP协议中的重定向功能,而PingResponder实现对ICMP ECHO类型ICMP 报文的响应。

· ARP协议仿真对象(ArpAgent)――实现ARP请求响应功能,可通过ArpAgent对象的命令设置接口、接口绑定的IP地址等。

· 网络地址转换对象――NatAgent是网络地址转换基类。TCPDestNat、TCPSrcNat、TCPSrcDestNat等对象分别实现目的地址转换、源地址转换以及源/目的地址转换。1.1.2 NS2仿真工作模式

NS2仿真工作模式包括非透明模式和协议模式两种类型。在非透明模式中,NS2把网络中的数据看成是不能被解释的数据包,实际的网络数据仅作为模拟报文的载荷,不对其进行任何处理。在协议模式中,NS2通过仿真对象对真实网络报文进行解析、处理和响应。

协议模式

协议模式下,绑定仿真对象的节点作为真实网络流量的目的节点,通过对真实报文进行分析,产生对应的响应报文,并将其封装为模拟报文,通过仿真网络发送到真实网络中。如图2所示,NS2中的TCP agent 可以与实际的 TCP 服务器实现交互访问,也能接收来自外部应用程序的数据。协议模式通常用在端到端应用测试、协议和一致性测试等方面。

图2 NS2协议仿真工作模式

非透明模式(Opaque Mode)

在非透明模式中,NS2的工作方式跟路由器类似,让真实数据包直接通过而不对数据包进行处理。如图3所示,NS2模拟报文中含有一个指向网络数据包的指针,用来确定真实报文的具体位置。利用此指针,NS2 仿真器可以对真

2009年1月况晓辉等:网络模拟器NS2中仿真功能的问题分析及改进 Jan., 2009

实网络报文进行丢弃、延迟、重组或复制等操作。非透明模式非常适合在评估网络环境中特定协议的实际运行性能。

模拟报文

报文转换方式

图3 NS2非透明仿真工作模式

1.2 问题分析

通过分析,NS2仿真功能实现(NS2/Emulate)主要存在以下局限:

·仿真节点不支持IP地址格式。当真实网络流量通过绑定Pcap/BPF 网络对象的分接代理转换为模拟报文时,真实网络报文作为模拟报文的载荷;而模拟报文的源、目的地址根据接收报文的节点以及节点间仿真对象的连接设置,采用十进制方式。当报文到达绑定IP 网络对象的分接代理时,模拟报文中的载荷被转换为真实报文发送到实际网络中。而IP地址支持是其他功能扩展的基础。

· 报文转发路径需在脚本中通过建立节点间Tap代理的连接确定,不支持根据报文目的地址的动态路由,因此难以支持多接口设备上网络仿真。同时,造成仿真环境中的延迟和拥塞等特性与真实网络存在较大差别。

·NS2的仿真模块虽然支持ICMP、ARP等多种协议,但是仅支持基本的协议特性。其中,ICMP仅支持ICMP ECHO,不支持ICMP_TIME_EXCEEDED,因此无法实现基于TraceRoute -I的仿真网络拓扑发现,难以验证网络拓扑结构的正确性。

通过以下示例可进一步说明NS2的仿真功能存在的问题。仿真网络中包含n0至n3等四个节点,其连接关系如图4所示。其中,节点n0绑定的分接代理关联的网络对象Network/ Pcap/Live,用于从接口eth0捕获真实网络报文;节点n1绑定的分接代理关联网络对象Network/IP,用于将模拟网络中的载荷转换为真实网络报文,通过eth0接口发送到真实网络中。节点n2和n3分别绑定仿真对象Agent/ PingResponder,用于响应来自真实网络中的ICMP ECHO报文。在tcl脚本中利用simple-connect建立分接代理与协议仿真对象的连接,如图4所示。同时,为使得到达192.168.3.5的报文能够被转发到仿真网络的eth0接口,在脚本中创建ArpAgent对象,并进行相应设置。

在仿真网络中,所有仿真节点均用节点ID标识。虽然NS2也支持层次地址,但是仅支持3层地址,且地址采用固定编址方式。因此,难以从真实网络定位特定的节点。在上图中,节点n2和n3均绑定了PingResponder对象,但是,真实网络中的节点无法根据目的IP地址区分上述节点,即已有实现无法实现多个节点绑定PingResponder对象,并正确响应外部Ping请求。

图4 NS2仿真示例拓扑结构示意图

真实网络报文在仿真网络中的转发路径由代理间连接决定。在图4中,当外部主机向192.168.3.5发送ICMP请求时,节点n0的分接代理将真实报文转换为模拟报文,其转发路径为n0->n2->n3->n1,而后通过n1的分接代理转换为真实网络报文,通过其网络对象Network/IP发送到实际网络中。而在实际的网络中,报文的转发路径通常为n0->n1->n3->n1->n0。当报文转发路径出现差异时,报文的延迟、网络拥塞等特性也将存在误差。

当从外部主机采用traceroute -I 192.168.3.5命令试图发现仿真网络拓扑结构时,仿真网络无法正确响应,仅从n3返回ICMP REPLY报文,中间节点无法正确响应。从而无法支持外部节点的仿真网络拓扑发现功能,难以验证其拓扑结构是否满足实验要求。

2 NS2仿真功能扩展

2.1 扩展功能描述

针对NS2仿真功能存在的局限,本文在IP地址支持、报文转发和ICMP协议支持等方面进行了扩展,实现了以下功能:

· 节点支持点分结构的IP地址格式

· 无需利用connect命令建立agent间的连接,节点可根据报文的目的地址转发报文。

· 支持对内部节点的ping命令,报文的路径与真实网络一致。

· 支持对仿真网络的拓扑发现功能,可通过外部拓扑发现工具验证拓扑结构正确性。

2.2 实现框架

NS2仿真功能扩展实现框架由地址管理模块、报文转发模块以及协议扩展模块三部分组成,各模块扩展的对象如图5所示。其中,地址管理模块通过扩展节点对象、地址分类器对象和PingResponder对象的属性、方法和命令支持,并

2009年1月系统仿真学报 Jan., 2009

修改ns2的tcl库,仅需在脚本中添加以下命令即可初始化

各层次对象的IP地址参数:

set node0 [$ns node "点分结构IP地址"]。

协议扩展模块重点针对ICMP协议进行了完善,重点扩展了PingResponder和IcmpAgent对象属性和方法,修改了其模拟报文处理方法,使得仿真功能扩展支持拓扑结构正确性验证。

报文转发模块修改了NS2中地址分类器、端口分类器和路由表对象,并实现了主机路由表对象和IP地址表对象,实现了根据真实网络报文的目的IP地址和主机路由表的报文转发功能,报文在仿真网络中的路径与真实网络中一致。

报文转发模块

协议扩

展模块

地址管

理模块

图5 NS2仿真功能扩展实现框架

在NS2仿真功能扩展实现中,真实网络报文的转发路径及转换方式如图6所示:

实网络报文图6 NS2仿真功能扩展实现框架报文转发流程

在初始化后,报文在模拟器中至少经过以下十个步骤才能重新进入真实网络:

1. 满足bpf过滤规则的真实网络报文由

Network/Pcap/Live捕获

2. Agent/Tap将捕获的报文转换为模拟报文。在转换过程中,模拟报文的源地址为节点的IP地址,目的地址根据真实报文的目的地址查询扩展的主机路由表获得。当真实网络的目的地址为模拟节点的IP地址时,则直接赋值。否则,利用主机路由表查询获得的相应接口绑定的节点IP设置模拟报文的目的地址。根据脚本设置初始化模拟报头,并将真实网络报文作为模拟报文的载荷。

3. 报文转换完成后,将报文发送给入口分类器处理。入口分类器根据模拟报文的目的地址判断是交给节点的端口分类器处理(步骤4),还是通过链路对象发送给其他仿真节点处理(步骤11)。

4. 当目的IP地址为本节点地址时,端口分类器继续处理报文。若报文端口为16,则将报文转发到PingResponder 对象处理,否则丢弃。(目前仅扩展了ICMP协议支持,16为其固定仿真端口)

5. PingResponder对象从模拟报文中获取真实网络报文,并根据ICMP协议实现处理真实报文,生成响应,并重构模拟报文,其源、目的地址的确定同步骤2。将模拟报文端口设置为18,以便通过TAP对象转发,其余报头参数根据脚本初始化设置。

6. 在完成报文转换后,PingResponder将模拟报文发送给入口分类器处理。

7. 入口分类器根据模拟报文的IP地址转发报文。过程同步骤3。

8. 当模拟报文端口号为18时,端口分类器将报文交给绑定了Network/IP的分接代理对象处理。

9. 分接代理对象根据模拟报头的值修改真实网络报文的报头,特别是其中的ttl值。而后,将真实报文从模拟报文中取出,交给Network/IP对象处理。

10. Network/IP对象将真实报文发送到实际网络中。

11. 在步骤3和步骤7中,若模拟报文的目的地址不是本机IP地址,则通过链路对象转发到其他仿真节点处理。

2009年1月况晓辉等:网络模拟器NS2中仿真功能的问题分析及改进 Jan., 2009

仿真节点处理过程与上述步骤类似。

2.3 实验分析

在实现NS2仿真功能扩展的基础上,我们通过开发的仿真网络图形化生成工具NSE构建了测试网络;在仿真过程中,通过拓扑发现工具对网络拓扑进行了验证,并通过ns2提供的NAM工具对报文的转发流程进行了重现。

NSE是为基于NS2的大规模IP网络仿真环境开发的图形化脚本生成工具。基于NSE提供的功能,使用者能够直观的生成所需的网络拓扑、流量模型,并对各种类型的仿真对象进行配置。同时,NSE可直接支持NS2仿真功能扩展,生成所需的仿真网络。为验证基于NS2仿真功能的正确性,基于NSE生成的测试仿真网络如图7所示:

图7 NSE生成测试仿真网络示意图

在实验过程中,NSE将根据图形化拓扑结构及其配置生成仿真脚本,自动加载到仿真节点上。仿真节点为双网卡PC,其eth0接口的IP地址为192.168.2.1,eth1接口的IP 地址为192.168.3.1。节点n0和n6分别绑定两个分接代理对象,分接代理对象分别绑定bpf和network/IP网络对象。其中n0关联的bpf对象监听接口eth0,n6关联的bpf对象监听接口eth1。仿真网络内部节点n1至n4模拟10.0.0.1/24网络,每个节点均关联一个PingResponder协议仿真对象,用于响应ICMP ECHO请求。节点间的链路均配置为延迟10ms 的双向链路。

加载仿真网络后,通过拓扑发现工具falconet [13]发现的仿真网络拓扑结构,如图8所示:

图8 falconet对仿真网络拓扑发现结果

从图8中可以看出,拓扑发现结果与NSE构造的拓扑结构完全一致。

在仿真网络运行完成后,利用nam [14]加载生成的test. nam文件,观测从外部主机192.168.2.2运行命令ping 10.0.0.4报文转发路径,红色为返回报文,黑色为请求报文,可发现报文在仿真网络中的转发路径分别为n0->n1->n2-> n4->n2->n1->n0。如图9所示:

图9 nam还原仿真过程示意图

通过简单的实验分析,验证了NS2仿真功能扩展在IP 地址绑定、报文路由机制以及ICMP协议扩展等方面的正确性,验证了其拓扑一致性的判定能力。

3 结论

网络仿真环境在网络协议研究、开发和验证,网络安全技术研究和验证等方面具有重要的作用。广泛使用的NS2网络模拟器为网络仿真环境的构建奠定了重要基础。本文重点分析了NS2已有的仿真功能的实现和存在的不足,重点在IP地址支持、报文转发机制和ICMP协议支持等方面对NS2仿真功能进行了扩展,并通过试验验证了仿真功能的正确性和有效性。在后续工作中,我们将对NS2仿真功能的性能进行深入分析,并利用分布计算技术提高仿真环境的扩展性。

参考文献:

[1] Rob Simmonds, Brian W Unger. Towards Scalable Network Emulation

[J]. Computer Communications(S0140-3664), 2003, 26(3): 264-277.

[2] Steffen Maier, Daniel Herrscher, Kurt Rothermel. Experiences with

node virtualization for scalable network emulation [J]. Computer Communications (S0140-3664), 2007, 30(5): 943-956.

[3] Terry Benzel, Bob Braden, D Kim, et al. Experience with DETER: A

Testbed for Security Research [C]// 2nd IEEE Conference on testbeds and Research Infrastructures for the Development of Networks and Communities (TridentCom2006). USA: IEEE, 2006.

[4] Shashikiran B Guruprasad. Issues in Integrated Network Experimentation

Using Simulation and Emulation [D]. USA: The University of Utah, 2005.

[5] Luigi Rizzo. Dummynet: A Simple Approach to the Evaluation of

Network Protocols [J]. ACM SIGCOMM Computer Communication Review (S0146-4833), 1997, 27(1): 31-41.

[6] Mark Carson, Darrin Santay. NIST Net: a Linux-based Network

Emulation Tool [J]. ACM SIGCOMM Computer Communication Review (S0146-4833), 2003, 33(3): 111-126.

[7] Kevin Fall. Network Emulation in the VINT/ns Simulator [C]// 4th

IEEE Symposium on Computers and Communications, July 6-8, 1999 Red Sea, Egypt. USA: IEEE, 1999.

2009年1月系统仿真学报 Jan., 2009

好,Min-Min策略获得较高的任务完成率;各种策略之间的差异性虽然不大,但随着任务数的增加而逐渐显现出来。5 结论

本文主要研究了基于资源预测的网格工艺准备资源预留机制,在分析了资源预测与预留机制研究的必要性后,建立了资源预测模型,提出了一种改进的残差GM(1,1)模型进行资源性能的预测方法,预测结果显示了模型的可行性与精确性;同时研究了基于资源预测的工艺准备资源预留、接纳与响应控制算法,对比仿真实验验证了本算法的可行性与有效性,从而通过该预留机制来提高网格系统的服务质量。参考文献:

[1] 李波,赵东风,沈斌. 支持资源预留的网格计算仿真平台[J]. 系统

仿真学报, 2006, 18(S2): 373-376.

[2] 李波.支持网格资源预留的作业调度算法研究[D]. 武汉:华中科

技大学,2005. [3] 韩耀军. 网格计算资源调度方案及其Petri网建模与分析[J]. 系统

仿真学报, 2006, 18(4): 824-828.

[4] C L Li, L Y Li. QoS based resource scheduling by computational

economy in computational grid [J]. Information Processing Letters (S0020-0190), 2006, 3 (98): 119-126.

[5] V D Martino, M Mililotti. Sub optimal scheduling in a grid using

genetic algorithms [J]. Parallel Computing (S0167-8191), 2004, 5-6

(30): 553-565.

[6] 贡智兵. 基于产品平台的快速设计关键技术研究[D]. 南京:南京

理工大学,2007.

[7] 胡光宇. 战略:预测与决策[M]. 北京: 清华大学出版社, 2004.

[8] 易德生, 郭萍. 灰色理论与方法——提要.题解.程序.应用[M]. 北

京: 石油工业出版社,1992.

[9] 田东, 陈蜀宇, 陈峰. 网格资源提前预留中用户资源需求量预测

模型[J]. 华中科技大学学报, 2006, 34 (SUP.? ): 56-58.

[10] 席洋, 程水源, 郭秀锐, 王海燕. 灰色预测模型在城市需水量预测

中的应用[J]. 环保科技, 2007, 13(1): 25-30.

[11] 胡春明, 怀进鹏, 沃天宇. 一种基于松弛时间的服务网格资源能

力预留机制[J]. 计算机研究与发展

, 2007, 44(1): 20-28.

(上接第420页)

度检测自相关系数中的峰值,并通过求解一个优化问题进行周期提取。由于自相关运算对噪声有自动抑制作用,且引入的峰值检测方法可以有效地找到想要的峰值,所以本文提出的方法对噪声具有很好的鲁棒性。仿真实验表明其在对噪声的鲁棒性、周期提取的精度和稳定性等方面均优于传统的谱窗分析法。

参考文献:

[1] 张科科,傅丹鹰,周峰,和涛. 空间目标可见光相机探测能力理

论计算方法研究[J]. 航天返回与遥感,2006, 12(27): 22-26.

[2] 张军,马君国,朱江,付强.基于RCS序列的空间目标分类识别

方法[J]. 火力与指挥控制,2006, 12(31): 98-104.

[3] 黄小红,姜卫东. 空间目标RCS序列周期性判定与提取[J]. 航天

电子对抗, 2005, 21(2): 29-30..

[4] 彭华峰,陈鲸,张彬. 空间目标在天基光电望远镜中的光度特征

研究[J]. 光电工程,2006,12(33): 9-14.

[5] 刘建斌,吴健. 空间目标的光散射研究[J]. 宇航学报,2006,11(27):

802-805. [6] 姜建国,曹建中,高玉明. 信号与系统分析基础[M]. 北京: 清华

大学出版社, 1994.

[7] 刘建,郑方,吴文虎. 基于幅度差平方和函数的基音周期提取算

法[J]. 清华大学学报(自然科学版),2006,46(1): 74-77.

[8] 杨平利, 王建国, 高有行, 宣春. 卫星运行视景仿真中的姿态控

制研究[J]. 系统仿真学报, 2006, 18(1): 217-220. (Yang Ping-li, Wang Jian-guo, Gao You-xing, Xuan chun. Attitiude Control of satellite in Visual Simulation for Satellite Running [J]. Journal of System Simulation (S1004-731X), 2006, 18(1): 217-220.)

[9] 陈文彤, 刘朝军, 陈曾平. 基于OpenGL的空间目标观测与可视

化仿真[J]. 系统仿真学报, 2007, 19(3): 567-569. (Chen Wen-tong, Liu Chao-jun, Chen Ceng-ping. Visual Simulation of Space- Objects Observation Based on OpenGL [J]. Journal of System Simulation (S1004-731X), 2007, 19(3): 567-569.)

[10] Hai Rong Liu, Longin Jan Latecki, Wen Yu Liu, Xiang Bai. Visual

Curvature [C]// Minneapolis: IEEE Conference on Computer Vision and Pattern Recognition, 2007: 1-8.

[11] Grant H Stokes, Curt von Braun, Ramaswamy Sridharan, David

Harrison, Jayant Sharma. The Space-Based Visible Program [J].

Lincolin Laboratory Journal (S0896-4130), 1998, 11(2): 205-238.

(上接第431页)

[8] Ken Yocum, Kevin Walsh, Amin Vahdat, et al. Scalability and

Accuracy in a Large-Scale Network Emulator [J]. ACM SIGCOMM Computer Communication Review (S0146-4833), 2002, 32(3): 28-38.

[9] Brian White, Jay Lepreau, Leigh Stoller, et al. An Integrated

Experimental Environment for Distributed Systems and Networks [J].

ACM SIGOPS Operating Systems Review (S0163-5980), 2002, 36(SI): 255-270.

[10] Florian Baumgartner, Torsten Braun, Eveline Kurt, et al. Virtual

Routers: A Tool for Networking Research and Education [J]. Computer Communications Review (S0146-4833), 2003, 33(3): 127-135. [11] Brent Chun, David Culler, Timothy Roscoe, et al. Planet Lab: An

Overlay Testbed for Broad-Coverage Services [J]. ACM SIGCOMM Computer Communication Review (S0146-4833), 2003, 33(3): 3-12.

[12] Qifa Ke, David A Maltz, David B Johnson. Wireless and Mobility

Extensions to the ns-2 Network Simulator. CMU Monarch Project [EB/OL]. (2000-11) [2007-5]. https://www.sodocs.net/doc/0c6390975.html,/ cmu-ns.

html

[13] Falconet [EB/OL]. (2006-4) [2007-5]. https://www.sodocs.net/doc/0c6390975.html,/

[14] Tim Buchheim. Nam: Network Animator [EB/OL]. (2002-7) [2007-5].

https://www.sodocs.net/doc/0c6390975.html,/nsnam/nam/

NS2网络仿真实验

NS2网络仿真实验 实验目的: 通过修改NS2的TCP协议代码,来简单的观察窗口阈值的不同算法对网络资源利用率的影响。 实验步骤: 1. 实验环境搭建 (1)系统环境: 虚拟机:virtrulbox; 操作系统:linux/ubuntu 10.04 工作目录:/home/wangtao/workspace/ (2)NS2安装与使用: 下载NS2软件包到工作目录, 地址https://www.sodocs.net/doc/0c6390975.html,/sourceforge/nsnam/ns-allinone-2.33.tar.gz 解压(注:以下斜体字为命令行命令) tar -zxf ns-allinone-2.33.tar.gz cd ns-allinone-2.33 ./install (中间的两个bug已经修改,此处忽略) 耐心等待安装完毕后将出现如下画面说明安装正常: 接下来是系统环境配置,重新进入终端 cd ~ vim .bashrc(如果没有安装vim最好安装一下,sudo apt-get install vim) 在打开的.bashrc的末尾加上以下内容:

PATH="$PATH:/home/wangtao/worksapce/ns-allinone-2.33/bin:/home/wangtao/worksapce/ns-a llinone-2.33/tcl8.4.18/unix" export LD_LIBRARY_PATH="$LD_LIBRARY_PAHT:/home/wangtao/worksapce/ns-allinone-2.33/otcl-1.13,/ home/wangtao/worksapce/ns-allinone-2.33/lib" export TCL_LIBRARY="$TCL_LIBRARY:/home/wangtao/worksapce/ns-allinone-2.33/tcl8.4.18/library" 保存并退出,重新进入终端 安装xgraph sudo apt-get install xgraph 运行一个简单的例子,以证明环境安装完成: ns /home/wangtao/workspace/ ns-allinone-2.33/tcl/ex/simple.tcl 出现如下图说明成功: 2.修改https://www.sodocs.net/doc/0c6390975.html,代码 vim /home/wangtao/workspace/ns-allinone-2.33/tcp/https://www.sodocs.net/doc/0c6390975.html, (将窗口阈值一半变为的窗口阈值1/3——wt_https://www.sodocs.net/doc/0c6390975.html,) 第一处: …… if (cwnd_ < ssthresh_) slowstart = 1; if (precision_reduce_) { //halfwin = windowd() / 2; //wangtao halfwin = windowd() / 3;

NS2网络模拟

网络协议分析与仿真课程设计报告 网络模拟 一、课程设计目的 掌握网络模拟工具NS2的使用,学习基本的网络模拟方法。 二、课程设计内容 协议模拟 工具:NS2,awk,shell,perl等; 要求:掌握NS2网络模拟的基本流程; 内容:NS2网络模拟基本流程 编写TCL脚本,搭建如下图所示的一个网络,共6个节点,其中2、3节点用做ftp服务器和客户端,4、5节点用做cbr流量的源和目的,而0、1节点用做转发设备。各节点间的链路属性见图。 cbr null packet size = 1kbytes, rate=1Mbps 模拟时间设为13秒钟,在0.1秒开始产生cbr流量,在1.0秒开发发送发ftp流量; 8.0秒ftp流量结束,12.0秒cbr流量结束。编写脚本(可用shell,awk,或perl等) 分析模拟日志文件,统计每0.5s内0、1节点间链路通过的分组数以及字节数。 三、设计与实现过程 1.仿真脚本代码与详细注解 #Create a simulator object set ns [new Simulator] #Define different colors for data flows (for NAM) $ns color 1 Blue $ns color 2 Red #Open the NAM trace file set nf [open out.nam w] $ns namtrace-all $nf #Open the Trace file

set tf [open out.tr w] $ns trace-all $tf #Define a 'finish' procedure proc finish {} { global ns nf tf $ns flush-trace close $nf close $tf exec nam out.nam & exit 0 } #Create four nodes set n0 [$ns node] set n1 [$ns node] set n2 [$ns node] set n3 [$ns node] set n4 [$ns node] set n5 [$ns node] #Create links between the nodes $ns duplex-link $n0 $n2 1.5Mb 10ms DropTail $ns duplex-link $n0 $n4 1.5Mb 10ms DropTail $ns duplex-link $n0 $n1 2Mb 20ms DropTail $ns duplex-link $n1 $n3 1.5Mb 10ms DropTail $ns duplex-link $n1 $n5 1.5Mb 10ms DropTail #Set Queue Size of link (n2-n3) to 10 $ns queue-limit $n0 $n1 10 #Setup a TCP connection set tcp [new Agent/TCP] $ns attach-agent $n2 $tcp set sink [new Agent/TCPSink] $ns attach-agent $n3 $sink $ns connect $tcp $sink $tcp set fid_ 1 #Setup a UDP connection set udp [new Agent/UDP] $ns attach-agent $n4 $udp set null [new Agent/Null] $ns attach-agent $n5 $null

基于NS2的无线传感器网络软件仿真实验

目录 ●课程设计目的 ●课程设计内容 ●课程设计实验原理 ?WSN路由协议 ?WSN MAC层协议 ?修改的路由协议 ●课程设计小组分工 ●课程设计实验流程 ●课程设计实验结果分析 ●课程设计心得体会 ●课程设计总结 ●参考文献 ●源代码

一、课程设计目的 无线传感器网络是物联网的基本组成部分,是物联网用来感知和识别周围环境的信息生成和采集系统,传感器网络对信息处理来说如同人体的感觉突触一样重要。为了方便感知和部署并提高网络的可扩展性,传感器网络一般采用无线通信方式,从而形成了节点之间可自组织拓扑结构的无线传感器网络。本课程设计的目的综合应用学生所学知识,建立系统和完整的传感器网络概念,理解和巩固无线传感器网络基本理论、原理和方法,掌握无线传感器网络开发的基本技能。 二、课程设计内容 软件仿真实验。 要求使用相关软件仿真一个无线传感器网络,要求如下: ●自行参考相关资料,成功安装NS2(或OPNET也可以); ●利用NS2自带的范例,构建一个100个节点的无线传感器网络, 能够成功运行;最好能有界面显示; ●利用利用NS2自带的范例或其它已有脚本,仿真上述无线传感器 网络一种路由协议(例如一种多播路由协议); ●利用利用NS2自带的范例或其它已有脚本,仿真上述无线传感器 网络采用一种MAC协议; ●修改或自行编写一个简单路由协议或MAC协议,并进行仿真运 行。

三、课程设计实验原理 a)WSN路由协议 传统计算机网络对路由协议要求如下:正确性,健壮性,稳定性,公平性,最优性。除此之外,无线传感器网络对路由协议更注重以下特殊要求:能源有效性,简单性,多路性。无线传感器网络是以数据为中心(Data Centric)进行路由的,不同于传统Ad hoc网络以地址为中心(Address Centric)进行路由的模式。由于传感器最基本任务就是感知、采集数据,无线传感器网络邻近节点间采集的数据必然具有相似性,存在冗余信息,需经数据融合(Data Fusion)处理再进行路由。有研究表明,在分布密度为ρ(x, y)的随机区域,传感器间冗余数据为:η=ζSeρ。直接传输这些未经处理、存在冗余的数据,将会造成网络带宽、节点能源的巨大浪费,导致节点迅速死亡,缩短整个网路的生命周期。 无线传感器网络中的大部分节点不像传统Ad hoc网络中的节点一样快速移动,因此没有必要花费很大的代价频繁地更新路由表信息。常规路由协议通常认为底层的通信信道是双向的,但是在采用无线通信的无线传感器网络环境中,由于发射功率或地理位置等因素的影响,可能存在单向信道。它给常规路由协议带来三个严重的影响:认知单向性、路由单向性和汇点不可达。

网络模拟器NS2中仿真功能的问题分析及改进

第21卷第2期 系 统 仿 真 学 报? V ol. 21 No. 2 2009年1月 Journal of System Simulation Jan., 2009 网络模拟器NS2中仿真功能的问题分析及改进 况晓辉1, 赵 刚1,2, 郭 勇1, 3 (1.北京系统工程研究所, 北京 100101; 2.清华大学计算机科学与技术系, 北京 100084; 3.国防科技大学信息系统与管理学院, 长沙 410073) 摘 要:网络仿真技术为解决大规模网络规划、应用和协议设计面临的挑战提供了新的途径。作为广泛应用的网络模拟器,NS2为建立可扩展的网络仿真环境奠定了重要基础。在描述NS2仿真功能实现的基础上,重点分析了NS2仿真功能存在的不足。针对发现的问题,提出并实现了NS2仿真功能扩展,最后验证了仿真功能扩展的正确性。 关键词:网络仿真;NS2;报文转换;功能扩展 中图分类号:TP393 文献标识码:A 文章编号:1004-731X (2009) 02-0427-05 Improvement of Emulation Function in Network Simulator KUANG Xiao-hui 1, ZHAO Gang 1,2, GUO Yong 1, 3 (1. Beijing Institute of System and Engineering, Beijing 100101, China; 2. Department of Computer Science and Technology, Tsinghua University, Beijing 100084, China; 3. Department of Information System and Management of NUDT, Changsha 410073, China) Abstract: Network emulate technology which enables real hosts and a real network to interact with a virtual network, becomes a very important way to resolve the challenge faced in network plan, application and protocol design. As a famous network simulator, NS2 proposed a foundation to construct network emulate platform. The emulation function of NS2 was described firstly. Based on analysis the problem of emulation function in NS2, the extension of NS2 emulation function was proposed and implemented. The correctness of extension was dominated in the end. Key words: network emulation; NS2; packet reform; function extension 引 言互联网的迅速发展与膨胀对网络的规划、应用和协议的 设计提出了新的挑战。在试验环境中对网络规划、新的应用和协议进行评估是应对上述挑战的有效手段之一[1-3]。当前构建复杂网络试验环境的实现技术主要包括测试床、网络模拟(network simulation )和网络仿真(network emulation )[4]等三种类型。 测试床具有逼真度高的优点,但是造价较高、规模和复杂性有限。网络模拟具有可控性强、灵活性高、代价低以及能够实现复杂网络拓扑等优点,但是对于网络流量以及实现细节支持不够,交互性不高。网络仿真综合了测试床和网络模拟的优点。在仿真环境中,网络应用运行在实际的硬件平台上,且能够与实际的环境交互,扩展性和灵活性较高,同时网络试验环境可配置、可控制、可重复,能够生成真实网络流量,从而成为当前构建网络试验环境的重要技术。当前网络仿真技术研究思路分为两种:一种思路是将仿真网络看作简单的延迟黑盒(simple delay lines ),仅关注网络出入口的设置,该思路具有硬件要求低的优点。相关研究包括:Dummynet [5],NIST net [6]等。另一种思路是通过建立虚拟网络模拟进行实时网络仿真。真实网络流量能够通过仿真 收稿日期:2007-06-10 修回日期:2008-02-09 作者简介:况晓辉(1975-), 男, 湖南新化, 博士, 副研究员, 研究方向为计算机网络, 信息安全;赵刚(1969-), 男, 河北保定, 研究员, 研究方向为计算机网络, 信息安全; 郭勇(1966-), 男, 湖南常德, 研究员, 研究方向为计算机网络, 计算机软件。 器,虚拟网络能够根据交互生成网络流量。相关的研究包括VINT/nse [7],ModelNet [8],NetBed [9], Virtual Routers [10],PlanetLab [11]以及IP-TNE [1]等。 随着网络复杂性的提高,基于延迟黑盒的网络仿真环境难以满足应用需求。因此,建立在网络模拟基础上的仿真环境成为网络仿真技术的研究重点。在网络模拟器实现中,NS2 [12]能够支持有线和无线、本地或卫星、局域网和广域网等各种网络类型以及网络分层模型,具有强大的二次开发能力以及可扩展、易配置和编程的事件驱动特性,为构建网络仿真平台提供了良好基础。然而,NS2已有的仿真功能在IP 地址支持、路由机制、协议支持等方面存在不足,难以满足网络技术研究和协议设计开发的实际需求。 本文在深入分析NS2仿真功能的基础上,重点分析了已有功能存在的不足,描述并实现了NS2仿真功能扩展,解决了IP 地址支持、动态路由以及拓扑验证的问题。最后,通过试验验证了仿真功能的正确性和有效性。 1 NS2网络仿真功能分析 事件驱动的网络模拟器NS2是DARPA 支持的VINT 项目中的核心部分,由Berkeley, USC/ISI 、 LBL 和Xerox PARC 等大学和实验室合作开发,其目的是构造虚拟的网络平台和模拟工具,以支持网络协议的研究、设计和开发。 1.1 仿真功能 NS2仿真模块实现了模拟器与实际网络的连接功能,

NS2实验报告

NS2实验报告 一、实验平台和环境 本实验是在Windows XP操作系统平台下安装了Cygwin软件以模仿Linux 下的编程环境,然后在Cygwin模仿的环境中安装了ns-allinone-2.34软件包,该软件包包含nam、otcl、tcl、tclcl、tk以及xgraph等软件包和辅助分析工具。 二、实验步骤 2.1 安装与配置 1.安装cygwin a)在cygwin官方网站下载setup.exe。 b)运行setup.exe,使用默认配置选择unix安装。 c)在选择安装组件时确认安装以下内容:XFree86-base, XFree86-bin, XFree86-prog,XFree86-lib, XFree86-etc,make,patch,perl,gcc,gcc-g++, gawk,gnuplot,tar 和gzip。 Diffstat,diffutils,libXmu,libXmu-devel,libXmu6,libXmuu1, X-startup-scripts xorg-x11-base xorg-x11-bin xorg-x11-devel xorg-x11-bin-dlls xorg-x11-bin-lndir xorg-x11-etc xorg-x11-fenc xorg-x11-fnts xorg-x11-libs-data xorg-x11-xwin 2.安装NS2 a)在NS2官方网站下载ns2-allinone-2.34.tar.gz安装包。 b)将ns2-allinone-2.34.tar.gz拷贝放入cygwin用户目录下。 c)运行cygwin,命令行下输入tar xvfz ns2-allinone-2.34.tar.gz。 d)进入ns2-allinone-2.34目录,执行./install开始安装。

基于NS2的UDP仿真报告

基于NS2的UDP协议仿真 1. UDP协议的特点 UDP 是OSI 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。UDP 协议基本上是IP协议与上层协议的接口。UDP协议适用端口分别运行在同一台设备上的多个应用程序。UDP协议并不提供数据传送的保证机制。如果在从发送方到接收方的传递过程中出现数据报的丢失,协议本身并不能做出任何检测或提示。UDP协议称为不可靠的传输协议。 UDP报头由4个域组成,其中每个域各占用2个字节,具体如表1所示: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1819 20 21 22 23 24 25 26 27 28 29 30 31 源端口目的端口 段长校验和 表1 UDP报头结构 UDP协议使用端口号为不同的应用保留其各自的数据传输通道。数据发送一方(可以是客户端或服务器端)将UDP数据报通过源端口发送出去,而数据接收一方则通过目标端口接收数据。UDP协议使用报头中的校验值来保证数据的安全。校验值首先在数据发送方通过特殊的算法计算得出,在传递到接收方之后,还需要再重新计算。如果某个数据报在传输过程中被第三方篡改或者由于线路噪音等原因受到损坏,发送和接收方的校验计算值将不会相符,由此UDP协议可以检测是否出错。 2. NS2软件的安装与配置 2.1 ubuntu实验环境 Ubuntu是Linux的一个版本,是一款免费的操作系统,Ubuntu 项目完全遵从开源软件开发的原则;用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。这是其他的操作系统所做不到的。NS2在linux环境下运行比在windows下更稳定,出现更少的错误,还可以更改linux内核,使得仿真效果更好。 2.2 软件安装 NS2可以再Linux平台下运行,因此一般需要安装Linux操作系统。也可以采用Windows+虚拟机(VMware,Virtual PC)+NS组合的方式。 若要在Ubuntu上运行NS2,下面的软件是在安装和使用NS2中需要用到的,必须先行安装。

NS2仿真实验报告

Ns2简单有线网络仿真实验报告 一、实验概述 1、在windows系统下安装Centos虚拟机 2、在Centos系统下安装NS2仿真工具包 3、Nam方式示例 二、实验内容 1)NS2仿真工具包安装说明 1.在Centos系统下设置root账户 2.解压NS2文件 3.安装ns-allinone-2.35 设置环境变量 4.验证NS2工具包安装情况 2)Nam方式 Otcl脚本 # 产生一个仿真的对象 set ns [new Simulator] #针对不同的资料流定义不同的颜色,这是要给NAM用的 $ns color 1 Green $ns color 2 Red #开启一个NAM trace file set nf [open out.nam w] $ns namtrace-all $nf #开启一个trace file,用来记录封包传送的过程 set nd [open out.tr w] $ns trace-all $nd #定义一个结束的程序 proc finish {} { global ns nf nd $ns flush-trace close $nf close $nd #以背景执行的方式去执行NAM exec nam out.nam & exit 0 } #产生6个网络节点 set n0 [$ns node] set n1 [$ns node] set n2 [$ns node] set n3 [$ns node]

set n4 [$ns node] set n5 [$ns node] #把节点连接起来 $ns duplex-link $n0 $n2 2Mb 10ms DropTail $ns duplex-link $n1 $n2 2Mb 10ms DropTail $ns duplex-link $n2 $n3 1.7Mb 20ms DropTail $ns duplex-link $n3 $n4 1.7Mb 30ms DropTail $ns duplex-link $n3 $n5 1.5Mb 30ms DropTail #设定ns2到n3之间的Queue Size为10个封包大小$ns queue-limit $n2 $n3 10 $ns queue-limit $n3 $n4 5 #$ns queue-limit $n3 $n5 10 #设定节点的位置,这是要给NAM用的 $ns duplex-link-op $n0 $n2 orient right-down $ns duplex-link-op $n1 $n2 orient right-up $ns duplex-link-op $n2 $n3 orient right $ns duplex-link-op $n3 $n4 orient right-up $ns duplex-link-op $n3 $n5 orient right-down #观测n2到n3之间queue的变化,这是要给NAM用的$ns duplex-link-op $n2 $n3 queuePos 0.5 #建立一条n0-n5TCP的联机 set tcp [new Agent/TCP] $ns attach-agent $n0 $tcp set sink [new Agent/TCPSink] $ns attach-agent $n5 $sink $ns connect $tcp $sink #在NAM中,TCP的联机会以Green表示 $tcp set fid_ 1 #在TCP联机之上建立FTP应用程序 set ftp [new Application/FTP] $ftp attach-agent $tcp $ftp set type_ FTP #建立一条UDP的联机 set udp [new Agent/UDP] $ns attach-agent $n1 $udp set null [new Agent/Null] $ns attach-agent $n3 $null $ns connect $udp $null #在NAM中,UDP的联机会以红色表示 $udp set fid_ 2 #在UDP联机之上建立CBR应用程序 set cbr [new Application/Traffic/CBR] $cbr attach-agent $udp

(完整word版)NS2网络仿真实验

移动自组织网络 实 验 报 告 NS2网络仿真实验 何云瑞 13120073 电信研1301班

1.实验目的和要求 1.学会NS2的安装过程,并熟悉NS2的环境; 2.观察并解释NAM动画,分析Trace文档。 3.学会用awk和gnuplot分析吞吐量、封包延迟、抖动率和封包丢失率。2.实验环境 先在PC上安装VMware虚拟机,再在虚拟机上安装Ubuntu系统,最后再Ubuntu系统上安装NS2软件,本次实验采用的是NS-2.34版本。 3.基本概念 3.1 NS2简介 NS2是一款开放源代码的网络模拟软件,最初由UC Berkeley开发。它是一种面向对象的网络模拟器,它本质上是一个离散事件模拟器,其本身有一个模拟时钟,所有的模拟都由离散事件驱动。其采用了分裂对象模型的开发机制,采用C++和OTcl两种语言进行开发。它们之间采用TclCL进行自动连接和映射。考虑效率和操作便利等因素,NS2将数据通道和控制通道的实现相分离。为了减少封包和事件的处理时间,事件调度器和数据通道上的基本网络组件对象都使用C++编写,这些对象通过TclCL映射对OTcl解释器可见。 目前,NS2可以用于模拟各种不同的通信网络,它功能强大,模块丰富,已经实现的主要模块有:网络传输协议,如TCP和UDP;业务源流量产生器,如FTP、Telnet、CBR、Web和VBR;路由队列管理机制,如Droptail、RED和CBQ;路由算法;以及无线网络WLAN、移动IP和卫星通信网络等模块。也为进行局域网的模拟实现了多播协议以及一些MAC子层协议。 3.2 NS2的功能模块 NS2仿真器封装了许多功能模块,最基本的是节点、链路、代理、数据包格式等,下面对各个模块进行简单的介绍: (1)事件调度器:目前NS2提供了四种具有不同数据结构的调度器,分别是链表、堆、日历表和实时调度器。

网络性能的仿真+ns2

实验一:网络性能的仿真 一、实验要求 1)对64个计算机结点,每个计算机采用若干100Mbps集线器(HUB)的 方式连接到一台服务器上。采用NS2仿真软件,对于以上的具体环节进 行网络性能的仿真,给出网络的吞吐量,丢包率,总时延,抖动率等参 数的仿真曲线,并对结果进行分析。 2)将以上环境中的集线器(HUB)换成交换机(switch),给出网络的信道 利用率,吞吐量,传输时延,排队延迟等参数的仿真曲线,并对结果进 行分析。 二、实验目的 通过本次实验的完成,首先能够学会在Ubuntu环境下安装搭建NS2运行的环境。其次对于tcl语言有了更加全面的了解。通过对具体环境的网络环境进行仿真,可以加深对网络的信道利用率,吞吐量,传输时延,排队延迟等参数的计算及了解。最后通过仿真环境中集线器(HUB)和交换机(Switch)之间的仿真的区别,加深对HUB和交换机之间差别的理解。 三、实验原理 1、NS2( Network Simulator version 2),NS(Network Simulator)是一种针对网络技术的源代码公开的,免费的软件模拟平台。计算机网络是一个相当复杂的系统,包含了各种通信协议和网络技术,而网络仿真是网路通信技术研究的重要手段之一,网络仿真是指采用计算机软件对网络协议,网络拓扑,网络性能进行模拟分析的一种研究手段。NS2是一种面向对象的网络仿真器,本质是一个离散事件模拟器,它可以仿真各种不同的IP网,实现一些网络传输协议,比如TCP和UDP,还包括业务源流量产生器,比如FTP,CBR等。NS2使用C++和Otcl作为开发语言。NS可以说是Otcl的脚本解释器,它包含仿真事件调度器、网络组件对象库以及网络构建模型库等。NS是用Otcl和C++编写的。由于效率的原因,NS将数据通道和控制通道的实现相分离。为了减少分组和事件的处理时间,事件调度器和数据通道上的基本网络组件对象都使用C++写出并编译的,这些对象通过映射对Otcl解释器可见。当仿真完成以后,NS将会产生一个或多个基于文本的跟踪文件。只要在Tcl脚本中加入一些简单的语句,这些文件中就

NS2仿真实例汇总

NS-2仿真模拟实例汇总 (以方路平的书为主) 1.例4.5a:DropTail队列管理的NS_2模拟实例(P161) set ns [new Simulator] set nf [open out.nam w] $ns namtrace-all $nf set tf [open out.tr w] set windowVsTime [open win w] set param [open parameters w] $ns trace-all $tf proc finish {} { global ns nf tf $ns flush-trace close $nf close $tf exec nam out.nam & exit 0 } set n2 [$ns node] set n3 [$ns node] $ns duplex-link $n2 $n3 0.7Mb 20ms DropTail set NumbSrc 3 set Duration 50 for {set j 1} {$j <=$NumbSrc} {incr j} { set S($j) [$ns node] } set rng [new RNG] $rng seed 2 set RVstart [new RandomVariable/Uniform] $RVstart set min_ 0 $RVstart set max_ 7 $RVstart use-rng $rng for {set i 1} {$i <=$NumbSrc} {incr i} { set startT($i) [expr [$RVstart value]]

浅析Opnet,Ns2,Matlab网络仿真工具

浅析Opnet,Ns2,Matlab网络仿真工具 【摘要】网络仿真可以有效提高网络规划和设计的可靠性和准确性,明显地降低网络投资风险,减少不必要的投资浪费。本文就常见的三种网络仿真工具(OPNET、NS2及MATLAB),从它们的基本情况及特点进行了分析。 【关键字】网络仿真;OPNET;NS2;MATLAB 引言 随着网络结构和规模越来越复杂化以及网络的应用越来越多样化,单纯地依靠经验进行网络的规划和设计、网络设备的研发以及网络协议的开发,已经不能适应网络的发展,因而急需一种科学的手段来反映和预测网络的性能,网络仿真技术应运而生。网络仿真可以有效提高网络规划和设计的可靠性和准确性,明显地降低网络投资风险,减少不必要的投资浪费。各种网络仿真工具在此背景下应运而生。本文就常见的三种网络仿真工具(OPNET、NS2及MATLAB),从它们的基本情况及特点进行了分析。 基本情况及特点分析 1.OPNET OPNET公司最初只有一种产品OPNET Modeler,到目前已经拥有Modeler、ITGuru、SPGuru、WDMGuru、ODK等一系列产品。 对于网络的设计和管理,一般分为3个阶段:第1阶段为设计阶段,包括网络拓扑结构的设计,协议的设计和配置以及网络中设备的设计和选择;第2阶段为发布阶段,设计出的网络能够具有一定性能,如吞吐率、响应时间等等;第3阶段为实际运营中的故障诊断、排错和升级优化。而OPNET公司的整个产品线正好能面向网络研发的不同阶段,即可以作网络的设计,也可以作为发布网络性能的依据,还可以作为已投入运营的网络的优化和故障诊断工具。OPNET公司也是当前业界智能化网络管理分析解决方案的主要提供商。 OPNET的主要特点: 层次化的网络模型。使用无限嵌套的子网来建立复杂的网络拓扑结构。 简单明了的建模方法。Modeler建模过程分为3个层次:过程(process)层次、节点(Node)层次以及网络(Network)层次。在过程层次模拟单个对象的行为,在节点层次中将其互连成设备,在网络层次中将这些设备互连组成网络。几个不同的网络场景组成“项目”,用以比较不同的设计方案。这也是Modeler建模的重要机制,这种机制有利于项目的管理和分工。

ns2使用及实验报告级计算机网络实验

高级计算机网络实验 吴德云 SC11011042- SC11011042-吴德云一、实验目的 学生能够初步掌握NS2网络模拟平台,并且能够利用网络模拟平台进行简单的实验,加深对TCP拥塞控制与流量控制机制的理解,并且能够为实验需要简单修改NS2的核心模块。 二、实验要求 1、了解NS2基本原理。 2、熟悉Tcl和Otcl脚本语言。 3、熟悉分裂对象模型和Tcl。 4、熟悉NS的基本模块。 5、按照《NS2安装与使用.doc》的操作流程搭好实验必需的环境。 6、本次实验室的核心是,按照预设改变修改NS2核心模块(即C++代码),并用利用NS2模拟出修改后的效果。 三、实验过程 1、安装NS2 点击https://www.sodocs.net/doc/0c6390975.html,/sourceforge/nsnam/ns-allinone-2.33.tar.gz下载。下载的版本是有问题的,源文件有两个bug。 1、选择解压缩位置 本演示实验在当前用户下新建PROGRAM目录:

图2:解压缩位置 2、解压缩 鼠标右击软件包选择解压缩到此处: 图3:解压缩 3、在终端安装 (1)打开一个终端(位置:应用程序>系统工具>终端): 在终端里输入sudo-i,回车;按提示输入密码,回车,进入root权限操作:

图4:进入root权限 (2)下载并安装下一步安装ns-2.33时所必需要的系统包: 首先,在终端里输入apt-get install build-essential进行下载、安装,这一步是为了gcc and some essential的安装; 接着,在终端里输入apt-get install tcl8.4tcl8.4-dev tk8.4tk8.4-dev进行下载、安装,这一步是为了tcl and tk的安装;(注意4个名字中间用空格隔开)最后,在终端里输入apt-get install libxmu-dev进行下载、安装,这一步是为了nam的安装。 以上三步示意图如下:

NS2仿真实验分析报告

NS2仿真实验分析报告 一引言 1 NS2简介 NS2是一款开放源代码的网络模拟软件,最初由UC Berkeley开发。它是一种向象的网络模拟器,它本质上是一个离散事件模拟器,其本身有一个模拟时钟,所有的模拟都由离散事件驱动。其采用了分裂对象模型的开发机制,采用C++和OTcl两种语言进行开发。它们之间采用Tclcl 进行自动连接和映射。考虑效率和操作便利等因素,NS2将数据通道和控制通道的实现相分离。为了减少分组和事件的处理时间,事件调度器和数据通道上的基本网络组件对象都使用C++编写,这些对象通过Tclcl映射对OTcl解释器可见。 目前NS2可以用于模拟各种不同的通信网络,它功能强大,模块丰富,已经实现的主要模块有:网络传输协议,如TCP和UDP;业务源流量产生器,如FTP、Telnet、CBR、We b和VBR;路由队列管理机制,如DropTail、RED和CBQ;路由算法;以及无线网络WLAN、移动IP和卫星通信网络等模块,也为进行局域网的模拟实现了多播协议以及一些MAC子层协议。 2 基本概念 (1)RED:随机早期探测(Random Early Detect,RED)。RED属于主动队列管(Active Queue Management, AQW),是目前常见的TCP上防止拥塞的手段。它通过以一定概率丢失或标记报文来通知端系统网络的拥塞情况。RED使用平均队列长度度量网络的拥塞程度,然后以线性方式将拥塞信息反馈给端系统。RED使用最小阈值,最大阈值和最大概率等几个参数。 RED的基本思想是通过监控路由器输出端口队列的平均长度来探测拥塞,一旦发现拥塞逼近,就随机地选择连接来通知拥塞,使它们在队列溢出导致丢包之前减少拥塞窗口,降低发送数据速度,缓解网络拥塞。RED配置在路由器监视网络流量以便避免拥塞,当拥塞即将发生时,它随机丢弃进来的分组,而不是等到队列缓冲区满是才开始丢弃所有进来的分组,这样可以最少化全局同步的发生。当拥塞发生时,RED丢弃每个连接分组的概率与该连接占用的带宽成比例,它监视每个输出队列的平均队列长度,随机选择分组丢弃。 (2)丢包率:是一个比率,表示在单位时间内未收到的数据分组数与发送的数据分组数的比率,由于信号衰减、网络质量等诸多因素的影响,可能产生数据分组的丢失。 (3)端到端时延:是由各种因素引起的,包括打包和解包时延,以及网络传送时延,本文中主要讨论的是网络传输时延。

ns2通信网仿真作业2

《通信网仿真与ns仿真器》作业报告学院:计算机学院班级:10班姓名:张晓磊学号:1011041036 专业:计算机软件与理论 几种排队机模型的性能分析与仿真 1.研究背景介绍 排队的现象,存在于当今世界一切经济之中,如果没有更好的办法配置时间资源.排队就可能是最公平的解决办法。但是长期以来,人们在服务大厅里办理各项服务业务时,排队等候人数过多,前拥后挤的排队等候,有时排队在一小时以上甚至更久,极大的不方便办理业务的顾客。而排队机系统的出现极大地改善了服务质量,解决了劳累的排队现象,很好地解决客户在办理业务中所遇到的排队、等候、拥挤和混乱等现象,真正创造舒适、公平、友好的等候环境而提供的服务终端。 基于排队机系统的应用背景,本课题主要研究几种应用于排队机系统的排队机模型,分别是M/M/1计算模型、M/D/1计算模型、D/D/1计算模型,与此同时分别对它们的性能进行分析,最后对3种计算模型在NS2仿真器的辅助下,编写仿真程序进行仿真,来更直观地了解3种计算模型的性能。 2.几种典型的排队机模型性能分析 2.1 排队系统的基本组成 一般的排队系统都有三个基本组成部分:(1)输入过程;(2)排队规则;(3)服务机构。 (1)输入过程:输入即指顾客到达排队系统,可能有下列各种不同情况,当然这些情况并不是彼此排斥的。 顾客的总体(称为顾客源)的组成可能是有限的,也可能是无限的。 顾客到来的方式可能是一个一个的,也可能是成批的。 顾客相继到达的间隔时间可以是确定型的,也可以是随机型的。 顾客的到达可以是相互独立的。就是说,以前的到达情况对以后顾客的到来没有影响,否则就是有关联的。 输入过程可以是平稳的,或称对时间是齐次的,是指描述相继到达的间隔时间分布和所含参数(如期望,方差)都是与时间无关的,否则称为非平稳的。 (2)排队规则:顾客到达时,如所有服务台都正被占用,在这种情形下顾客可以随即离去,也可以排队等候。前者称为即时制或损失制,排队等候的称为等待制。等待制可以采用先到先服务规则;后到先服务规则;随机服务规则;有优先权规则。 (3)服务机构:(A)服务机构可以没有服务台(服务员),也可以有一个或多个。 (B)在有多个服务台的情形中,它们可以是平行排列、先后排列和混 合排列。

网络分析与测试实验2_使用NS2模拟有线网络

网络分析与测试实验 XXX XXXXXXXX 网络工程2010-2班 实验二使用NS2模拟有线网络 一、实验目的 深入学习NS2的使用方法,学习使用NS2模拟有线网络的开发方法。二、实验内容 (1)构建有线网络的基本拓扑; (2)配置网络节点、链路和协议的参数; (3)使用Tcl脚本语言描述配置信息; (4)实现有线网络的模拟,分析不同配置下的输出结果。 三、实验步骤 1.构建有线网络的基本拓扑 2. 这个网络拓扑定义了6个节点,每个节点之间的连接设置成双工格式,在0,1节点设置两个UDP发送节点,在4,5节点设置两个agent 接收节点,设置传送的数据包大小为1500,然后再在UDP连接中定义一个数据流量发送器(包括它的包的大小、速率大小、停止时间和开始时间),最后定义一个finish函数来完成清理现场的工作,进而完成网络节点、链路和协议的参数的配置。

3.tcl的源程序: set val(stop) 5.0 ;# time of simulation end #Create a ns simulator set ns [new Simulator] #Open the NS trace file set tracefile [open out.tr w] $ns trace-all $tracefile #Open the NAM trace file set namfile [open out.nam w] $ns namtrace-all $namfile #Create 6 nodes set n0 [$ns node] set n1 [$ns node] set n2 [$ns node] set n3 [$ns node] set n4 [$ns node] set n5 [$ns node] #Createlinks between nodes $ns duplex-link $n0 $n2 2.0Mb 10ms DropTail $ns queue-limit $n0 $n2 10 $ns duplex-link $n1 $n2 2.0Mb 10ms DropTail $ns queue-limit $n1 $n2 10 $ns duplex-link $n4 $n3 2.0Mb 10ms DropTail $ns queue-limit $n4 $n3 10 $ns duplex-link $n3 $n2 1.0Mb 20ms DropTail $ns queue-limit $n3 $n2 10 $ns duplex-link $n3 $n5 2.0Mb 10ms DropTail $ns queue-limit $n3 $n5 10 #Give node position (for NAM) $ns duplex-link-op $n0 $n2 orient right-down $ns duplex-link-op $n1 $n2 orient right-up $ns duplex-link-op $n4 $n3 orient left-down $ns duplex-link-op $n3 $n2 orient left $ns duplex-link-op $n3 $n5 orient right-down #Setup a UDP connection set udp0 [new Agent/UDP] $ns attach-agent $n0 $udp0 set null2 [new Agent/Null]

ns2模拟仿真

实验内容 S1到r之间,以及s2到r之间的带宽为2Mbps,传递时延10ms,r到d之间带宽1.7Mbps,传递时延20m 1 在NS2中建立UDP联机,学习如何将模拟过程输出到文件,通过工具进行分析 2 测量以UDP为传输协议的应用程序的吞吐量(Throughput)、封包延迟(Packet Delay)、抖动率(Packet Jitter)和封包丢失率(Packet Loss Rate); 实验目的 1 熟悉ns2的使用 2 会将模拟过程输出到文件 3 会测量以UDP为传输协议的应用程序的吞吐量(Throughput)、封包延迟(Packet Delay)、抖动率(Packet Jitter)和封包丢失率(Packet Loss Rate); 实验步骤: 1 通过.tcl脚本,是模拟过程输出文件 如下tcl文件: set ns [new Simulator] $ns color 0 blue $ns color 1 red set n0 [$ns node] set n1 [$ns node] set n2 [$ns node] set n3 [$ns node] set f [open out.tr w] $ns trace-all $f set nf [open out.nam w] $ns namtrace-all $nf $ns duplex-link $n0 $n2 2Mb 10ms DropTail $ns duplex-link $n1 $n2 2Mb 10ms DropTail $ns duplex-link $n2 $n3 1.7Mb 20ms DropTail

相关主题