Chinaunix首页 | 论坛 | 博客
  • 博客访问: 844857
  • 博文数量: 180
  • 博客积分: 10029
  • 博客等级: 上将
  • 技术积分: 2185
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-06 09:15
文章存档

2010年(133)

2009年(47)

我的朋友

分类: 系统运维

2009-11-06 13:26:57

E-mail:
 
 关于NS2的网络仿真原理, 请看 NS2中文教材(1):NS2网络模拟的原理 
 
   以下实例,主要是为了演示动态路由协议的效果!
   学习的知识点:
       1. 如何利用控制语句高效地创建环形拓扑结构,并且添加连接和应用!
       2. DV路由协议, 以及如何设定有线环境的路由协议!
     
   实例5:
 

#场景描述:
#  关键点: DV动态路由协议的演示
#  拓扑结构: 七节点组成环形的网络
#  为观察DV的作用,故意设置了连接的断开和恢复!
set ns [new Simulator]

#告知simulator使用dynamic routing
$ns rtproto DV
set nf [open out.nam w]
$ns namtrace-all $nf

proc finish {} {
        global ns nf
        $ns flush-trace
        close $nf
        exec nam out.nam &
        exit 0
}

#以下代码,创建了七个节点,保存在数组 n 中
for {set i 0} {$i < 7} {incr i} {
        set n($i) [$ns node]
}
#创建节点间的链接,形成环形拓扑结构
for {set i 0} {$i < 7} {incr i} {
        $ns duplex-link $n($i) $n([expr ($i+1)%7]) 1Mb 10ms DropTail
}

#UDP agent and attach it to node n(0)
set udp0 [new Agent/UDP]
$ns attach-agent $n(0) $udp0
#CBR traffic source and attach it to udp0
set cbr0 [new Application/Traffic/CBR]
$cbr0 set packetSize_ 500
$cbr0 set interval_ 0.005
$cbr0 attach-agent $udp0
#Null agent (a traffic sink) and attach it to node n(3)
set null0 [new Agent/Null]
$ns attach-agent $n(3) $null0
#Connect the traffic source with the traffic sink
$ns connect $udp0 $null0 
#Schedule events for the CBR agent and the network dynamics
$ns at 0.5 "$cbr0 start"


#有意的设置:断开连接,再恢复连接,从而观察DV的效果
$ns rtmodel-at 1.0 down $n(1) $n(2)
$ns rtmodel-at 2.0 up $n(1) $n(2)
$ns at 4.5 "$cbr0 stop"
#Call the finish procedure after 5 seconds of simulation time
$ns at 5.0 "finish"
$ns run

 
运行的效果图:
                (初识运行状态)
 
节点n1 和 n2 之间的连接断开后的情况:
DV路由的效果:
恢复节点1和2之间的连接之后:
 
场景中DV协议的分析:(有待完善!)
 
E-mail:
 
阅读(3915) | 评论(1) | 转发(2) |
给主人留下些什么吧!~~

chinaunix网友2010-05-17 15:07:54

麻烦请教一下,你给的这个程序我调不出来啊,$n([expr ($i+1)%7]) 老出错啊,能帮忙看看吗?