当前位置:文档之家› 基于NS2下的DSR路由协议的研究与优化(具体仿真代码步骤)

基于NS2下的DSR路由协议的研究与优化(具体仿真代码步骤)

基于NS2下的DSR路由协议的研究与优化

基于NS2下的DSR路由协议的研究与

优化

李志斌陶然

摘要:Ad Hoc网络是当前无线通信领域一种新的、发展迅速的通信技术,由于它不依赖固定的基础通信设施,没有中心控制节点,抗毁性强,因此适用于许多网络布线存在困难的环境。基于这些特殊优势,Ad hoc网络在军事领域中发挥着重要作用,在民用领域也有着很好的应用前景。DSR 协议是专为Ad hoc 网络设计的一种按需路由控制协议,它以简单有效、网络开销小、算法复杂度不高、支持单向链路等优点而受到广泛的关注,被认为是最有实用前景的Ad hoc 网络路由协议之一。

NS2( Network Simulator Version 2),是UC Berkeley开发的一个离散事件驱动的事件模拟器。它能模拟Ad Hoc网络路由协议运行的全过程,并把仿真结果输出到一个trace文件中。通过对trace文件的分析,可以了解到Ad Hoc网络路由协议运行的状况,从而分析评价路由协议的性能好坏。

本文首先介绍Ad Hoc网络的基本概念、关键技术和路由协议。其次,对DSR协议的概念、特点及工作原理给予详细的介绍和分析。然后在NS2网络仿真模拟平台下建立无线网络模型,以AODV作对比,对DSR和AODV协议仿真模拟,分析评价DSR路由协议性能。仿真结果表明,同AODV对比,DSR在快速变化的网络拓扑结构中更具优势。最后文章对DSR协议的优化改进作总结。

关键词:Ad hoc,DSR 协议,优化,网络仿真,NS2

The research and optimization of DSR route protocol based on NS2

LI Zhi-bin ,TAO Ran

Abstract:Ad Hoc network is a new technique in wireless communication field which develops rapidly in recent years. As it does not depend on fixed network infrastructure, and has no central controlling node as well as good in resisting destructions, it is applicable to many situations that have difficulties in wiring networks. Based on these special advantages, Ad hoc plays an important part in military applications, and it also has a good prospect in civil applications. DSR protocol is an on-demand routing protocol that is specifically designed for Ad hoc. It attracts widely attention because of its advantages such as its simplicity, low network overhead, low algorithm complexity, supporting unidirectional routes and

so on. So DSR protocol will probably play an important role in future Ad hoc application.

NS2 (Network Simulator Version 2), developed by UC Berkeley, is a simulator driven by discrete events. It can simulate a routing protocol operation process of Ad Hoc network, and export simulation results to a trace file. From the trace file, we can know the operation process of routing protocol, then analyze and evaluate the performance of routing protocol.

This paper, first of all, introduces the basic concept, key technologies and routing protocols of Ad Hoc Network. Secondly, for the concept, feature and

working principle of DSR,the paper gives a detailed introduction and analysis. Then, to evaluate the performance of DSR and AODV, we established a simulation platform of wireless network model based on the NS2。The simulator results show that compared with AODV, DSR performs better in the network with dynamic topology. At last, the paper analyzes the improvement and makes a summary of DSR.

Key words:Ad Hoc,DSR protocol,Optimization,Network simulation,NS2

基于NS2下的DSR路由协议的研究与优化

目录

第一章绪论 (1)

1.1 Ad hoc网络 (1)

1.1.1 Ad hoc网络的产生与发展 (1)

1.1.2 Ad hoc网络的特点 (2)

1.1.3 Ad hoc网络的应用领域 (3)

1.2 Ad Hoc研究的问题和技术挑战 (4)

1.2.1进行相关研究的主要大学和组织 (4)

1.2.2研究问题和技术挑战 (5)

1.3 Ad hoc网络路由协议 (7)

1.3.1表驱动路由协议 (8)

1.3.2按需驱动路由协议 (10)

1.4论文研究的内容和任务 (12)

1.4.1研究内容 (12)

1.4.1主要任务 (12)

1.5本章小结 (13)

第二章DSR协议 (16)

2.1 DSR协议概述 (16)

2.2 DSR协议分组格式 (16)

2.3 DSR协议的运行机制 (17)

2.3.1 DSR协议的路由发现机制 (17)

2.3.1 DSR协议的路由维护机制 (20)

2.4 DSR协议的优缺点分析 (21)

2.5 DSR协议的优化途径 (23)

2.5.1缓存cache 管理优化 (23)

2.5.2路由建立过程中捎带数据分组的优化 (23)

2.5.3路由请求分组的跳数限制 (24)

2.5.4路径自动缩短 (24)

2.5.5随机延迟 (25)

2.5.6无确认路由修复 (25)

2.5.7混合侦听 (25)

2.5.8抢修 (25)

2.6本章小结 (26)

第三章DSR 协议的仿真及性能分析 (28)

3.1网络仿真工具NS2 (28)

3.1.1 NS2简介 (28)

3.1.2 NS2的安装步骤 (28)

3.2 Ad hoc网络路由协议在NS2中的实现 (31)

3.3 NS2网络基本模拟流程 (33)

3.4NS2下DSR代码分析 (35)

3.5 DSR和AODV协议仿真比较 (38)

3.5.1仿真过程 (38)

3.5.2分析比较 (47)

3.5.3 仿真结论 (54)

3.5DSR协议优化方法 (55)

3.7本章小结 (57)

第四章总结与展望 (58)

参考文献 (60)

第一章绪论

1.1 Ad hoc网络

1.1.1 Ad hoc网络的产生与发展

我们经常提及的移动通信网络一般都是有中心的,要基于预设的网络设施才能运行。例如,蜂窝移动通信系统要有基站的支持;无线局域网一般也工作在有AP接入点和有线骨干网的模式下。但对于有些特殊场合来说,有中心的移动网络并不能胜任。比如,战场上部队快速展开和推进,地震或水灾后的营救等。这些场合的通信不能依赖于任何预设的网络设施,而需要一种能够临时快速自动组网的移动网络。Ad hoc网络可以满足这样的要求。

Ad hoc网络的前身是分组无线网(Packet Radio Network)。对分组无线网的研究源于军事通信的需要,并已经持续了近20年。早在1972年,美国DARPA (Defense Advanced Research Project Agency)就启动了分组无线网(PRNET,Packet Radio NETwork)项目,研究分组无线网在战场环境下数据通信中的应用。项目完成之后,DAPRA又在1993年启动了高残存性自适应网络(SURAN,SURvivable Adaptive Network)项目。研究如何将prnet的成果加以扩展,以支持更大规模的网络,还要开发能够适应战场快速变化环境下的自适应网络协议。1994年,DARPA又启动了全球移动信息系统(GloMo,Globle Mobile Information Systems)项目。在分组无线网已有成果的基础上对能够满足军事应用需要的、可快速展开、高抗毁性的移动信息系统进行全面深入的研究,并一直持续至今。1991年成立的IEEE802.11标准委员会采用了“Ad hoc 网络”一词来描述这种特殊的对等式无线移动网络。

在Ad hoc网络中,结点具有报文转发能力,结点间的通信可能要经过多个中间结点的转发,即经过多跳(MultiHop),这是Ad hoc网络与其他移动网

络的最根本区别。结点通过分层的网络协议和分布式算法相互协调,实现了网络的自动组织和运行。因此它也被称为多跳无线网(MultiHop Wireless Network)、自组织网络(SelfOrganized Network)或无固定设施的网络(Infrastructureless Network)。

1.1.2 Ad hoc网络的特点

Ad hoc网络是一种特殊的无线移动网络。网络中所有结点的地位平等,无需设置任何的中心控制结点。网络中的结点不仅具有普通移动终端所需的功能,而且具有报文转发能力。与普通的移动网络和固定网络相比,它具有以下特点:

(1)无中心

Ad hoc网络没有严格的控制中心。所有结点的地位平等,即是一个对等式网络。结点可以随时加入和离开网络。任何结点的故障不会影响整个网络的运行,具有很强的抗毁性。

(2)自组织

网络的布设或展开无需依赖于任何预设的网络设施。结点通过分层协议和分布式算法协调各自的行为,结点开机后就可以快速、自动地组成一个独立的网络。

(3)多跳路由

当结点要与其覆盖范围之外的结点进行通信时,需要中间结点的多跳转发。与固定网络的多跳不同,Ad hoc网络中的多跳路由是由普通的网络结点完成的,而不是由专用的路由设备(如路由器)完成的。

(4)动态拓扑

Ad hoc网络是一个动态的网络。网络结点可以随处移动,也可以随时开机和关机,这些都会使网络的拓扑结构随时发生变化。这些特点使得Ad hoc网

络在体系结构、网络组织、协议设计等方面都与普通的蜂窝移动通信网络和固定通信网络有着显著的区别。

1.1.3 Ad hoc网络的应用领域

由于Ad hoc网络的特殊性,它的应用领域与普通的通信网络有着显著的区别。它适合被用于无法或不便预先铺设网络设施的场合、需快速自动组网的场合等。针对Ad hoc网络的研究是因军事应用而发起的。因此,军事应用仍是Ad hoc网络的主要应用领域,但是民用方面,Ad hoc网络也有非常广泛的应用前景。

它的应用场合主要有以下几类:

(1)军事应用

军事应用是Ad hoc网络技术的主要应用领域。因其特有的无需架设网络设施、可快速展开、抗毁性强等特点,它是数字人战场通信的首选技术。Ad hoc 网络技术已经成为美军战术互联网的核心技术。美军的近期数字电台和无线互联网控制器等主要通信装备都使用了Ad hoc网络技术。

(2)传感器网络

