赞
踩
NS 基本概念
节点(node):相当于一个主机
代理(agent):相当于协议
应用(application):相当于应用程序
使用NS模拟网络时,需要先定义相关的节点set no [$ns node],然后定义节点间的链路带宽:$ns duplex-link $n0 $n1 1Mb 1ms DropTail
发送数据就是在指定的协议上用指定的应用程序发送,这和网络上计算机之间通信很像<p>sample:</p>
# The preamble
set ns [new Simulator] # initialise the simulation;
# Predefine tracing
set f [open out.tr w]
$ns trace-all $f
set nf [open out.nam w]
$ns namtrace-all $nf
\clearpage
# so, we lied. now, we define the topology
#
# n0
# \bs
# 5Mb \bs
# 2ms \bs
# \bs
# n2 --------- n3
# / 1.5Mb
# 5Mb / 10ms
# 2ms /
# /
# n1
#
set n0 [$ns node]
set n1 [$ns node]
set n2 [$ns node]
set n3 [$ns node]
$ns duplex-link $n0 $n2 5Mb 2ms DropTail
$ns duplex-link $n1 $n2 5Mb 2ms DropTail
$ns duplex-link $n2 $n3 1.5Mb 10ms DropTail
# Some agents.
set udp0 [new Agent/UDP] # A UDP agent;
$ns attach-agent $n0 $udp0 # on node $n0;
set cbr0 [new Application/Traffic/CBR] # A CBR traffic generator agent;
$cbr0 attach-agent $udp0 # attached to the UDP agent;
$udp0 set class_ 0 # actually, the default, but\ldots;
set null0 [new Agent/Null] # Its sink;
$ns attach-agent $n3 $null0 # on node $n3;
$ns connect $udp0 $null0
$ns at 1.0 "$cbr0 start"
puts [$cbr0 set packetSize_]
puts [$cbr0 set interval_]
# A FTP over TCP/Tahoe from $n1 to $n3, flowid 2
set tcp [new Agent/TCP]
$tcp set class_ 1
$ns attach-agent $n1 $tcp
set sink [new Agent/TCPSink]
$ns attach-agent $n3 $sink
set ftp [new Application/FTP] # TCP does not generate its own traffic;
$ftp attach-agent $tcp
$ns at 1.2 "$ftp start"
$ns connect $tcp $sink
$ns at 1.35 "$ns detach-agent $n0 $tcp ; $ns detach-agent $n3 $sink"
\clearpage
# The simulation runs for \(3s\).
# The simulation comes to an end when the scheduler invokes the finish{} procedure below.
# This procedure closes all trace files, and invokes nam visualization on one of the trace files.
$ns at 3.0 "finish"
proc finish {} {
global ns f nf
$ns flush-trace
close $f
close $nf
puts "running nam..."
exec nam out.nam &
exit 0
}
# Finally, start the simulation.
$ns run
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。