模拟不会在确定的 10 秒内运行



此模拟设置为工作 10 秒,但在 FTP 应该开始发送数据包时停止在 4.5。 你能帮我修复它吗? 我已经使用 NS2 工作了 3 个小时。我现在是个菜鸟。

#Creating a simulator object
set ns [new Simulator]
global $ns
set traceFile [open output.tr w]
$ns trace-all $traceFile
set namFile [open output.nam w]
$ns namtrace-all $namFile
#Defining the finish procedure
proc finish {} {
global ns namFile traceFile fert
$ns flush-trace
close $namFile
close $traceFile
exec nam output.nam &
exit 0
}
set n0 [$ns node]
set n1 [$ns node]
set n2 [$ns node]
set n3 [$ns node]
set n4 [$ns node]
set n5 [$ns node]
set n6 [$ns node]
#for {set i 0} {$i<5} {incr i} {
#set n($i) [$ns node]
#}
#Creating the links
$ns duplex-link $n0 $n1 1Mb 20ms DropTail
$ns duplex-link $n0 $n2 1Mb 20ms DropTail
$ns duplex-link $n1 $n3 1Mb 20ms DropTail
$ns duplex-link $n2 $n3 1Mb 20ms DropTail
$ns duplex-link $n2 $n4 1Mb 20ms DropTail
$ns duplex-link $n2 $n6 1Mb 20ms DropTail
$ns duplex-link $n4 $n6 1Mb 20ms DropTail
$ns duplex-link $n4 $n5 1Mb 20ms DropTail
#Topology
$ns duplex-link-op $n0 $n1 orient down 
$ns duplex-link-op $n0 $n2 orient right  
$ns duplex-link-op $n1 $n3 orient right  
$ns duplex-link-op $n2 $n3 orient down 
$ns duplex-link-op $n2 $n4 orient right 
$ns duplex-link-op $n2 $n6 orient right-down
$ns duplex-link-op $n4 $n5 orient right-down 
$ns duplex-link-op $n4 $n6 orient down 
#Agents - Attach Agents - SInk and Null connetions
set udp0 [new Agent/UDP]
set tcp3 [new Agent/TCP]
set null4 [new Agent/Null]
set sink5 [new Agent/TCPSink]
$ns attach-agent $n0 $udp0
$ns attach-agent $n3 $tcp3
$ns attach-agent $n4 $null4
$ns connect $udp0 $null4
$ns connect $tcp3 $sink5

#CBR over UDP connection
set cbr0 [new Application/Traffic/CBR]
$cbr0 attach-agent $udp0
$cbr0 set type_ CBR
$cbr0 set packet_size_ 1500
$cbr0 set rate_ 830kb

#FTP over TCP connection
set ftp3 [new Application/FTP]
$ftp3 attach-agent $tcp3
$ftp3 set type_ FTP
#Queue Limit of n2-n4 and n4-n5
$ns queue-limit $n2 $n4 30
$ns queue-limit $n4 $n5 20
#Assigning a link variable for the link between n4 and n5

#Monitoring
set mon [open "mon.txt" w]
set qmon [$ns monitor-queue $n2 $n4 $mon 0.01]
[$ns link $n2 $n4] queue-sample-timeout
#set qmon24 [$ns monitor-queue $n2 $n4 "" 0.01]
#............................................
set link01 [$ns link $n2 $n3]
# Create monitor 
set fmonitor [$ns makeflowmon Fid]
$ns attach-fmon $link01 $fmonitor
set drop_count [$fmonitor set parrivals_]
#............................................
proc mon { } { 
global ns qmon 
set t [$ns now] 
puts "$t [$qmon set pkts_]" 
$ns at [expr $t + 0.5] "mon" 
}
#Link Down and Up at 5.0 and 7.0
$ns rtmodel-at 5.0 down $n2 $n4
$ns rtmodel-at 7.0 up $n2 $n4
#$ns rtproto LS
$ns at 0 "mon"
$ns color cbr "red"

$ns at 2.0 "$cbr0 start"
$ns at 4.5 "$ftp3 start"
$ns at 8.0 "$cbr0 stop"
$ns at 9.0 "$ftp3 stop"
$ns at 10.0 "finish"
$ns run

还有一个问题。什么是链接队列?我必须为我的项目监控两个节点之间的链接队列,但我不明白链接队列的概念!哦,还有一件事。Nam不会自动启动,我得到这个:

Classfier::no-slot{} default handler (tcl/lib/ns-lib.tcl( --- _o21:插槽4294967295没有目标 _o21类型:分类器/哈希/目标 内容转储: 分类器_o21 0 偏移量 0班 1073741823面膜 1 个插槽 插槽 3:_o196(分类器/端口( -1 默认值

Classfier::no-slot{} default handler

错误"Classfier::no-slot{} default handler .." 指示编码错误(或过于复杂的文件(。 除此之外,该错误还会导致模拟无法完成。

编辑:拥有"混合流量"的典型方法→ cbr,tcp,udp,ftp ...请参阅示例 https://www.dropbox.com/s/63ultpb20ugqlvf/new-A-ex.tar.gz?dl=0

原始修复:注释掉ftp条目后,模拟结束正常,NAM窗口打开。片段:

#FTP over TCP connection
#set ftp3 [new Application/FTP]     ;# edited
#$ftp3 attach-agent $tcp3           ;# edited
#$ftp3 set type_ FTP                ;# edited
.
#$ns at 4.5 "$ftp3 start"   ;# edited 
$ns at 8.0 "$cbr0 stop"
#$ns at 9.0 "$ftp3 stop"    ;# edited

模拟:

$ ns 3-no-ftp__2Aramesh.tcl
0 0
0.5 0
1 0
1.5 0
2 0
2.5 0
3 0
3.5 0
4 1
4.5 0
5 -4
5.5 -4
6 -4
6.5 -4
7 -4
7.5 -3
8 -4
8.5 -4
9 -4
9.5 -4

创建的文件: mon.txt 1001 行, output.nam 514.7kB, output.tr 203.7kB .

"链接队列" ns2 doc 49.2.2 https://www.isi.edu/nsnam/ns/doc/node634.html

注意:您设置的时间是最大时间。 如果模拟在两秒内完成,则任何时间设置都不会延长实际模拟时间。

最新更新