# 场景描述: # 主要用于观察数据包在节点Agent上的排队和丢包情况 # 有线场景,四个节点,FTT+TCP用蓝色表示, CBR+UDP用红色表示 set ns [new Simulator] #设置颜色 $ns color 1 Blue $ns color 2 Red set tracefd [open out.tr w] $ns trace-all $tracefd set namtracefd [open out.nam w] $ns namtrace-all $namtracefd
proc finish {} { global ns tracefd namtracefd $ns flush-trace close $tracefd close $namtracefd exec nam out.nam & exit 0 } set n0 [$ns node] set n1 [$ns node] set n2 [$ns node] set n3 [$ns node]
$ns duplex-link $n0 $n2 2Mb 10ms DropTail $ns duplex-link $n1 $n2 2Mb 10ms DropTail $ns duplex-link $n2 $n3 1.7Mb 10ms DropTail $ns queue-limit $n2 $n3 10
#用于设置NAM显示时,各节点的相对位置 $ns duplex-link-op $n0 $n2 orient right-down $ns duplex-link-op $n1 $n2 orient right-up $ns duplex-link-op $n2 $n3 orient right $ns duplex-link-op $n2 $n3 queuePos 0.5
set tcp [new Agent/TCP] $tcp set class_ 2 $ns attach-agent $n0 $tcp
set sink [new Agent/TCPSink] $ns attach-agent $n3 $sink $ns connect $tcp $sink $tcp set fid_ 1
set ftp [new Application/FTP] $ftp attach-agent $tcp $ftp set type_ FTP
set udp [new Agent/UDP] $ns attach-agent $n1 $udp set null [new Agent/Null] $ns attach-agent $n3 $null $ns connect $udp $null $udp set fid_ 2
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
$ns at 0.5 "$cbr start" $ns at 1.0 "$ftp start" $ns at 4.0 "$ftp stop" $ns at 4.5 "$cbr stop"
#一下这一行可有可无! $ns at 4.5 "$ns detach-agent $n0 $tcp ; $ns detach-agent $n3 $sink" $ns at 5.0 "finish"
#会在命令窗口中输出, 因为默认的stdout是命令窗口啊! puts "CBR packet size=[$cbr set packet_size_]" puts "CBR interval=[$cbr set interval_]" $ns run
|