传感器网络是Ad hoc网络技术的另一大应用领域。对于很多应用场合来说传感器网络只能使用无线通信技术。而考虑到体积和节能等因素,传感器的发射功率不可能很大。使用Ad hoc网络实现多跳通信是非常实用的解决方法。分散在各处的传感器组成Ad hoc网络,可以实现传感器之间和与控制中心之间的通信。这在爆炸残留物检测等领域具有非常广阔的应用前景。

(3)紧急和临时场合

在发生了地震、水灾、强热带风暴或遭受其他灾难打击后,固定的通信网络设施(如有线通信网络、蜂窝移动通信网络的基站等网络设施、卫星通信地球站以及微波接力站等)可能被全部摧毁或无法正常工作,对于抢险救灾来说,

这时就需要Ad hoc网络这种不依赖任何固定网络设施又能快速布设的自组织网络技术。类似地,处于边远或偏僻野外地区时,同样无法依赖固定或预设的网络设施进行通信。Ad hoc网络技术的独立组网能力和自组织特点,是这些场合通信的最佳选择。

(4)个人通信

个人局域网(PAN,Personal Area Network)是Ad hoc网络技术的另一应用领域。不仅可用于实现PDA、手机、手提电脑等个人电子通信设备之间的通信,还可用于个人局域网之间的多跳通信。蓝牙技术中的超网(Scatternet)就是一个典型的例子。

(5)与移动通信系统的结合

Ad hoc网络还可以与蜂窝移动通信系统相结合,利用移动台的多跳转发能力扩大蜂窝移动通信系统的覆盖范围、均衡相邻小区的业务、提高小区边缘的数据速率等。在实际应用中,Ad hoc网络除了可以单独组网实现局部的通信外,它还可以作为末端子网通过接入点接入其他的固定或移动通信网络,与Ad hoc网络以外的主机进行通信。因此,Ad hoc网络也可以作为各种通信网络的无线接入手段之一。

1.2 Ad Hoc研究的问题和技术挑战

1.2.1进行相关研究的主要大学和组织

无线Ad Hoc网络的诸多优良特性,使其在军事及民用领域都有着广阔的发展前景。目前Ad Hoc技术是无线通信领域的一门热门技术,国际上有许多研究机构致力于研究适用于具体应用的Ad Hoc无线网络技术,这些机构包括: 美国加州大学洛杉矶分校的“Wireless Adaptive Mobility Lab”;

美国加州大学圣克鲁兹分校的“The Computer Communications

Research Group”;

美国康奈尔大学的“Wireless Networks Laboratory”;

美国伊利诺斯大学Urbana-Champaign分校的“Wireless Networking Group of Coordinated Science Laboratory”和“Multimedia

Operating Systems and Networking Group”;

美国加州大学圣巴巴拉分校的“The Mobility Management and Networking Lab”;

Internet工程任务组(IETF)也成立专门的研究小组MANET(Mobile Ad Hoc Networks)工作组,负责Ad Hoc网络路由协议的标准化工作。

随着Ad Hoc网络技术不断发展,目前已有一些产品面市,例如: 由NCR公司生产的Ad Hoc设备在商场内利用RFID技术很容易地找到某种商品和价格;

在日本的Nankoku市已经使用Wireless Mesh连接了13个小学、4个中学和18个市政建筑;

美国的MeshNetworks公司开发出的无线硬件和智能路由软件,可以构建Wireless Mesh网络支持诸如手机和笔记本等移动终端自由接入或

退出网络。

国内对Ad Hoc网络的研究起步较晚,研究机构主要是高校和研究所,如解放军理工大学、清华大学、北京交通大学、西安电子科技大学等,目前的研究还处于理论和技术跟踪分析的初级阶段,成果主要集中在路由协议和MAC协议的研究上。

1.2.2研究问题和技术挑战

由于Ad Hoc网络无中心、自组织、动态拓扑等特殊性,传统固定网络和移动通信网中使用的各种协议和技术无法直接应用于Ad Hoc网络中,因此需

要为Ad Hoc网络设计专门的协议和技术。目前Ad Hoc网络研究所面临的主要问题和技术挑战包括:MAC协议、路由协议、安全问题和功率控制等。

(1)MAC协议

MAC协议是Ad Hoc网络协议的重要组成部分,是分组在无线信道上发送和接收的主要控制者。Ad Hoc网络采用多跳共享的多点信道,当一个节点发送分组时,只有在它覆盖服务内的节点才能收到。这种共享广播信道的方式,导致Ad Hoc网络存在隐藏终端、暴露终端和入侵终端等问题。

(2)路由协议

Ad Hoc网络的特殊性使得路由协议的设计面临着非常艰巨的技术挑战。从无线信道带宽窄的角度来看,路由协议在节点间交互的信息应尽量少,以减小路由协议的开销,提高信道的效率;而从网络拓扑的角度来看,节点的移动、无线信道的不规则性、发射功率的变化等特点,使得无线自组网的拓扑变化比较频繁,为了能够尽快、尽可能精确地反映网络拓扑的变化,就需要更加频繁地在节点间交互控制报文。这本身就是一对矛盾。因此,设计一个在所有情况下都普遍适用的Ad Hoc网络路由协议基本上是不太可能的。

目前,针对Ad Hoc网络已提出了许多路由协议。这些路由协议从不同的角度对无线多跳路由问题进行分析和研究,对某一个或几个指标进行优化,以适用于不同的应用环境。主要包括以下几方面:可靠性、可扩展性、QoS路由、组播路由、网络互联、定位辅助等。

(3)安全问题

Ad Hoc网络是通过移动节点间的相互协作保持网络互联,它不具备传统网络的安全策略。如传统网络拥有专门的路由器、专门的密钥管理中心和分发公用密钥的目录服务机构来管理加密、认证、访问、控制、权限管理和防火墙等。因此Ad Hoc网络比一般的网络更容易受到安全方面的攻击。目前已经提出的

安全策略有:基于密码的认证协议、“复活鸭子”的安全模式、异步的分布式密钥管理等。

(4)功率控制

Ad Hoc网络的多跳转发特性使得节点以较小的功率就可以实现网络在较大范围内的覆盖,通过节点的功率控制来提高信道的空间复用度,同时减小对邻近节点的干扰,达到增加网络容量的目的。此外,Ad Hoc网络中的大多数节点是以电池供电,因此需要进行功率控制,来减少网络的能量消耗,延长网络的寿命。

1.3 Ad hoc网络路由协议

Ad hoc网络中,路由协议的主要作用是监控网络拓扑结构变化,交换路由信息,产生、选择和维护路由,并根据选择的路由转发数据,以提供网络的连通性。然而,由于终端的移动性、网络拓扑结构的可变性、传输的多跳性、无线信道的不可靠性、网络资源的有限性等众多移动自组网特性,使得 Ad hoc 网络路由协议的研究面临着巨大挑战。因此,路由协议成为Ad hoc网络研究的焦点问题之一。

传统路由协议,如RIP(Routing Information Protocol)协议和OSPF(Open Shortest Path First)协议,都是针对拓扑结构固定的有线网络设计的,并不适用于拓扑结构动态、随机变化的移动自组网,因此必须设计适合Ad hoc 网络环境特点的新的路由协议。多年来,研究者们已提出数十种 Ad hoc 路由协议方案。可从不同角度对这些协议进行分类:根据路由发现策略的不同,可将其分为表驱动路由(Table Driven Protocols)、按需驱动路由(On-Demand Driven Protocols)和混和路由;根据网络拓扑结构的差异,可将其分为平面结构路由(Flat Protocols)和分簇路由(Clustered Protocols);根据是否使用 GPS(Global Position System)系统作为路由辅助条件,可将其分为地理定

位辅助路由和无地理定位辅助路由。

1.3.1表驱动路由协议

表驱动路由(又称先验路由、主动路由)继承了传统的路由算法,但在消除路由环路和已过时路由等方面进行了适应于自组网特性的改进。传统有线网络的经典路由算法包括链路状态协议和距离矢量两种。链路状态协议中每个节点都要保存整个网络的拓扑信息以及每条链路的开销,为了使所有节点中保存的路由保持一致,每个节点必须周期性地广播其与周围邻居节点的路由信息,其它节点在收到这些信息时更新网络拓扑,以最短路径算法来计算到达目的节点的下一跳节点。然而,某些节点保存的路由可能因为传播的延迟等原因与实际网络中的状态不一致,这时就可能会在网络中生成路由环路。距离矢量算法也会导致路由环路的生成。路由环路问题在无线环境下表现地更为明显,所以继承传统路由协议的表驱动路由协议需在此方面进行了改进。

表驱动路由协议中无论路由是否被用到,每个节点都要进行周期性地路由信息交换以维护路由表。表驱动路由协议的优点是在有信息传送时不需要等待建立路由,源节点一旦要发送报文,可以立即获得到达目的节点的路由。而其在无需通信节点之间的路由维护则浪费了大量的网络带宽。常见的表驱动路由协议有DSDV、HSR、GSR、WRP和FSR等。

DSDV(Destination-Sequenced Distance-Vector Routing)协议通过修改RIP协议而得到,它基于Bellman-Ford算法。DSDV在每条路由信息中加人由目的节点产生的序列号,以避免路由环。

在DSDV协议中,每个节点周期性地广播它当前的路由表(路由信息包括对应于每个目的节点的距离及最大序列号,还包含发送者自身的序列号,每广播一次就自动加1)。每个收到该广播报文的节点将报文中的对应各目的节点的序列号与自身路由表中相应表项比较,如果报文中的序列号较高,则更新自己

的路由表,将发送者指定为下一跳,并将距离增加一跳。在序列号相等但是报文中路由距离更小的情况下,节点也要更新自己的路由表。

当一个节点发现链路失效时,它将所有通过该节点转发的路由的距离设为无穷并将其序列号加1。由于更新了序列号,因此这一消息会传播到整个网络。这样所有这些目的路由指向的目的节点都有效地与此节点断开,直到有新的序列号产生并包含新的路由信息。

