NS2开发模块和tcl调试
ns2的基本功能和用法。
ns2的基本功能和用法。
NS2是一款广泛使用的离散事件网络仿真器,它可以用来模拟网络协议、网络拓扑结构、传输层协议等各种网络方面的问题。
在本文中,我们将会详细介绍NS2的基本功能和用法,让您了解如何使用这个强大的工具来开展网络仿真和探索。
第一部分:NS2的简介NS2全称Network Simulator 2,是一款免费且开源的网络仿真平台,它可以运行于Linux和Windows操作系统。
NS2是C++编写的,它是由一个模块化的体系结构构建而成的。
NS2可以帮助你模拟和测试各种网络协议和技术,包括但不限于TCP/IP、WiFi、无线通信、移动通信、卫星通信等。
NS2的基本组成部分包括:- OTcl:OTcl是一个面向对象的Tcl解释器,它被用来编写NS2的脚本文件。
它可以帮助您表示仿真模型以及控制仿真场景和参数。
- C++代码:NS2的模拟核心是由C++编写的,它包含了底层的网络协议处理逻辑和数据结构。
- Trace:NS2的Trace模块可以记录仿真过程中所有的事件和消息交换。
我们可以通过Trace来分析仿真结果,并对仿真场景进行可视化。
总结NS2是一个开源且强大的网络仿真器,它的核心部分是由C++编写而成的。
NS2可以帮助您模拟和测试各种网络协议和技术,并提供一个强大的OTcl 脚本语言来控制和配置仿真模型。
第二部分:NS2的基本功能NS2提供了很多强大的功能,如下所示:1. 拓扑结构模拟NS2可以帮助我们模拟各种网络拓扑结构,例如星型、树形结构、层次结构等。
通过定义节点、连接和协议,我们可以很容易地构建复杂的拓扑结构,并进行仿真和测试。
2. 参数设置和控制通过OTcl脚本,我们可以轻松地配置和控制仿真模型。
我们可以设置各种参数,例如发送速率、仿真持续时间、节点位置等等。
此外,我们还可以通过设置事件触发器来控制仿真场景的流程。
3. 模拟协议NS2可以帮助我们模拟各种协议,例如TCP、UDP、ICMP等。
浅析Opnet,Ns2,Matlab网络仿真工具
浅析Opnet,Ns2,Matlab网络仿真工具【摘要】网络仿真可以有效提高网络规划和设计的可靠性和准确性,明显地降低网络投资风险,减少不必要的投资浪费。
本文就常见的三种网络仿真工具(OPNET、NS2及MATLAB),从它们的基本情况及特点进行了分析。
【关键字】网络仿真;OPNET;NS2;MATLAB引言随着网络结构和规模越来越复杂化以及网络的应用越来越多样化,单纯地依靠经验进行网络的规划和设计、网络设备的研发以及网络协议的开发,已经不能适应网络的发展,因而急需一种科学的手段来反映和预测网络的性能,网络仿真技术应运而生。
网络仿真可以有效提高网络规划和设计的可靠性和准确性,明显地降低网络投资风险,减少不必要的投资浪费。
各种网络仿真工具在此背景下应运而生。
本文就常见的三种网络仿真工具(OPNET、NS2及MATLAB),从它们的基本情况及特点进行了分析。
基本情况及特点分析1.OPNETOPNET公司最初只有一种产品OPNET Modeler,到目前已经拥有Modeler、ITGuru、SPGuru、WDMGuru、ODK等一系列产品。
对于网络的设计和管理,一般分为3个阶段:第1阶段为设计阶段,包括网络拓扑结构的设计,协议的设计和配置以及网络中设备的设计和选择;第2阶段为发布阶段,设计出的网络能够具有一定性能,如吞吐率、响应时间等等;第3阶段为实际运营中的故障诊断、排错和升级优化。
而OPNET公司的整个产品线正好能面向网络研发的不同阶段,即可以作网络的设计,也可以作为发布网络性能的依据,还可以作为已投入运营的网络的优化和故障诊断工具。
OPNET公司也是当前业界智能化网络管理分析解决方案的主要提供商。
OPNET的主要特点:层次化的网络模型。
使用无限嵌套的子网来建立复杂的网络拓扑结构。
简单明了的建模方法。
Modeler建模过程分为3个层次:过程(process)层次、节点(Node)层次以及网络(Network)层次。
网络仿真器NS2剖析NetworkSimulatorV2
用命令的方法 ❖ EmbeddedTcl类:封装了装载更高级别的内置命令
的方法 ❖ InstVar类:访问C++成员变量,如Otcl变量方法
Tcl类
❖ 获得访问Tcl实例的入口 ❖ 通过解释器调用Otcl过程 ❖ 与解释器交换结果 ❖ 报告出错状况,并以统一方式退出 ❖ 存储、查找TclObject类对象 ❖ 取解释器的句柄
❖ 类TclClass是一个纯虚类,从它派生的 子类需实现两个成员函数:其一是构造 函数,构造解释类层次来镜像编译类层 次;其二是生成函数,生成与之相对应 的TclObjects对象 。
❖ 流程图
TclCommand类
❖ 类TclCommond的作用就在为解释器提供全 局命令
❖ 由TclCommand的定义知道,它是一个虚基 类,必须派生子类,才能工作。
tcpgen.tcl
Nam与Xgraph
❖ 图形显示工具 ❖ Nam <filename.out>:动态显示网络仿真过
程。如:包的传输等等 ❖ Xgraph <filename.tr>:显示仿真过程的数值
特征。如:流量/时间图等
四、NS2的使用
❖ 命令行方式:敲入一个命令,返回一个结果 输入命令: %/ns-version 返回版本号: ns /2.0a12
❖ Base classifier是一虚基类 ❖ address classifier:支持独播,通过位移和掩码将
包的目的地址转化成槽的号码。 ❖ multicast classifier:保持一个哈希链表,匹配地址
用NS2开发不同版本TCP协议的性能对比实验
韩 山 师 范 学 院
学 报
Vl _ 1 No 3 0 3 . l J n.0 0 u 2 1
J u n l fHa s a r lUn v r i o r a n h n NoP C 协议 的性 能对 比实验
‘
( 1 )
IC n( =1 w d)fw d) =s he w d ) / n(, cn( > s rs t c ti t t h
TCP 期版本 称之 为TLo ,它可 以分 为 以下4 早 £ e h 个步骤 :
 ̄ w d , s rs 时, :c n d于s h eh 采用慢启动机制来获取网络可用带宽. t 收到一个应答包后, n = w d ; c d c n +1 w
程 如 图1 所示 ,NS 采 用 开 放 的 体 系 结构 , 2 集 成 了局 域 网、 广 域 网 、蜂 窝 和 卫 星 网络
的 大 量 构 件.这 些 构 件 都 采 用 分 裂 对 象 模
型来实现 ,也就是说构件的主要功能通常 在C +十 ( 编译类 )中实现, T L ( 而O C 解释
网络 实验 室投 资大 、管 理难 ,因为 它不 同于一 般 的程序 设计 实验 ,只 需要 提供 一个 软件环 境就 能
进行编程、测试以完成正常的教学实验[,比如在讲授不同版本的T P 1 ] C 协议 的性能差异时,学生由于
不 能用 “ 的方 式直接 观察 到TCP 塞 窗 口的变 化 ,从而难 以领 会现 象 的本质 ,一知半 解 ,教 学效果 看” 拥 大 打折 扣 ,“ 计算 机 网络 ” 程 的实 验 一直 是许 多 学校 在进 行正 常 教学 过程 中难 以解 决 的 问题 . 于上 课 基 述原 因 ,本 文 尝试用 NS 开发 一个 “ 同版本TC 2 不 P协议 的性 能对 比” 的实 验项 目,通过 该实验 ,学 生分 析相 关的实验 数据 ,能直 观地 观察  ̄T h e1 n 协 议 中TCP 塞 窗 口的变化 ,能很好地 体会 到两 种 J l a o ¥Re o 拥
NS2实用教程
NS2中扩展新路由算法的研究
中图分类号:TP393 文献标识码:A 文章编号:1009-2552(2007)10-0026-03NS2中扩展新路由算法的研究李 帆,李陶深(广西大学计算机与电子信息学院,南宁530004)摘 要:NS2是网络研究与设计中广泛使用的一个网络仿真模拟器。
讨论了NS2网络仿真软件的结构及其功能扩展原理,着重分析了其中路由模块的功能和实现,提出在NS2中扩展一个新路由算法的方法,并给出了一个具体的模拟实例。
关键词:NS2;网络仿真器;功能扩展;路由Research on a new r outing algor ithm based onN S2net w or k simulatorLI F an,LI T ao2shen(Schoo l of Computer and E lectronic Inf o r mation,G uangxi U niver sity,N ann i ng530004,China) Abstra ct:NS2is a very popular netw ork simulator softw are in netw ork research and design.This paper dis2 cusses the com ponent s and the extention principle and im plementation details of NS2,focuses on the analysis of the r outing m odule function and implementation,pr oposes a method of extending a new r outing algorithm, and last gives an example about it.K ey w or ds:NS2;netw ork simulator;function extension;r outing0 引言网络仿真软件是研究网络技术、评估网络设计方案以及诊断网络故障的有力工具。
网络仿真器NS-2之使用手册
网络仿真器NS-2之使用手册(草稿)目录安装手册....................................................................................01~091.使用需求 (01)2.在Windows Me/2000安装方式 (01)3.补充 (08)4.参考网址 (09)使用手册.....................................................................................10~18附录一、Output File Format...............................................................19~251.NAM各字段格式及范例.. (19)2.NEW TRACE FILE格式 (23)附录二、TCL语法整理…………………………………………………………26~33§安装手册§一、使用需求:‧计算机外设设备:⏹CPU:600MHz以上。
⏹内存:256M以上。
⏹硬盘容量:40GB以上。
‧宽带网络:NS2各组件需要快速的联机网络下载,各组件的档案总共数百Mega Bytes。
‧Visual C++ 6.0。
二、在WINDOW ME/2000的安装方式:1.在DOS环境下c:\program\Microsoft studio\VC98\bin执行vcvars32.bat的批次档,藉以设定Visual C++的路径以及环境变量;并且可以手动编辑autoexec.bat中路径或环境变量。
以下为一Autoexec.bat的范例,仅供参考,并不硬性规定需如此设定:@echo offvcvars32.batset PATH=%PATH%;c:\netsim\tclset PATH=%PATH%;c:\netsim\tkset PATH=%PATH%;c:\netsim\otclset PATH=%PATH%;c:\netsim\tclclset PATH=%PATH%;c:\netsim\ns2set PATH=%PATH%;c:\progra~1\tcl@echo on2.新增一个NetSim的资料夹在C:\里面。
NS2基础介绍
3.2.NS2的编程语言 OTcl + C++
OTcl和Tcl的关系和C+言? 模拟器需要两方面的事情要做:
1.具体的协议的模拟和实现:高效的处理数据能力; 2.网络组件的具体参数的设置:脚本则相当灵活
3.3.分裂对象模型 NS2的OTcl/C++架构与Windows下的 COM/VB编程模式有些类似, 使用VC来编写 和实现COM对象, 然后使用VB来操纵COM对 象. 与之相比, NS2则能够使OTcl脚本操作它 的C++类库结构, 同时按照它的类分级来创建 对象. 具体的实现有一定的方法,一般来讲入门是用 不到的,不做介绍
5.Nam演示
5.1 一个简单的例子
set ns [new Simulator] set nf [open out.nam w] $ns namtrace-all $nf proc finish {} { global ns nf $ns flush-trace close $nf exec nam out.nam & exit 0 }
当看到如下的信息时候,表示成功: ....You MUST put /home/tnt/ns-allinone-2.33/ tcl8.4.18/library into your TCL_LIBRARY environmental variable. Otherwise ns/nam will complain during startup 意思是让你设置环境变量 5).设置环境变量
5.2 nam演示
5.2 xgraph演示
可以将NS2仿真结果用图形生动的表示出来
1.什么是NS2?
1.1.需求 需求
验证网络性能的正确性和进行相关性能测试 NS2提供了虚拟环境进行网络模拟仿真,是最流行的网络模拟软件之一
NS2使用
Packet* allocpkt() const; // alloc + set up new pkt Packet* allocpkt(int) const; // same, but w/data buffer void initpkt(Packet*) const; // set up fields in a pkt
Tcl/Tk • 边看书边动手,试着编写一些小程序……
(推荐的那本书足够了)
Otcl
• 资料非常有限,好在面向对象的思想和C++非 常的类似,掌握一些注意事项就OK(存在疑 问的时候自己去编程检验一下就明白 了)…… (网上有个简短的教程:OTcl Tutorial)
怎样看懂trace文件???
…… …… …… ……
变
层间信息传递
……
……
理解NS的内部结构——C++类的继承关系
连接器
分类器
理解NS的内部结构——Connector类
class Connector : public NsObject {
…… ……
NsObject* target_; NsObject* drop_;
…… ……
// drop target for this connector
不太好操作
NS设计 发 网络 真 ,仿 真主要针对路由层,传输层,数据链路 层展开。但它最适用于TCP层以上的模 拟
Windows
Linux
NS 码公开,是自由软件, 免费,因此普及度较高 可扩 强; 速度和效率优势明显
NS学习的参考资料
推荐一个非常不错的NS2学习的个人网站: http://140.116.72.80/~smallko/ns2/ns2.htm
电力通信网络系统仿真技术研究
2020年第12期 (总第216期)信息通信2020(Sum . No 216)INFORM ATION & COMMUNICATIONS电力通信网络系统仿真技术研究刘刚,陆会贤,张瀚峰(国网思极紫光(青岛)微电子科技有限公司,北京100089)摘要:通信网络系统仿真是通信系统设备研发、网络建设和应用过程中一个非常重要的评估手段,可以大大加速通信系统的部署建设时间,减少后期运维成本,提升企业经济效益。
随着智能电力物联网建设规模的扩大,建设和运维成本不断增长,迫切需要在通信网络部署之初通过系统仿真技术优化网络性能,加速建设速度。
基于对通用的通信系统仿真技 术的分析,结合电力通信系统的需求和特点,给出电力通信网络系统仿真的方法和过程。
为提高系统仿真速度,提出了 可能采用的仿真加速技术,并给出推荐的电力通信网络系统仿真平台。
关键词:通信网络;系统仿真;电力物联网;仿真平台;仿真加速技术中图分类号:TM 743文献标识码:A文章编号= 1673-1131(2020)12-0013-05Research on System Simulation Technology of Electric Power Communication NetworkLiu Gang, Lu Huixian,Zhang Hanfeng(Smart Shine Microelectronics Technology Co ., Ltd , B eijing , 100089, China )Abstract:Com m im ication network system simulation is a very important evaluation method in the process o f communication system equipment research and development , network construction and application . It can greatly accelerate the deployment and construction tim e o f communication systems , reduce later operation and maintenance costs , and improve enterprise economic benefits . W ith the expansion o f t he construction scale o f the intelligent power Internet o f Things , the construction and operation and maintenance costs continue to increase , and there is an urgent need to optimize network performance and accelerate the con struction speed through system simulation technology at the beginning o f communication network deployment . Based on the analysis o f general communication system simulation technology , combined w ith the needs and characteristics o f power com munication system , this paper gives the method and process o f power communication network system simulation . In order to improve the system simulation speed , the simulation acceleration technology that may be adopted is proposed , and the recom mended power communication network system simulation platform is given .Key w ords : Communication network ; System simulation ; Power Internet o f Things ; Simulation platform ; Simulation acceler ation technology随着传统能源结构转型及新能源发展,到2050年前后我 国能源结构将出现“两个50%”,一半以上的能源生产和消费 都要依靠电网完成,电网面临前所未有的机遇和挑战,必须加 快向能源互联网转型升级。
NS2网络模拟器的原理和应用
NS2网络模拟器的原理和应用1. NS2网络模拟器简介NS2(Network Simulator 2)是一个开源的网络模拟器,可以用于从高性能网络到无线移动网络的广泛应用。
NS2是一个离散事件模拟器,可以模拟真实网络环境中的各种网络协议和网络应用。
2. NS2网络模拟器的原理NS2的核心是基于离散事件的模拟器,它采用事件驱动模型来模拟网络中的各种事件。
NS2的模拟对象包括路由器、主机、链路等,每个对象都有自己的状态和行为。
NS2的模拟器通过以下步骤进行模拟:•创建拓扑结构:在NS2中,需要事先定义网络的拓扑结构,即网络中的节点和连接关系。
可以通过使用OTcl(Object TCL)脚本来定义网络拓扑。
•设置通信行为:在NS2中,可以设置节点之间的通信行为,包括传输协议、数据包大小、传输速率等等。
可以通过OTcl脚本来设置节点的通信属性。
•生成事件:NS2中的事件包括节点的发送、接收、路由更新等等。
可以通过OTcl脚本生成相应的事件。
•事件调度:NS2会根据事件发生的时间顺序来调度事件的处理。
在每个时间点,NS2会根据当前时间来决定下一个事件处理的顺序。
•事件处理:根据事件类型,NS2会调用相应的函数来处理事件。
比如,当一个节点发送数据包时,NS2会调用节点的发送函数来处理此事件。
3. NS2网络模拟器的应用NS2的应用非常广泛,主要应用于以下几个方面:3.1 网络协议研究NS2可以用于研究和评估各种网络协议的性能。
可以通过在网络拓扑中设置不同的协议参数和网络条件,来模拟和评估协议的性能指标,例如吞吐量、延迟、丢包率等。
3.2 网络性能优化NS2可以用于优化网络性能,通过对网络拓扑、协议参数和网络条件的调整来提高网络的性能。
可以通过计算模拟结果来评估不同优化策略的效果,从而选择最佳的优化方案。
3.3 网络设备设计和测试NS2可以用于设计和测试网络设备,例如路由器、交换机等。
可以通过在NS2中创建相应的网络拓扑,模拟网络设备的行为和性能,从而评估设备的可靠性和性能。
NS2概述
setdest
NSG2 产生有线网络及无线网络的剧本(目前尚不支持无线及有线混合 的剧本) 支持的Node种类︰WirelessNode及WiredNode 支持WirelessNode的移动设定 支持的Link种类︰Duplex-link及Simplex-link Agent支援(TCP、TCP/Tahoe、TCP/Reno、TCP/Newreno、 TCP/Vegas、TCPSink、UDP及NULL) 支持的Application种类:CBR及FTP 支持的Routing protocol种类︰DSDV、DSR、AODV及TORA 支持的Queue种类︰DropTail、RED、FQ、DRR、SFQ及CBQ 无线网络相关设定 802.11参数设定(NSG提供一组802.11b的预设参数)
设置trace文件
建立节点和链路
set n0 [$ns node] set n1 [$ns node] $ns duplex-link $n0 $n1 1Mb 10ms DropTail set udp0 [new Agent/UDP] $ns attach-agent $n0 $udp0 set cbr0 [new Application/Traffic/CBR] $cbr0 set packetSize_ 500 $cbr0 set interval_ 0.005 $cbr0 attach-agent $udp0 set null0 [new Agent/Null] $ns attach-agent $n1 $null0 $ns connect $udp0 $null0
定义类MFloodHeaderClass:public PacketHeaderClass
TCL基本语法
TCL基本语法1. 常用命令NS2的基本命令格式为:ns <OTclfile> <arg> <arg> ……。
模拟器是通过NS2解释程序调用的,模拟器是由OTcl脚本文件定义的。
常用的主要命令如下:(1) set ns [new simulator]目的在于创造一个NS2的仿真对象,主要的功能为初始化的包的格式(packet format)和创造一个事件调度计划(Scheduler)。
(2) set node_ [ $ ns node ]建立一个名称为“node_”的节点,当然如果你想要创造很多个节点的时候,一行一行写程序似乎太慢了,可以利用Tcl循环方式产生大量的节点(Nodes),代码如下:# Create 30 nodesFor {set i 0} { $ i < 30} {incr i}{set n( $ i ) [ $ ns node ]}(3) $ ns simplex – link < n0 > < n1 > <bandwidth> <delay> <queue_type>建立一条节点n0到n1的链路,并设定带宽“bandwidth”、延时“delay”和队列类型“queue_type”。
队列的类型主要有DropTail(a FIFO queue),FQ,SFQ,DRR,RED,CBQ,CBQ/WRR等。
例如,在n0及n1之间建立一个带宽为2MB,队列类型为DropTail的链路,代码如下:$ ns duplex – link $ n0 $ n1 2MB 20ms DropTail(4) $ ns duplex-link < n0> < n1 > <bandwidth> <delay> <queue_type>:建立一条双向链路,其他的都同上。
ns2仿真软件介绍
ns2仿真软件介绍ns2⽹络仿真软件NS 是⼀种针对⽹络技术的源代码公开的、免费的软件模拟平台,研究⼈员使⽤它可以很容易的进⾏⽹络技术的开发,⽽且发展到今天,它所包含的模块已经⾮常丰富,⼏乎涉及到了⽹络技术的所有⽅⾯。
所以,NS成了⽬前学术界⼴泛使⽤的⼀种⽹络模拟软件。
在每年国内外发表的有关⽹络技术的学术论⽂中,利⽤NS给出模拟结果的⽂章最多,通过这种⽅法得出的研究结果也是被学术界所普遍认可的,此外,NS也可作为⼀种辅助教学的⼯具,已被⼴泛应⽤在了⽹络技术的教学⽅⾯。
因此,⽬前在学术界和教育界,有⼤量的⼈正在使⽤或试图使⽤NS。
然⽽,对初学者来说,NS是⾮常难于掌握的,⼀般⼈从学习NS到上⼿⾄少需要半年多时间。
原因是多⽅⾯的:⼀⽅⾯,NS 内容庞杂,随软件所提供的⼿册更新不够快,初学者阅读起来⾮常困难;另⼀⽅⾯,使⽤NS还要掌握其它很多必备的相关知识以及相关⼯具,这会使初学者感到⽆从⼊⼿;有的使⽤者可能还不了解⽹络模拟的过程或是对NS软件的机制缺乏理解,这也影响了对NS的掌握。
另外,不论在国外还是国内,还没有⼀本书能集中回答和解决这些问题,这也是NS难于被掌握的⼀个重要原因。
1、NS2简介NS2 (Network Simulator, version 2)是⼀种⾯向对象的⽹络仿真器,由UC Berkeley开发⽽成。
它本⾝有⼀个虚拟时钟,所有的仿真都由离散事件驱动的。
⽬前NS2可以⽤于仿真各种不同的IP⽹,已经实现的⼀些仿真有:⽹络传输协议,⽐如TCP和UDP;业务源流量产⽣器,⽐如FTP,Telnet,Web CBR和VBR;路由队列管理机制,⽐如Droptail,RED和CBQ;路由算法,⽐如Dijkstra等。
NS2也为进⾏局域⽹的仿真⽽实现了多播以及⼀些MAC ⼦层协议。
NS2 使⽤C++和Otcl作为开发语⾔。
NS 可以说是Otcl的脚本解释器,它包含仿真事件调度器、⽹络组件对象库以及⽹络构建模型库等。
NS2在计算机网络课程中的应用研究
NS2在计算机网络课程中的应用研究摘要:针对计算机网络课程的教学演示,分析当前主流的网络模拟技术,并介绍ns2网络模拟器的模拟流程,结合tcp协议和udp 协议,给出实例教学演示,增加学生的学习兴趣并增强了教师的教学效果。
关键词:计算机网络 ns2 tcp 协议 udp协议中图分类号:tp393 文献标识码:a 文章编号:1007-3973(2012)012-163-021引言随着计算机网络的持续快速发展,系统结构的日益完善,已经深入到人们日常的工作、学习、生活等的方方面面。
正是伴随着计算机网络知识的普及,计算机网络课程成为了高校计算机专业的一门专业课。
该课程中涉及到大量的概念、原理以及抽象复杂的网络协议,这都成为了许多初学者的瓶颈。
以internet核心协议之一的tcp协议为例,tcp协议本身为了实现在不可靠的ip协议上进行可靠数据交付,包含了大量复杂的机制,而在教学过程中,针对网络协议的传输过程,仅通过演示课件达到直观、精确地展示效果非常困难;另一方面,网络实验平台的搭建受到院校经费和环境的影响,并不一定可以达到课程所需的要求。
基于此,为提升学生对网络课程的兴趣,而且由于网络模拟技术与工具的成熟,通过网络模拟软件,构建虚拟的tcp协议仿真模拟教学环境,一方面,增强学生对tcp协议和udp协议传输机理的直观理解,促进学生学习动力的产生;另一方面,为教师提供有力的网络教学辅助工具。
本文基于经典的ns2网络模拟软件,提出tcp 与udp协议连接建立、数据流传输等的分析和演示教学过程。
2网络模拟工具进展2.1 网络模拟技术介绍在计算机网络的研究方法中,商业软件的特点是价格昂贵且不具备开放性,从而对网络研究的进行产生了滞后的影响。
由于网络模拟技术的特点是成本低,具有开放性的软件包,且能用于研究尚未实施的网络机制,因此,为网络研究者提供了良好的研究平台和工具。
在众多的这类软件工具中,被网络研究人员广泛应用的主流工具有以下几种:(1)ns2。
NS2简单地添加路由协议方法
NS2上实现一个简单的路由协议NS2版本:2.34要实现简单的路由协议:就是按照你的要求从节点1发到节点2在从节点2发到节点3,我修改的是node节点的addr-classifier功能,因为addr-classifier是负责包的转发功能。
所有的数据都是通过addr-classifier转发出去或者转发给上层协议。
用port-classifier也可以实现类似功能,但是在仿真的时候不能加入数据比如ftp数据。
最后还是要在addr-classifier中对数据进行处理。
以下是执行步骤:1)首先在route-proto.tcl添加一个路由simple 什么事情都不做。
加入办法为:1 Class Agent/rtProto/simple -superclass Agent/rtProto2 Agent/rtProto/simple proc init-all args { }加入的位置大家可以观察一下其他类似的语句,那些是其他协议的句子使用时要记得在仿真脚本加入$ns rtproto simple //这个在后面仿真的tcl文件会看到,现在不用管它2)之后就是修改classifier的功能了。
要把收到的包按照你的要求转发。
我定义新的文件为classifier-ants.h和.cc放在文件ns-2.34/classifier里classifier-ants.h文件为:#include "classifier.h"class AntsClassifier :public Classifier {public:AntsClassifier();void recv(Packet* p, Handler*h);//处理接收的报文int nid;//节点对应的编号,在ns2里节点是从0开始逐一编号的,在对应的tcl 脚本有定义};文件为:#include "classifier.h"#include "classifier-ants.h"static class AntsClassifierClass : public TclClass {public:AntsClassifierClass() : TclClass("Classifier/Ants") {}TclObject* create(int, const char*const*) {return (new AntsClassifier());}} class_ants_classifier;AntsClassifier::AntsClassifier() { bind("tid_",&nid);}void AntsClassifier::recv(Packet* p, Handler*h){NsObject* node = NULL;Tcl& tcl = Tcl::instance();if(nid==0){tcl.evalf("[Simulator instance] get-link-head %d %d",0,1);//[Simulat or instance]获取当前实例node= (NsObject*)TclObject::lookup(tcl.result());//获取链路0-1对象的指针node->recv(p,h);}if(nid==1) { tcl.evalf("[Simulator instance] get-link-head %d %d",1,3);node= (NsObject*)TclObject::lookup(tcl.result());node->recv(p,h); }if(nid==3){free(p);}}仿真时我设置了4个节点0,1,2,3 功能是0发给1,1发给3.在这里tid_是相对应的节点的节点号,要从tcl获得,但是对应的classifier没有这个变量要从node的id_获得的,所以用bind进行绑定,要注意的是节点获得id号之后id_才赋值了,3)在这里我添在ns-node.tcl文件的$self nodeid $id_ ;# Propagate id_ into c++ space语句之后,加入Classifier/Ants set tid_ $id_就能把id_的值传给tid_了,之后bind就能把tid_就能传给nid4)在写了新的classifier功能后要记得在ns-rtmodule.tcl注册,因为修改classifier 是修改module模块加上:RtModule/Ants instproc register { node } {$self next $node$self instvar classifier_set classifier_ [new Classifier/Ants]$node install-entry $self $classifier_}5)当然还要在rtmodule.h和修改。
NS2安装与使用
一、NS2 程序简介对于如何验证网络协议的正确性和进行相关性能测试,人们提出了很多方法,目前最广泛使用的方法就是通过虚拟环境进行模拟仿真。
NS-2 是进行网络仿真最流行的软件,已广泛被科研院所和各大高校用于进行网络分析、研究和教学。
它支持众多的协议,并提供了丰富的测试脚本。
NS-2 全称是Network Simulator Version 2。
它是面向对象的,离散事件驱动的网络环境模拟器,主要用于解决网络研究方面的问题。
NS-2 提供在无线或有线网络上,TCP、路由、多播等多种协议的模拟。
NS-2最早来源与1989年的Real Network Simulator 项目,经过多年的发展之后,于1995年得到施乐公司(Xerox)的支持,加入VINT 项目。
NS 一直以来都在吸收全世界各地研究者的成果,包括UCB、CMU 等大学和SUN等公司的无线网络方面的代码。
NS-2 由两种编程语言,OTCL(具有面向对象特性的TCL 脚本程序设计语言)和C++实现。
之所以使用两种编程语言,是因为模拟器有两方面的事情需要做。
一方面,具体协议的模拟和实现,需要一种程序设计语言,能够高效率的处理字节(Byte),报头(Packet Header)等信息,能够应用合适的算法在大量的数据集合上进行操作。
为了实现这个任务,程序内部模块的运行速度(run-time speed)是非常重要的,而运行模拟环境的时间、寻找和修复bug 的时间,重新编译和运行的时间(run-around time)不是很重要。
这种情况下,C++语言是非常合适的。
另一方面,许多网络中的研究工作都围绕着网络组件和环境的具体参数的设置和改变而进行的,需要在短时间内快速的开发和模拟出所需要的网络环境(scenarios),并且方便修改和发现、修复程序中的Bug。
在这种任务中,网络环境布置的时间就显得很重要了,因为模拟环境的建立和参数信息的配置只需要运行一次。
Linux下的NS2-2.29安装及错误调试
Linux下的NS2安装+LEACH及错误修改一、安装前的准备说明为了方便实验和使用,采用的实在虚拟机上安装,安装和配置过程与实体无异。
环境:Redhat9.0+ns-allinone-2.29.tar.gz准备:在安装编译之前确保Linux中已经安装了gcc++编译工具,以及XFree86-devel and XFree86-libs两个组件。
分别为:X 软件开发KDE桌面环境,可以在添加删除程序中进行安装。
二、安装过程1. 本实验安装环境:完全安装的RedHat 9.0操作系统,ns-allinone-2.29安装包。
2. 到官方下载网址下载NS2安装软件包ns-allinone-2.29.tar.gz.3. 以root登录RH9,在/home下建立ns2文件夹,将ns-allinone-2.29.tar.gz放在该文件夹下,在终端运行cd /home/ns2,使用解压命令tar xvfz ns-allinone-2.29.tar.gz,即生成/home/ns2/ ns-allinone-2.9.4. 修改/home/ns2/ ns-allinone-2.9/nam-1.11/agent.h中的第73行,将NULL改为0.5. 在/home/ns2/ ns-allinone-2.9/下运行。
/install6. 根据安装结束后结尾处的提示,将某些路径复制下来,或者直接按照以下修改(可以对照提示理解):7. 修改/root/.bashrc(注意该文件为隐藏文件),在该文件末尾加上以下三句话:exportPA TH=$PA TH:/home/ns2/ns-allinone-2.29/bin:/home/ns2/ns-allinone-2.29 /tcl8.4.11/unix:/home/ns2/ns-allinone-2.29/tk8.4.11/unixexportLD_LIBRARY_PA TH=$LD_LIBRARY_PA TH:/home/ns2/ns-allinone-2.29/otcl-1.11:/home/ns2/ns-allinone-2.29/libexportTCL_LIBRARY=$TCL_LIBRARY:/home/ns2/ns-allinone-2.29/tcl8.4.11/library在root路径下输入命令:source .bash_profile进行环境变量的更新8.这时,如果以上设置正确,直接运行ns会出现%,或者可以运行软件自带的例子,在/home/ns2/ns-allinone-2.29/ns-2.29/ns-tutorial/examples下运行ns example2.tclLEACH协议的安装准备:获取LEACH的源码文件:mit.tar.gz1.进入到目录/home/ns2/ns-allinone-2.29下解压LEACH协议源文件mit.tar.gz[root@localhost root]# cd /home/ns2/ns-allinone-2.29[*********************]#tar-xzcfmit.tar.gz./2.修改MakeFile文件1)添加-DMIT_uAMPS到DEFINE中DEFINE = -DTCP_DELAY_BIND_ALL.......-DMIT_uAMPS2)添加-I./mit/rca -I./mit/uAMPS到INCLUDE中INCLUDES = \-I./diffusion3/filter_core -I./asim/ -I./qs \-I./diffserv -I./satellite \-I./wpan \-I./mit/rca -I./mit/uAMPS \3)添加以下代码在gaf/gaf.o \之前mit/rca/energy.o mit/rca/rcagent.o \mit/rca/rca-ll.o mit/rca/resource.o \mac/mac-sensor-timers.o mac/mac-sensor.o mit/uAMPS/bsagent.o \注:添加过程中使用TAB键代替空格。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
分类:网络模拟器(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平行的目录下,并解压
2、编译tcl-debug,并且将产生的可加载的库文件复制到ns-2.xx的库目录里面,具体步骤如下:
1)进入到tcl-debug目录下面
$ cd tcl-debug-2.0
2) 配置并且编译tcl-debug
$ ./configure --prefix=/home/XXX/ns-allinone-2.xx/ns-2.xx --with-tcl=/home/XXX
/ns-allinone-2.xx/tcl8.4.xx/unix 其中, XXX为你的用户目录文件夹名字,xx要根据你装的ns2确定。
$ make
3)检查可加载的库文件(*.a) 在编译之后是否被创建。
查看是否产生了一个"libtcldbg.a" 文件。
他是一个tcl的库文件。
4) 复制这个库文件到NS2 库目录里面,即/home/ XXX /ns-allinone-2.xx/lib下面
3、编译ns2
1) 进入ns-2.xx目录下面,即/home/XXX/ns-allinone-2.xx/ns-2.xx
2) 重新配置NS2以便启用tcl-debug.
$ ./configure --with-tcldebug=/home/XXX/ns-allinone-2.xx/tcl-debug-2.0
注意:你可以从屏幕输出的信息查看到tcl-debug是否被验证了。
如果你没有看到以下的文字,你需要重复以前的步骤。
Checking for libtcldbg... -L/home/XXX/ns-allinone-2.xx/ns-2.xx /tcl-debug-2.0 -ltcldbg
上面的文字在下面这句话之后出现
checking dmallc... not requested with --with-dmalloc
3)删除以前的编译纪录
$ make clean
注:这一步骤非常重要!
4)重新编译NS2
$ make
现在tcl-debug已经嵌入到ns2的可执行文件"ns.exe"中去了
5)检查NS-2是否能够正常运行。
随便选择一个脚本测试一下就可以了
利用文本编辑器编辑在脚本的下述位置加入一行代码:
......
set ns [new Simulator]
debug 1; # 在这个位置添加这么一行代码
......
运行脚本,会出现如下的提示,说明安装完成。
2: lappend auto_path $dbg_library
dbg2.0>。