数据通信实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电子科技大学
实验报告
实验一
NS2的基础使用
NS2是一种提供虚拟环境进行网络模拟仿真,能验证网络性能的正确性和进行相关性能测试的软件。
一、实验环境:
Ubuntu 12.04/kernel 3.5
GCC 4.6.3
NS-2.33
二、网络拓扑:
实验共有6个节点,每个节点的连接情况如图所示。其中节点N0、N2和节点N1、N2连接,N3、N4和N4、N5连接,N2和N3连接。从0号节点到2号节点,带宽为2Mb,延时为10ms。
三、实践步骤:
切换到用户根目录下cd ~
建立自己的文件夹mkdir your_document_name
进入刚刚新建的文件夹cd your_document_name
新建一个TCL 脚本文件gedit your_TCL_file_name.tcl
#Here is the beginning of this code file
set val(stop) 5.0 ;# 模拟器结束时间
#新建一个NS 模拟对象
set ns [new Simulator]
#打开NS 追踪文件
set tracefile [open out.tr w]
$ns trace-all $tracefile
#打开NAM 追踪文件
set namfile [open out.nam w]
$ns namtrace-all $namfile
#新建6 个节点
set n0 [$ns node]
set n1 [$ns node]
set n2 [$ns node]
set n3 [$ns node]
set n4 [$ns node]
set n5 [$ns node]
#建立节点之间的链路,格式解释如下
#duplex-link 双向链路可选选项(duplex-link,simple-link 单向链路)
#$n0 $n2 表明从0 号节点到2 号节点
#2.0Mb 申明链路传输速率,可使用Mb,Kb,b
#10ms 申明链路传输延迟
#DropTail 队列类型
$ns duplex-link $n0 $n2 2.0Mb 10ms DropTail
#申明链路队列长度
$ns queue-limit $n0 $n2 10
$ns duplex-link $n1 $n2 2.0Mb 10ms DropTail
$ns queue-limit $n1 $n2 10
$ns duplex-link $n4 $n3 2.0Mb 10ms DropTail
$ns queue-limit $n4 $n3 10
$ns duplex-link $n3 $n2 1.0Mb 20ms DropTail
$ns queue-limit $n3 $n2 10
$ns duplex-link $n3 $n5 2.0Mb 10ms DropTail
$ns queue-limit $n3 $n5 10
#为NAM 创建节点位置描述,以第一个为例,2 号节点在0 号节点的右下方
$ns duplex-link-op $n0 $n2 orient right-down
$ns duplex-link-op $n1 $n2 orient right-up
$ns duplex-link-op $n4 $n3 orient left-down
$ns duplex-link-op $n3 $n2 orient left
$ns duplex-link-op $n3 $n5 orient right-down
#新建一个UDP 连接
set udp0 [new Agent/UDP]
#将0 号节点Agent/UDP 绑定,以下类似
$ns attach-agent $n0 $udp0
set null2 [new Agent/Null]
$ns attach-agent $n4 $null2
#将Agent/UDP 及Agent/Null 节点进行连接
$ns connect $udp0 $null2
#设置Agent/UDP 包大小
$udp0 set packetSize_ 1500
#新建另一个UDP 连接
set udp1 [new Agent/UDP]
$ns attach-agent $n1 $udp1
set null3 [new Agent/Null]
$ns attach-agent $n5 $null3
$ns connect $udp1 $null3
$udp1 set packetSize_ 1500
#在UDP 连接上新建一个CBR 应用
set cbr0 [new Application/Traffic/CBR]
$cbr0 attach-agent $udp0
$cbr0 set packetSize_ 1500
$cbr0 set rate_ 1.0Mb
$cbr0 set random_ null
#在第1 秒,$cbr0 服务开始发送
$ns at 1.0 "$cbr0 start"
#在第4 秒,$cbr0 服务停止发送
$ns at 4.0 "$cbr0 stop"
#在UDP 连接上新建一个CBR 应用
set cbr1 [new Application/Traffic/CBR]
$cbr1 attach-agent $udp1
$cbr1 set packetSize_ 1500
$cbr1 set rate_ 1.0Mb
$cbr1 set random_ null
$ns at 2.0 "$cbr1 start"
$ns at 3.0 "$cbr1 stop"
#定义一个'finish'过程用以处理模拟结束之后需要完成的动作proc finish {} {
#申明使用外部变量
global ns tracefile namfile val
$ns at $val(stop) "$ns nam-end-wireless $val(stop)"
#清空追踪区域
$ns flush-trace
#关闭trace 文件
close $tracefile
#关系nam 文件
close $namfile
#执行系统命令nam out.nam
exec nam out.nam &
exit 0
}
#在val(stop)时间调用finish 过程
$ns at $val(stop) "finish"
$ns at $val(stop) "puts \"done\" ; $ns halt"