您的位置:首页 > 理论基础 > 计算机网络

NS2网络仿真环境的搭建和使用

2015-08-29 12:50 603 查看
一实验概述:

1学会安装和使用NS2;熟悉NS2的文档结构;掌握NS2的仿真环境、使用界面和操作方法。

2学会安装NS2仿真环境和配置。

3了解NS2的工作原理和程序组成。

4熟悉NS2中的脚本语言Tcl和Otcl

5学习分裂对象模型和TclCL

6NS的时间调度机制学习。

7学习节点,链路,定时器,代理和应用层等在NS2中的使用。

8学习nam的使用。

9案例分析,学习应用之前的知识搭建网络演示拓扑和完成发包实验。

 

二实验内容

运行example.tcl初步体验NS2网络仿真环境和nam的使用
      2学习OTcl脚本语言的基本语法与控制流程
proc test() { #一般过程的构造
set a 43 #定义a变量 ,并赋值43
set b 27 #定义b变量 ,并赋值27
set c [expr $a +$b] #定义c变量 ,并赋值a+b
set d [expr [expr $a-$b] * $c] #定义d变量
,并赋值(a-b)*c
for {set k 0} {$k < 10} {incr k} { #一个for循环过程
if ($k < 5} {
puts “k < 5 ,pow =[expr pow ($d,$k)] #输出”k<5,pow=d^k”
else {
puts “k>5 ,mod=[expr $d % $ k]” #输出”k>5,pow=d%k”
         }
    }
}
输出结果
3学习OTcl脚本语言的面向对象的语言特性
输出结果
4 Trace 分析
cat out.tr |grep "2.3 cbr"|grep ^r| column 1 10 |
#处理数据,将数据记录到jitter.txt文件中
awk '{diff =$2-old2; if (diff==0 )diff =1 ;if(diff>0){
printf("%d\t%f\n,$2,($1-old1)/diff);old1=$1;
old2=$2}}]>jitter.txt
cat out.tr |grep "2.3 cbr"|grep ^r|
awk '{diff =$11-old11; if (diff==0 )diff =1 ;if(diff>0){
printf("%d\t%f\n,$11,($11-old11)/diff);old2=$2;
old11=$11}}]>jitter.txt
#作图命令
gunplot
输出

5完整体验
set ns [new Simulator] #新建一个ns模拟器

set node_(s1) [$ns node] #定义多个节点

set node_(s2) [$ns node]

set node_(s3) [$ns node]

set node_(s4) [$ns node]

set node_(r1) [$ns node]

set node_(r2) [$ns node]

 

$ns duplex-link node_(s1) $node_(r1) 10Mb 2ms DropTail

#定义s1与r1之间带宽10Mb时延2ms,丢包方式DropTail

$ns duplex-linktail node_(s2) $node_(r1) 10Mb 3ms DropTail

$ns duplex-link node_(r1) $node_(r2) 1.5Mb 2ms RED

$ns queue-limit node_(r1) $node_(r2) 25 #队列最大长度25

$ns queue-limit node_(r2) $node_(r1) 25

$ns duplex-link node_(s3) $node_(r2) 10Mb 4ms DropTail

$ns duplex-link node_(s4) $node_(r2) 10mb 5ms DropTail

#对于TCP变量使用痕迹跟踪

Set tcp1 [$ns create-connection TCP/Reno $node_(s1) TCPSink $node_(s3) 0]

# s1 与s3结点建立tcp连接

$tcp1 window_ 15

Set tcp2 [$ns create-connection TCP/Reno $node_(s1) TCPSink $node_(s3) 1]

$tcp2 window_15

set ftp1 {$tcp1 attach-source FTP}

set ftp2 {$tcp2 attach-source FTP}

#跟踪队列

set redq [[$ns link $node_(r1) $node_(r2) ] queue]

set tchan_ [open all.q w] #打开 可写文件all.q

$redq trace curq

$redq trace ave_

$redq attach $tchan_ #将 踪迹写入all.q文件

 

$ns at 0.0 “$ftp1 start” #定义ns模拟器的开始与结束时间

$ns at 0.0 “$ftp2 start”

$ns at 10 “finish”

proc finish {} { #构建finish方法

tchan_

awkCode{

{

if ($1==”0” &&NF>2) {

print $2,$3 >> ”temp.q”;

}

else if ($1 ==”a” && NF>2) {

print $2,$3 >> “temp.a”;

}

set f [open temp.queue w] #打开可写文件temp.queue

puts $f “TitleText: red”

puts $f “Device

ostscript”

if { info [exists tchan_ ] } {

close $tchan_

}

 

exec rm -f temp.q temp.a #执行Linux下shell脚本作图

Exec touch temp.a temp.q

 

exec awk $awkCode all.q

puts $f \”queue

exec cat temp.q >@ $f

puts $f \n\”ave_queue

puts cat temp.a >@ $f

close $f

exec xgraph -bb -tk -x time -y queue temp.queue

exit 0

}

$ns run

 

三实验总结

在如今这个信息化时代,网络几乎无处不在。他已经延伸到社会、经济、安全的每一个角落,影响着生活的方方面面。所以对网络环境的模拟是很有必要的。

1 首先,我学会了NS2网络仿真平台的基本使用。NS2是使用OTcl和C++两种编程语言、面向对象的、离散时间驱动的网络环境模拟器,提供了在无线或有线网络上的TCP、路由、多播等多种协议的模拟。

2了解了OTcl脚本语言,能够写较为简单的TCL语句。并能够使用nam演示仿真过程使之能更清晰,形象了解数据传输。

3对trace分析,并用Linux基本命令处理数据,并画图

4其次拓宽了视野,我对网络概念有了更深的理解,对于TCP/IP,UDP,

FTP 等报文传输方式有了感性的认识

5对于科学研究的方法与步骤有了初步的了解,学会了科学思维方式对于科研的重要性

6对科学研究产生了浓厚的兴趣,促进了我的学习积极性
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: