搜档网
当前位置:搜档网 › NS2网络模拟

NS2网络模拟

NS2网络模拟
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

$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脚本对运算的处理比较麻烦,语法控制要

求很严格

相关主题