网络协议模拟分析

西安邮电大学

(计算机学院)

课程设计报告

题目:网络协议模拟与分析

专业名称:

班级:

学生姓名:

学号(8位):

指导教师:

设计起止时间:2014年12月15日—2014年12月26日

网络协议分析与仿真课程设计报告

网络模拟

一、 课程设计目的

掌握网络模拟工具NS2的使用,学习基本的网络模拟方法。

二、 课程设计内容

协议模拟

? 工具:NS2,awk ,shell ,perl 等;

? 要求:掌握NS2网络模拟的基本流程;

? 内容:NS2网络模拟基本流程

编写TCL 脚本,搭建如下图所示的一个网络,共6个节点,其中2、3节点用做ftp 服务器和客户端,4、5节点用做cbr 流量的源和目的,而0、1节点用做转发设备。各节点间的链路属性见图。

01245

3ftp

cbr null packet size = 1kbytes,

rate=1Mbps 2mbps, 20ms

1.5mbps, 10ms

1.5mbps, 10ms

1.5mbps, 10ms 1.5mbps, 10ms

模拟时间设为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] /模拟器对象赋值给变量ns

#Define different colors for data flows (for NAM)

$ns color 1 Red

$ns color 2 Yellow /给NAM定义不同的数据流,颜色的选择比较随意,只要易于区分就可以

#Open the NAM trace file

set nf [open out.nam w] /打开out.nam文件,一般都是在执行程序的时候自动生成的

$ns namtrace-all $nf

#Open the Trace file

set tf [open out.tr w] /打开out.tr文件,也是自动生成的

$ns trace-all $tf

/两个文件主要都是用来记录封包传输过程的

#Define a 'finish' procedure /定义finish程序,在后面执行的时候会用到proc finish {} {

global ns nf tf

$ns flush-trace

close $nf /关闭nam文件

close $tf /关闭trace 文件(在后面调用的时候,是在程序结束的时候,所以前面生成的两个文件必须要关闭)

exec nam out.nam & #以后台方式执行nam

exit 0

}

#Create six nodes /创建六个节点,从n0到n5

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 $n1 $n3 1.5Mb 10ms DropTail

$ns duplex-link $n1 $n5 1.5Mb 10ms DropTail

$ns duplex-link $n1 $n0 2Mb 20ms DropTail

#Give node position (for NAM) /根据题目图示要求,给NAM创建的节点位置如下

$ns duplex-link-op $n2 $n0 orient right-down

$ns duplex-link-op $n4 $n0 orient right-up

$ns duplex-link-op $n0 $n1 orient right

$ns duplex-link-op $n0 $n1 orient right

$ns duplex-link-op $n1 $n3 orient right-up

$ns duplex-link-op $n1 $n5 orient right-down

#Set Queue Size of link (n0-n1) to 10 /设置n0到n1之间的列长度$ns queue-limit $n1 $n0 10

#Setup a TCP connection /建立TCP连接

set tcp [new Agent/TCP]

$tcp set class_ 2

$ns attach-agent $n2 $tcp

set sink [new Agent/TCPSink]

$ns attach-agent $n3 $sink

$ns connect $tcp $sink

$tcp set fid_ 1 /NAM中,TCP的连接用红色的数据流表示

#Setup a UDP connection /建立UDP连接

set udp [new Agent/UDP]

$ns attach-agent $n4 $udp

set null [new Agent/Null]

$ns attach-agent $n3 $null

set null [new Agent/Null]

$ns attach-agent $n5 $null

$ns connect $udp $null

$udp set fid_ 2 /NAM中,UDP的连接用黄色的数据流表示

//TCP与UDP的建立中,agent是一个代理,用来作为网络层的传输与接收

#Setup a FTP over TCP connection /在TCP连接上建立FTP

set ftp [new Application/FTP]

$ftp attach-agent $tcp

$ftp set type_ FTP

#Setup a CBR over UDP connection /在UDP连接上建立CBR

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 /设置了cbr流量的包类型,字节大小,以及传输速率

#Schedule events for the CBR and FTP agents /设置FTP和CBR起止时间

$ns at 0.1 "$cbr start" /0.1秒产生cbr流量

$ns at 1.0 "$ftp start" /1.0秒发送ftp流量

$ns at 8.0 "$ftp stop" /8.0秒ftp流量结束

$ns at 12.0 "$cbr stop" /12.0秒cbr流量结束

#Call the finish procedure after 13 seconds of simulation time /13秒后调用前面写出的finish程序

$ns at 13.0 "finish"

#Run the simulation /执行模拟器程序

$ns run

2.仿真过程示意(动画截图1个)

3.日志分析脚本设计(设计思路与代码、注解)

相关文档
最新文档