当前位置:首页 » 网络连接 » ns网络仿真

ns网络仿真

发布时间: 2021-03-10 08:08:04

A. NS 论坛有没有比较好的,推荐一下,做网络仿真的。

NS 网络仿真论坛太少了,如果速度快,没有限制的,上次上过一个论坛,

感觉还不错,几个牛人都在那里!网址是:

http://www.si.net/forum-440-1.html

如果觉得好,就给我加几分哦!

B. ns2网络仿真工具 gnuplot显示结果

ns2是网络仿真模拟器,不是绘图软件,你可以把仿真出来的数据在其他软件上画出来,比如excel或者matlab等等。一般linux自带了一个叫gnuplot的软件可以绘图,你也可以看看怎么使用它。

C. 谁能给我一个NS2网络仿真软件的下载地址

http://sourceforge.net/projects/nsnam/files/allinone/ns-allinone-2.35/ns-allinone-2.35.tar.gz/download
其他版本在http://www.isi.e/nsnam/ns/官网上寻找,都有发布

D. 求NS2仿真无线局域网WLAN 802.11b仿真的源代码

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的脚本解释器,它包含仿真事件调度器、网络组件对象库以及网络构建模型库等。事件调度器计算仿真时间,并且激活事件队列中的当前事件,执行一些相关的事件,网络组件通过传递分组来相互通信,但这并不耗费仿真时间。所有需要花费仿真时间来处理分组的网络组件都必须要使用事件调度器。它先为这个分组发出一个事件,然后等待这个事件被调度回来之后,才能做下一步的处理工作。事件调度器的另一个用处就是计时。NS是用Otcl和C++编写的。由于效率的原因,NS将数据通道和控制通道的实现相分离。为了减少分组和事件的处理时间,事件调度器和数据通道上的基本网络组件对象都使用C++写出并编译的,这些对象通过映射对Otcl解释器可见。

当仿真完成以后,NS将会产生一个或多个基于文本的跟踪文件。只要在Tcl脚本中加入一些简单的语句,这些文件中就会包含详细的跟踪信息。这些数据可以用于下一步的分析处理,也可以使用NAM将整个仿真过程展示出来。

2、使用NS进行网络仿真的方法和一般过程。

进行网络仿真前,首先分析仿真涉及哪个层次,NS仿真分两个层次:一个是基于OTcl编程的层次。利用NS已有的网络元素实现仿真,无需修改NS本身,只需编写OTcl脚本。另一个是基于C++和OTcl编程的层次。如果NS中没有所需的网络元素,则需要对NS进行扩展,添加所需网络元素,即添加新的C++和OTcl类,编写新的OTcl脚本。

假设用户已经完成了对NS的扩展,或者NS所包含的构件已经满足了要求,那么进行一次仿真的步骤大致如下:

(1)开始编写OTcl脚本。首先配置模拟网络拓扑结构,此时可以确定链路的基本特性,如延迟、带宽和丢失策略等。

(2)建立协议代理,包括端设备的协议绑定和通信业务量模型的建立。

(3)配置业务量模型的参数,从而确定网络上的业务量分布。

(4)设置Trace对象。NS通过Trace文件来保存整个模拟过程。仿真完后,用户可以对Trace文件进行分析研究。

(5)编写其他的辅助过程,设定模拟结束时间,至此OTcl脚本编写完成。

(6)用NS解释执行刚才编写的OTcl脚本。

(7)对Trace文件进行分析,得出有用的数据。

(8)调整配置拓扑结构和业务量模型,重新进行上述模拟过程。

NS2采用两级体系结构,为了提高代码的执行效率,NS2 将数据操作与控制部分的实现相分离,事件调度器和大部分基本的网络组件对象后台使用C++实现和编译,称为编译层,主要功能是实现对数据包的处理;NS2的前端是一个OTcl 解释器,称为解释层,主要功能是对模拟环境的配置、建立。从用户角度看,NS2 是一个具有仿真事件驱动、网络构件对象库和网络配置模块库的OTcl脚本解释器。NS2中编译类对象通过OTcl连接建立了与之对应的解释类对象,这样用户间能够方便地对C++对象的函数进行修改与配置,充分体现了仿真器的一致性和灵活性。

3、NS2的功能模块

NS2仿真器封装了许多功能模块,最基本的是节点、链路、代理、数据包格式等等,下面分别来介绍一下各个模块。