HSR(Hierarchical State Routing)是一种用于分级网络的路由协议,高级节点保存它所有子孙节点的位置信息,沿从最高级的根节点到最低级的叶节点的路径为节点分配逻辑序列地址,可以用序列地址进行节点寻址。

GSR(Global State Routing)协议的工作原理与DSDV协议类似,在该算法中,每个节点维护邻居列表、拓扑表、下一跳节点表和距离表。邻居列表记录所有能侦听到该节点信息的节点列表。对于每个目标节点,拓扑表记录链路状态信息和该信息的时间戳(timestamp),下一跳节点表记录分组转发的下一跳节点,而距离表则记录到达目的节点的最短路径。当链路的状态发生变化时,通过比较报文与本地拓扑表中的目的节点路由序列号大小,决定网络拓扑表的修改,若拓扑表发生变化则广播给其它节点。

GSR协议中,较长的路由修改报文会浪费相当大的网络带宽,针对这一缺陷,FSR(Fisheye State Routing)对GSR进行了修改,FSR的路由信息报文中并不包含所有节点的信息,因此可大大缩短报文的大小。与中心节点的距离越近,信息交换越频繁,每个节点都可获得其邻近节点准确详尽的信息;而随着与中心节点距离的加大,交换频率开始减小,超过节点的鱼眼范围时,信息的准确性降低,但并不影响路由的正确选择。通过这种算法,可大大降低路由修改信息对网络的负荷。这种算法的拓扑组织结构像鱼的眼睛,所以称之为FSR。

WRP(Wireless Routing Protocol) 是一种距离向量路由算法,每个节点维

护距离表、路由表、链路开销表和信息重传列表。信息重传节点列表记录信息更新报文中需要传送的信息序列以及需要对该信息更新报文作出确认的节点列表。节点周期性或者在链路状态改变的情况下交换路由表,信息更新报文中反馈节点列表中的节点需要确认其接收。如果从上次广播更新报文后节点没有新的路由信息需广播,则其需发送HELLO报文,以确认节点之间的连通性。如果节点没有发送HELLO信息,则认为节点的链路信息无效。当节点收到来自邻居节点的信息更新报文后,修改自身的距离表依据该报文寻找更好的路由。如果某个移动节点收到了新节点的HELLO信息,则把新节点信息填入路由表,并且把它自己的路由表发给新节点。

1.3.2按需驱动路由协议

与表驱动路由相反,源始发的按需驱动路由(又称反应路由)认为在动态变化的自组网环境中,没有必要维护去往其它所有节点的路由。按需驱动路由因其更适合自组网特性,近些年来更被关注。按需路由一般分为路由建立和路由维护两个过程。它仅在需要给目的节点发送报文而又没有去往目的节点路由的时候才按需进行路由发现。因此,路由表是按需建立的,它可能仅仅是整个拓扑结构信息的一部分。它的优点是不需要周期性的路由信息广播,节省了一定的网络资源。缺点是发送数据分组时,如果没有去往目的节点的路由,数据分组需要等待因路由发现引起的延时,不适合于实时性要求高的应用。

常用的按需驱动路由协议有DSR、AODV、TORA和LAR等。本文将在第二章重点介绍DSR路由协议,下面简单介绍AODV、TORA和LAR等按需路由协议。

AODV(Ad hoc On demand Distance Vector Routing)协议是在DSDV协议的基础上结合类似DSR中按需驱动的思想而提出的。它与DSR协议的不同之处在于报头并不携带路由信息,中继节点依据自身的路由表逐跳转发。因为在AODV协议中,各节点隐式地将路由请求和路由应答分组中的路由信息保存于自

身的路由表中,而DSR却将完整地路由信息显示地保存在分组中。AODV基于双向路径的假设,不支持单向路径。

TORA(temporarily-ordered routing algorithm)协议是在有向无环图DAG(directed acyclic graphic)算法的基础上提出的一种按需驱动路由协议。它分为路由发现,路由维护,路由消除三个过程。TORA协议与其它按需驱动路由协议一样,首先在网中发送路由请求分组,但是在路由应答部分,则采用了DAG算法。其主要思想是:对于某一目标节点,网络中每个节点都保留了相对于它的“势能”。势能可以通过从目标节点的反向广播来获得。离目标节点越远的节点,势能越高,目标节点势能最低。在数据传播过程中,数据包会从高势能的节点向低势能的节点转发,最终流向目标节点。当局部链路发生变化时,只需要局部势能的调整,这种改变一般不会影响到全局。TORA协议的主要特点是控制报文定位在最靠近拓扑变化的一小部分节点处,因此节点只保留邻近点的路由信息。该算法中路由不一定是最优的,常常使用次优路由以减少发现路由的开销。

LAR(location aided routing)协议是一种依据节点物理位置信息而获得路由信息的算法。LAR协议从GPS获得位置信息,且每个节点需知道其它节点的平均运动速度。在路由请求分组中携带寻径范围信息,寻径范围依据位置信息和节点平均运动速度而得到。这样,只有在寻径范围内的节点才转发路由请求分组。当源节点在当前寻径范围内寻径失败时,它将扩大寻径范围。LAR 协议的优点是在小范围内寻径,减少了寻径开销;缺点是依赖GPS提供的位置信息,限制了其应用范围。

1.4论文研究的内容和任务

1.4.1研究内容

由于组网快速、灵活、使用方便,Ad Hoc网络得到了国际学术界和工业界的普遍关注,正在得到越来越广泛的应用,已经成为移动通信技术向前发展的一个重要方向,并将在未来的通信技术领域中占据重要地位。Ad Hoc网络无中心、自组织、多跳、动态拓扑网络结构的特殊性,使得传统的网络协议和技术不能直接应用于Ad Hoc网络,而需要进行专门的设计。如何迅速准确地选择到达目的节点的路由,是Ad Hoc网络一个重要和核心的问题,也是Ad Hoc网络研究的热点和难点之一。

DSR协议是最早采用按需路由思想的路由协议,它包括路由发现和路由维护两个关键过程。DSR协议路由建立反应快,开销较小,保证路由无环路,支持多路径的特点使得它适合用于快速变化的动态拓扑网络中。

NS2(Network Simulator Version 2),是UC Berkerly开发的一个离散事件驱动的事件模拟器。它能模拟Ad Hoc网络路由协议运行的全过程,并把仿真结果输出到一个trace文件中。通过对trace文件的分析,可以了解到Ad Hoc 网络路由协议运行的状况,从而分析评价路由协议的性能好坏。

本文将研究Ad Hoc网络路由技术,重点研究DSR路由协议的工作原理本及其优缺点。然后在NS2网络仿真模拟平台下建立无线网络模型,以AODV 作对比,对DSR和AODV协议仿真模拟,分析评价DSR路由协议性能。最后对DSR协议的优化改进作总结。

1.4.1主要任务

1、了解Ad Hoc网络的基本概念、发展现状、特点、关键技术及其应用场合;

2、学习和掌握Ad Hoc网络路由协议的概念、分类及其评价指标,了解DSDV、AODV等协议的概念、工作原理及特点;

3、学习NS2网络仿真软件的基本原理,掌握路由协议在NS2中的实现机制,掌握利用NS2进行路由算法仿真的基本步骤;

4、深入分析和研究DSR路由协议,理解其概念和关键技术,掌握其路由实现的两个重要过程:路由发现和路由维护,并分析其源代码,掌握DSR源码的基本流程。

5、了解NS2网络仿真软件的基本概念,掌握其使用方法。在NS2下建立无线仿真模型,对DSR和AODV两种协议进行仿真,对仿真结果进行分析,评价两种协议的性能指标(如时延、投递率、路由效率等)

1.5本章小结

第一章对Ad Hoc网络进行简单的介绍,包括Ad Hoc网络的产生、定义、特点、应用场合、技术挑战、路由协议以及本文的研究内容和任务等;

第二章详细介绍动态源路由协议DSR,包括其概念、工作原理和特点等;

第三章首先对网络仿真软件NS2进行简单介绍,包括NS2概述,Ad Hoc 网络路由协议在NS2中的实现流程,以及NS2网络模拟的基本流程。然后将对DSR源代码进行分析讲解,最后对DSR协议和AODV协议进行仿真比较,并分析两者的性能。

第四章对DSR协议的改进方法进行分析,并总结全文,展望未来。

第二章DSR协议

2.1 DSR协议概述

动态源路由协议(DSR, Dynamic Source Routing)是一种按需路由协议,它允许节点动态地发现到达目的节点的多跳路由。所谓源路由,是指在每个数据分组的头部携带有在到达目的节点之前所有分组必须经过的节点的列表,即分组中含有到达目的节点的完整路由。在DSR中,不用周期性地广播路由控制信息,DSR路由协议中的所有状态都是“软状态”,任何状态的丢失都不会影响DSR路由协议的正确操作,因为所有状态都是按需建立的,所有状态在丢失之后如果仍然需要的话则能够很容易得到迅速恢复,这样就能减少网络的带宽开销,节约电池能量消耗,避免移动Ad Hoc网络中大范围的路由更新。

2.2 DSR协议分组格式

DSR协议使用三种基本的控制分组,分别是路由请求(RREQ,Route Requests)、路由应答(RREP,Route Replies)和路由错误(RERR,Route Errors)分组。

1、路由请求分组

Sid Did Route record Request id

图2.1 路由请求分组格式

Sid:源节点ID号;

Did:目的节点ID号;

Route record:路由记录,记录从源节点到目的节点所经过的路由(节点序列);Request id:路由请求ID,有源路由设置。

2、路由应答分组

Did Date Route Reply Route

NS2开发模块和tcl调试

