NS2网络模拟
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
网络协议分析与仿真课程设计报告
网络模拟
一、课程设计目的
掌握网络模拟工具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
$ns connect $udp $null
$udp set fid_ 2
#Setup a FTP over TCP connection
set ftp [new Application/FTP]
$ftp attach-agent $tcp
$ftp set type_ FTP
#Setup a CBR over UDP connection
set cbr [new Application/Traffic/CBR]
$cbr attach-agent $udp
$cbr set type_ CBR
$cbr set packet_size_ 1000
$cbr set rate_ 1mb
$cbr set random_ false
#Schedule events for the CBR and FTP agents
$ns at 0.1 "$cbr start"
$ns at 1.0 "$ftp start"
$ns at 8.0 "$ftp stop"
$ns at 12.0 "$cbr stop"
#Call the finish procedure after 5 seconds of simulation time $ns at 13.0 "finish"
#Run the simulation
$ns run
2.仿真过程示意(动画截图1个)
3.日志分析脚本设计(设计思路与代码、注解)
#!/bin/bash
time=0 #记录时间
byte=0 #记录字节数
pack=0 #记录包数
flag=0 #判断是否间隔0.5秒的标志
i=0.5 #以0.5单位递增
#将out.tr 文件中包含“0 1 cbr +”字符的行取出,并且以空格为分解符取出第二第六块数据,逐行读取到line变量中
cat out.tr | grep "0 1 cbr" | grep "+" | cut -d' ' -f 2,6 | while read line do
time=${line% *} #赋予时间
byte=$(($byte+${line#* })) #统计字节和
pack=$(($pack+1)) #统计总的包数
flag=`echo "$time>$i" | bc` #判断是否间隔了0.5秒
if [ $flag -eq "1" ]
then
echo $pack $byte >> log1.txt #将结果写入到日志文件中
pack=0
byte=0
i=`echo "$i + 0.5" | bc`
fi
done
4.分析结果展示(通过自绘图来说明)
四、设计技巧及体会
1、通过本次设计我们掌握了ns2软件的基本使用方法,对课堂上学到的
网络知识有了一个实际的认识,不足之处是我们对shell脚本的编写不够熟练,以后要加强这方面的练习。
2、通过本次设计还发现,shell脚本对运算的处理比较麻烦,语法控制要
求很严格。