(1)事件调度器:目前NS2提供了四种具有不同数据结构的调度器,分别是链表、堆、日历表和实时调度器。

(2)节点(node):是由TclObject对象组成的复合组件,在NS2中可以表示端节点和路由器。

(3)链路(link):由多个组件复合而成,用来连接网络节点。所有的链路都是以队列的形式来管理分组的到达、离开和丢弃。

(4)代理(agent):负责网络层分组的产生和接收,也可以用在各个层次的协议实现中。每个agent连接到一个网络节点上,由该节点给它分配一个端口号。

(5)包(packet):由头部和数据两部分组成。一般情况下,packet只有头部、没有数据部分。

4、NS2的软件构成

NS2包含Tcl/Tk, OTcl, NS,Tclcl。其中Tcl是一个开放脚本语言,用来对NS2进行编程;Tk是Tcl的图形界面开发工具,可帮助用户在图形环境下开发图形界面;OTcl是基于Tcl/Tk的面向对象扩展,有自己的类层次结构;NS2为本软件包的核心,是面向对象的仿真器,用C++编写,以OTcl解释器作为前端;Tclcl则提供NS2和OTcl的接口,使对象和变量出现在两种语言中。为了直观的观察和分析仿真结果,NS2 提供了可选的Xgraphy、可选件Nam。

5、NS现有的仿真元素

从网络拓扑仿真、协议仿真和通信量仿真等方面介绍NS的相应元素:

(1)网络拓扑主要包括节点、链路。NS的节点由一系列的分类器(Classifier,如地址分类器等)组成,而链路由一系列的连接器(Connector)组成。

(2)在节点上,配置不同的代理可以实现相应的协议或其它模型仿真。如NS的TCP代理,发送代理有:TCP,TCP/Reno,TCP/Vegas,TCP/Sack1,TCP/FACK,TCP/FULLTCP等,接收代理有:TCPSINK,TCPSINK/DELACK。TCPSINK/SACK1,TCPSINK/SACK1/DELACK等。此外,还提供有UDP代理及接收代理Null(负责通信量接收)、Loss Monitor(通信量接收并维护一些接收数据的统计)。

(3)网络的路由配置通过对节点附加路由协议而实现。NS中有三种单播路由策略:静态、会话、动态。

(4)在链路上,可以配置带宽、时延和丢弃模型。NS支持:Drop-tail(FIFO)队列、RED缓冲管、CBO(包括优先权和Round-robin 调度)。各种公平队列包括:FQ,SFQ,DRR等。

(5)通信量仿真方面,NS提供了许多通信应用,如FTP,它产生较大的峰值数据传输;Telnet则根据相应文件随机选取传输数据的大小。此外,NS提供了四种类型的通信量产生器:EXPOO,根据指数分布(On/Off)产生通信量,在On阶段分组以固定速率发送,Off阶段不发送分组,On/Off的分布符合指数分布,分组尺寸固定;POO,根据Pareto分布(On/Off)产生通信量,它能用来产生长范围相关的急剧通信量;CBR,以确定的速率产生通信量,分组尺寸固定,可在分组间隔之间产生随机抖动;Traffic Trace,根据追踪文件产生通信量。

E. 如何用NS2模拟一个MESH网络

1.在Linux下的安装
申明:我的pc上安装的是Ubuntu版本,个人用户名为ryan
首先下载软件包ns-allinone-2.31.tar.gz(目前最新版本).
具体步骤如下:
(1)到自家目录下确定软件包的所在
ryan@Ubuntu:~$cd
ryan@Ubuntu:~$ls -l ns-allinone-2.31.tar.gz
(2)解压软件包,使用tar命令解压为.gz结尾的软件包
ryan@Ubuntu:~$tar zxf ns-allinone-2.31.tar.gz
zxf为解压.gz专用参数,如果想看到解压输出的过程,也可以加上V,即用vzxf参数解压,详细的tar命令的参数
和使用方法可以参加linux的有关资料.
(3)运行安装命令
ryan@Ubuntu:~$cd ns-allinone-2.31
ryan@Ubuntu:~/ns-allinone-2.31 $./install
执行./install命令后,会出现很多编译过程的结果输出,主要没有错误信息并停止,不用去管它,不出意外,
等待一段时间后会正常退出到提示符.
(4)设置全局路径变量
上一步的安装成功后,最后输出部分会提示你必须设置三个全局变量path,ld_library_path和tcl_library.
在自己的家目录下编辑终端配置文件 .bashrc,注意要带"."开头, .bashrc是bash终端的配置文件,每次打开
一个终端窗口,该文件中的脚本就会自动运行.在Linux中它是隐藏文件,一般用ls命令看不出来,没关系,采用
vi命令编辑该文件:
ryan@Ubuntu:~$cd
ryan@Ubuntu:~$vi .bashrc
将光标移动到文件的最后一行,按"ins"键进行插入,在此文件中添加一下三行:
export path=$path:~/ns-allinone-2.31/bin:/home/ryan/ns-allinone-2.31/tcl8.4.13/unix
export ld_library_path=$ld_library_path:/home/ryan/ns-allinone-2.31/otcl-1.12:/home/ryan/ns-allinone-2.30/lib
export tcl_library=$tcl_library:/home/ryan/ns-allinone-2.31/tcl.4.13/library
编辑完成后,按"esc"键退出插入模式,再按":wq"存盘退出.
重新打开新的终端,脚本运行生效.
(5)简单测试
重新打开新的终端,环境变量的设置才会生效,如果.bashrc文件中有什么错误,这时在新开的终端中会有提示信息
显示出来.如果没有错误,则在终端提示符下输入ns命令进行测试.操作步骤如下:
A)打开一个新的终端
B)输入ns并回车
ryan@Ubuntu:~ns
C)输入一段测试用的tcl脚本代码进行测试
%puts "hello world"回车
如下所示显示则表示安装成功.
hello world
%
2.如何快速入门
ns中两个语言是c++和tcl,所以懂得这两种语言的语法是入门的关键.
c++我就不多说了,很多关于这方面的书籍,而且个人觉得作为一名计算机专业的学生,学好c++是根本吧.
只有tcl,感觉语法和网络编程语言php比较类似,个人以前用它开发过网站,感觉很熟悉,也容易理解.即使不懂,我感觉半天就可以上手.
这里还推荐一本书<ns和网络模拟>,主要看看第4,5,7章就ok了,最后分析数据的时候再看看第6章.
在自己动手之前,认真研究mflood的例子,这是一个原型的东西,看懂了基本就可以下一步了.如果以后遇到不懂的,可以重新回头看.
3.如何开发,讲讲自己的经验.
开发工具非常重要,本人采用eclipse作为开发工具,感觉非常好用.至于...安装就不需要我讲解了吧-_-#必要的插件是必须的.
用eclipse建立ns的工程,开发自己的源代码(c++文件).基本就是.h和.cc文件的code,需要一定的c++基础(ps:好久不写代码,犯了很多幼稚的错误)
调试c++代码时,可以使用eclipse工具,非常方便,而且定位错误也准确,我想使用过这个平台的人都深有体会吧.
编译通过之后,编写tcl脚本,开始模拟测试...

F. OPNET或NS网络仿真,那个更适合对EPON的仿真会得朋友帮忙指导

OPNET这个通信软件我用过,做仿真效果是不错。EPON无源光网络跟aloha,csma之类有些相似应该不错的

G. ns2 网络仿真软件

ns2下载网站
http://www.isi.e/nsnam/dist/ns-allinone-2.28.tar.gz

H. NS无线网络仿真用awk分析trace文件

你得修改脚本设置tcl文件,在tcl文件里面设置仿真时所用的数据包类型。awk文件仅仅是用于分析数据的,算不上脚本文件。具体建议你去百思论坛的NS专区http://www.si.net/forum-440-1.html去问问,关于FTP的仿真我也没接触过

I. matlab网络仿真和ns的区别

NS是专门的网络仿真软件,MATLAB更擅长的是信号处理类的工作。

J. NS-2无线网络仿真用gawk分析trace文件

1)字段赋值,有线的trace都是同一个格式的
无线的分新版本和旧版本的略有不同。我的是旧版本的。
下面这个是无线的
1 2 3 4 5:6 7 8 9 [10/11/12/13] 14:16 [ 17 -18 19 20]
s 3.000000000 _0_RTR --- 0 AODV 48 [0 0 0 0] ------- [0:255 -1:255 30 0]
s 10.00000000 _0_AGT --- 2 tcp 40 [0 0 0 0] ------- [0:0 1:0 32 0]
r 10.00000000 _0_RTR --- 2 tcp 40 [0 0 0 0] ------- [0:0 1:0 32 0]
s 12.50000000 _0_RTR --- 0 AODV 48 [0 0 0 0] ------- [0:255 -1:25530 0]