分类:网络模拟器(NS2)2013-07-04 13:20 183人阅读评论(4) 收藏举报NS2 最近,自己在做ns2的开发,主要就是为了科研啦,其他基本上不会涉及这个网络仿真平台。废话不多说了,开始介绍这个NS2开发平台的搭建: 1、安装JDK。JDK的版本找个最新的就可以了,安装是采用默认目录,安装好配置下环境变量:path,classpath。这一步基本没什么问题的; 2、需要安装netbeans。建议选择一个完整版的,其中包含了C++开发的插件。安装过程中依据向导选择就好了,最后都能完成安装的; 3、安装cygwin。这里我采用了一个完整版的cygwin,读者可以根据自己需要采用各自的版本,不受限制的,只要第4步的NS2能安装上即可。有关cygwin的安装请参考柯志恒的网站(在google中输入ns2就能找到,一般在第二个),这里就不细讲了。 4、安装NS2。这一步很多时候会存在问题,有关安装的问题可以参考NS2的官网,在此不再赘述。 5、建立一个NS2项目,这是关键,前面的平台搭建好了,该怎么开发NS2项目呢?接下来细细道来: 首先,打开“文件”——>“新建项目”,选择类别中的“C/C++”,在右边项目选框中选择“基于现有源代码的C/C++项目”,点击下一步; 其次,点击“浏览”按钮,选择ns-2.xx所在的位置,点击确定。其他部分保持默认,单击完成,此时就已经创建了已有源码的项目了,需要编译一段时间,耐心等待。 6、编译完成之后,就可以在已有的NS2项目中建立或修改项目了。如果是建立项目,则建议在ns-2.xx下建立一个自己的项目文件夹,然后将写的C++或脚本放入其中;如果是修改原项目,则不需要了。 7、建立或修改完项目后,需需要进行“生成”或“清除并生成”,前一个只编译修改过的文件,后一个则先清除已有编译文件,并重新全部编译。建议前一种。 8、如果建立的项目没问题,则可编写脚本进行仿真了。如果有问题则需要进行错误调试。 还有一个,读者可能会问了tcl-debug是干嘛的呢?接下来就介绍下它的安装和使用。 tcl-debug-2.0.rar 1、tcl-debug的安装是在ns-2.xx安装好了才安装的,安装过程很简单,见附件中tcl-debug的安装说明; 2、安装完成后,就可以调试tcl脚本了。调试过程如下: 首先,在脚本中的Simulator实例之后加入:debug 1 其次,跟平常一样运行脚本,此时可以看到是以调试的方式运行的。可以借助tcl-debug的调试命令进行调试了。 附:tcl安装说明和调试 1、下载 tcl-debug-2.0;将下载的rar包拷贝到与ns-2.xx平行的目录下,并解压

NS2网络仿真实验

NS2网络仿真实验 实验目的: 通过修改NS2的TCP协议代码,来简单的观察窗口阈值的不同算法对网络资源利用率的影响。 实验步骤: 1. 实验环境搭建 (1)系统环境: 虚拟机:virtrulbox; 操作系统:linux/ubuntu 10.04 工作目录:/home/wangtao/workspace/ (2)NS2安装与使用: 下载NS2软件包到工作目录, 地址https://www.doczj.com/doc/cb17486677.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.doczj.com/doc/cb17486677.html,代码 vim /home/wangtao/workspace/ns-allinone-2.33/tcp/https://www.doczj.com/doc/cb17486677.html, (将窗口阈值一半变为的窗口阈值1/3——wt_https://www.doczj.com/doc/cb17486677.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

ubuntu11.04下成功安装ns2-2.34

Ubuntu 11.04 安装 ns2-allinone-2.34【完整版】(附各种问题解决方案) 这真是一个痛苦并快乐到过程,尝试多次安装,最终迎来来伟大的复兴!终于安装成功了!!!++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 经验:先将本文提到的错误在./INSTALL之前全部改正后可减少出错机会 1.首先,修改更新源,原有的更新源无法完成更新。 以下是ubuntu 11.04 教育网的源: sudo gedit /etc/apt/sources.list #网易资源 deb https://www.doczj.com/doc/cb17486677.html,/ubuntu/ natty main restricted universe multiverse deb https://www.doczj.com/doc/cb17486677.html,/ubuntu/ natty-security main restricted universe multiverse deb https://www.doczj.com/doc/cb17486677.html,/ubuntu/ natty-updates main restricted universe multiverse deb https://www.doczj.com/doc/cb17486677.html,/ubuntu/ natty-proposed main restricted universe multiverse deb https://www.doczj.com/doc/cb17486677.html,/ubuntu/ natty-backports main restricted universe multiverse deb-src https://www.doczj.com/doc/cb17486677.html,/ubuntu/ natty main restricted universe multiverse deb-src https://www.doczj.com/doc/cb17486677.html,/ubuntu/ natty-security main restricted universe multiverse deb-src https://www.doczj.com/doc/cb17486677.html,/ubuntu/ natty-updates main restricted universe multiverse deb-src https://www.doczj.com/doc/cb17486677.html,/ubuntu/ natty-proposed main restricted universe multiverse deb-src https://www.doczj.com/doc/cb17486677.html,/ubuntu/ natty-backports main restricted universe multiverse 2、更新Ubuntu系统文件,虽然系统是最新版本的,但是不代表里面的文件都是最新的,需要更新。 使用快捷键Alt + F2,得到程序查找窗口,输入gnome termina,打开Ubuntu的终端,里面依次输入命令 sudo apt-get update sudo apt-get upgrade sudo apt-get dist-upgrade 即可。这里首次采用sudo时,需要用户密码,也就是安装ubuntu时设置的。 3、为了更好的安装ns2,还需要进行一些package的安装,打开终端,输入 sudo apt-get install build-essential sudo apt-get install tcl8.4 tcl8.4-dev tk8.4 tk8.4-dev sudo apt-get install libxmu-dev libxmu-headers 4、在https://www.doczj.com/doc/cb17486677.html,/projects/nsnam/files/上可以下载到ns-allinone-2.34.tar.gz,(或者在国内CSDN下载:

基于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安装过程

cygwin + NS2 2.28 安装过程 先去https://www.doczj.com/doc/cb17486677.html,/setup.exe 下载setup.exe,运行,得到这个界面: 我的版本 点下一步,出现这个界面: 选择“Install from Internet”,当然,如果本地已经下载了你所需要的package,也可以选“Install from Local Directory”

接下来选择安装位置: 我的是E:\cygwin 可以自己选择一个目录安装。现在(10/13/05)的cygwin版本跟NTFS完全兼容,所以不用担心,可以放心的把它装在NTFS分区。至于Test File Type,建议最好设成unix,虽然我没试过用dos格式,但是鉴于OpenSource的软件原本都是linux/unix下的,所以最好还是用unix 继续下一步 我的是D:\ns2 选择一个保存package的地方,我们要用到的package大小大概是100M。当然,如果选择的是Install From Local Directory,那么这一步就会变成“指定package所在的位置” 下一步

指定代理服务器。教育网内的机器是没办法直接上国外网的,所以要指定代理。最该死的是它的 mirror list放在国外,所以即使你知道一个国内的ftp地址(可以下载package的地址,比如ftp://https://www.doczj.com/doc/cb17486677.html,/cygwin),你也得指定代理服务器,要不然你就没办法获得mirror list,安装就进行不下去。清华校内的话,除实验室之外推荐使用代理,强烈建议不要直接连国外,要知道国际流量可是1元/MB,安装一次就需要60RMB! 下一步 可以随便选择一个 选择镜像站点。cygwin有很多镜像站点(但是上面列的都是国外的),可以选择其中一个下载package。也可以自己指定一个站点。比如,如果要用ftp://https://www.doczj.com/doc/cb17486677.html,/cygwin,可以在User URL中填这个地址,然后点add,就能将这个地址加到上面的镜像列表中,然后可以选择这个镜像进行安装。

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

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]]

(完整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脚本中加入一些简单的语句,这些文件中就

Vmware10+Ubuntu10.0.4下ns2-allinone-2.34安装方法

Vmware10+Ubuntu10.0.4下ns2-allinone-2.34安装方法 2014-3-28 以下的安装经过本人验证,完全成功! 首先下载到ns-allinone-2.34.tar.gz,这个网上到处都是。 然后开始在终端里输入命令,获取ns2需要的相关软件: sudo apt-get install build-essential sudo apt-get install tcl8.4 tcl8.4-dev tk8.4 tk8.4-dev sudo apt-get install libxmu-dev libxmu-headers sudo apt-get install xorg-dev g++ xgraph sudo apt-get install g++-4.4 =============================== 然后解压ns-allinone-2.34.tar.gz,放到你指定的目录。 检查你的gcc版本,如果gcc版本大于4.0(大部分人的都是,建议直接改),要在执行./install之前作出一些修改。 gcc4.0版本以前是用ld-share来生成共享库的,但是到了4.0以上的版本,这个命令改为了gcc-share。 修改命令如下: cdns-allinone-2.34/otcl-1.13 sudogedit configure.in 把77行处的 SHLIB_LD="ld-shared" 改为 SHLIB_LD="gcc-shared" 保存退出,然后 sudogedit configure 把6304行(Ctrl+i跳到6304行)的 SHLIB_LD="ld-shared" 改为 SHLIB_LD="gcc-shared" 保存退出,然后 cdns-allinone-2.34 #到安装目录 sudo./install #开始安装 如果没有更改直接安装,就会出现这样的错误: ld: libotcl.so: hidden symbol `__stack_chk_fail_local' isn't defined ld: final link failed: Bad value make: *** [libotcl.so] Error 1 这只是有可能出现的第一个错误,接下来还有更多的错误等着你!(所以要整理出这么一份东西来。。。)

浅析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建模的重要机制,这种机制有利于项目的管理和分工。

相关主题
文本预览
相关文档 最新文档