1-20 是对这个无线Trace的标注,每条记录共有20栏,下面对各栏表示的意义进行说明:
(1)事件类型:
s:分组的发送事件;
r:分组的接收事件;
d:分组的丢弃事件;
f:分组的转发事件;
(2)事件产生的时间。
(3)处理该事件的节点ID。
(4)Trace种类:
RTR:路由器Trace;
AGT:代理Trace;
MAC:MAC层Trace;
(5:6)分隔符。
(7)分组ID。
(8)分组类型。
(9)分组大小(字节)。
[10:13]有关MAC层的详细信息
(10)发送节点在无线信道上发送该分组所期望的时间值,用16进制表示。
(11)接收节点的MAC地址。
(12)发送节点的MAC地址。
(13)MAC层封装的分组类型。 0x800:IP分组,0x806:ARP分组
(14:16)分隔符。
(17)分组发送的源IP地址。节点号.端口号
(18)分组发送的目的IP地址。节点号.端口号
(19)分组的TTL值。
(20)源节点到目的节点的跳数。

2)测丢包率的
BEGIN {
highest_uid=0; #保存保存已处理的最大的uid
}
{
event = $1;
time = $2;
node = $3;

node_ = substr(node,2,1);
trace_type = $4;
flag = $5;
uid = $6;
pkt_type = $7;
pkt_size = $8;
send[uid]=0;recv[uid]=0;
if(event=="s" && node_==2 && trace_type="AGT" && pkt_type=="cbr")
sendx[uid] = 1;
if(event=="r" && node_==4 && trace_type="AGT" && pkt_type=="cbr")
recv[uid] = 1;
if(highest_uid < uid)
highest_uid = uid;
}
END {
id=1;
loss=0;
for(i=0;i<highest_uid;i++)
{
xx = sendx[i];
yy = recv[i];
if(xx==1 && yy==0)
loss++;
}
printf("allpacket: %d loss packet: %d\n",highest_uid,loss);
printf("%.6f\n",loss/highest_uid);
}
测吞吐量的
BEGIN {
init=0;
i=0;
}
{
#将out.tr文件的相应字段赋值给变量
action=$1;
time=$2;
from=$3;
to=$4;
type=$5;
pktsize=$6;
flow_id=$8;
src=$9;
dst=$10;
seq_no=$11;
packet_id=$12;
if (action=="r" && from==2 && to==3 && flow_id==2) {
pkt_byte_sum[i+1]=pkt_byte_sum[i]+pktsize;

if (init==0) {
start_time=time;
init=1;
}
end_time[i]=time;
i=i+1;
}
}
END {
#第一笔记录的Throughput设置为零, 以表示传输开始, 为了绘图的美观
printf("%.2f\t %.2f\n", end_time[0],0);

for (j=1; j<i; j++) {
#单位为 kbps
th=pkt_byte_sum[j]/(end_time[j] - start_time) *8/1000;
printf("%.2f\t%.2f\n", end_time[j], th);
}

#最后一笔记录的Throughput设置为零, 以表示传输结束, 为了绘图的美观
printf("%.2f\t%.2f\n", end_time[i-1],0);
}
PS:建议去看一下柯老师那本书,讲的很详细的,或者是黄化吉的NS网络模拟和协议仿真,里面都有教awk怎么写,也把trace格式讲的很详细

热点内容
网卡了的原因 发布:2021-03-16 21:18:20 浏览:602
联通客服工作怎么样 发布:2021-03-16 21:17:49 浏览:218
路由器画图 发布:2021-03-16 21:17:21 浏览:403
大网卡收费 发布:2021-03-16 21:16:50 浏览:113
路由器免费送 发布:2021-03-16 21:16:19 浏览:985
孝昌营业厅 发布:2021-03-16 21:15:54 浏览:861
网速增速代码 发布:2021-03-16 21:15:29 浏览:194
怎么黑光纤 发布:2021-03-16 21:14:54 浏览:901
端口增大 发布:2021-03-16 21:14:20 浏览:709
开机没信号是什么原因 发布:2021-03-16 21:13:45 浏览:645