📄 pim-sm.tcl
字号:
#initialise the simulator
set ns [ new Simulator -multicast on ]
set group1 [ Node allocaddr ]
#create the tracef file
set tracefd [ open mcast-pim-sm.tr w ]
$ns trace-all $tracefd
set namtracefd [ open mcast-pim-sm.nam w ]
$ns namtrace-all $namtracefd
proc finish { } {
global ns tracefd namtracefd
$ns flush-trace
close $tracefd
close $namtracefd
exec nam mcast-pim-sm.nam &
exit 0
}
#create network topology
for { set i 0 } { $i < 20 } { incr i } {
set n($i) [ $ns node ]
}
$ns duplex-link $n(0) $n(1) 10M 10ms DropTail
$ns duplex-link $n(0) $n(2) 10M 10ms DropTail
$ns duplex-link $n(0) $n(7) 10M 10ms DropTail
$ns duplex-link $n(0) $n(11) 10M 10ms DropTail
$ns duplex-link $n(0) $n(14) 10M 10ms DropTail
$ns duplex-link $n(1) $n(15) 10M 10ms DropTail
$ns duplex-link $n(1) $n(19) 10M 10ms DropTail
$ns duplex-link $n(15) $n(18) 10M 10ms DropTail
$ns duplex-link $n(15) $n(16) 10M 10ms DropTail
$ns duplex-link $n(2) $n(4) 10M 10ms DropTail
$ns duplex-link $n(2) $n(3) 10M 10ms DropTail
$ns duplex-link $n(4) $n(5) 10M 10ms DropTail
$ns duplex-link $n(3) $n(5) 10M 10ms DropTail
$ns duplex-link $n(5) $n(6) 10M 10ms DropTail
$ns duplex-link $n(7) $n(9) 10M 10ms DropTail
$ns duplex-link $n(7) $n(8) 10M 10ms DropTail
$ns duplex-link $n(8) $n(10) 10M 10ms DropTail
$ns duplex-link $n(9) $n(10) 10M 10ms DropTail
$ns duplex-link $n(11) $n(12) 10M 10ms DropTail
$ns duplex-link $n(11) $n(13) 10M 10ms DropTail
$ns duplex-link $n(16) $n(17) 10M 10ms DropTail
$ns duplex-link $n(17) $n(18) 10M 10ms DropTail$ns duplex-link-op $n(0) $n(2) orient left$ns duplex-link-op $n(0) $n(14) orient up$ns duplex-link-op $n(0) $n(11) orient right$ns duplex-link-op $n(0) $n(7) orient left-down$ns duplex-link-op $n(0) $n(1) orient right-down$ns duplex-link-op $n(2) $n(3) orient up$ns duplex-link-op $n(2) $n(4) orient left$ns duplex-link-op $n(4) $n(5) orient up$ns duplex-link-op $n(3) $n(5) orient left$ns duplex-link-op $n(5) $n(6) orient left-up$ns duplex-link-op $n(11) $n(12) orient up$ns duplex-link-op $n(11) $n(13) orient right-up$ns duplex-link-op $n(7) $n(8) orient left-down$ns duplex-link-op $n(7) $n(9) orient right-down$ns duplex-link-op $n(8) $n(10) orient right-down$ns duplex-link-op $n(9) $n(10) orient left-down$ns duplex-link-op $n(1) $n(19) orient right$ns duplex-link-op $n(1) $n(15) orient right-down$ns duplex-link-op $n(15) $n(18) orient right$ns duplex-link-op $n(15) $n(16) orient down$ns duplex-link-op $n(18) $n(17) orient down$ns duplex-link-op $n(16) $n(17) orient right
#set the multicast routing
#set mproto DM ;# set multicast protocol.#set mrthandle [$ns mrtproto $mproto] ;# return a handle to the multicast protocol object.#$mproto set CacheMissMode pimdm ;# set PimDm protocol active.
$ns mrtproto BST ;#set the RP
BST set RP_($group1) $n(0)
#create agent and cbr
set udp1 [ new Agent/UDP ]
$ns attach-agent $n(10) $udp1
$udp1 set dst_addr_ $group1
$udp1 set dst_port_ 0
set cbr1 [ new Application/Traffic/CBR ]
$cbr1 set packetSize_ 210
$cbr1 set rate_ 448k
$cbr1 attach-agent $udp1
set rcvr1 [new Agent/LossMonitor]
$ns attach-agent $n(4) $rcvr1
set rcvr2 [new Agent/LossMonitor]
$ns attach-agent $n(5) $rcvr2
set rcvr3 [new Agent/LossMonitor]
$ns attach-agent $n(11) $rcvr3
set rcvr4 [new Agent/LossMonitor]
$ns attach-agent $n(12) $rcvr4
set rcvr5 [new Agent/LossMonitor]
$ns attach-agent $n(15) $rcvr5
set rcvr6 [new Agent/LossMonitor]
$ns attach-agent $n(16) $rcvr6
#create five events
$ns at 1.0 "$cbr1 start"
$ns at 1.0 "$n(10) color yellow" ;#set color to show the sender.
$ns at 1.5 "$n(4) join-group $rcvr1 $group1"
$ns at 1.5 "$n(4) color purple" ;#set color to show a member.
$ns at 2.0 "$n(5) join-group $rcvr2 $group1"
$ns at 2.0 "$n(5) color purple" ;#set color to show a member.
$ns at 2.5 "$n(11) join-group $rcvr3 $group1"
$ns at 2.5 "$n(11) color purple" ;#set color to show a member.
$ns at 3.0 "$n(12) join-group $rcvr4 $group1"
$ns at 3.0 "$n(12) color purple" ;#set color to show a member.
$ns at 3.5 "$n(15) join-group $rcvr5 $group1"
$ns at 3.5 "$n(15) color purple" ;#set color to show a member.
$ns at 4.0 "$n(16) join-group $rcvr6 $group1"
$ns at 4.0 "$n(16) color purple" ;#set color to show a member.$ns at 5.0 "$n(5) leave-group $rcvr2 $group1"$ns at 5.0 "$n(5) color black" ;#set color back to black.$ns at 5.5 "$n(4) leave-group $rcvr1 $group1"$ns at 5.5 "$n(4) color black" ;#set color back to black.$ns at 6.0 "$n(11) leave-group $rcvr3 $group1"$ns at 6.0 "$n(11) color black" ;#set color back to black.$ns at 6.5 "$n(16) leave-group $rcvr6 $group1"$ns at 6.5 "$n(16) color black" ;#set color back to black.$ns at 7.0 "$n(12) leave-group $rcvr4 $group1"$ns at 7.0 "$n(12) color black" ;#set color back to black.$ns at 7.5 "$n(15) leave-group $rcvr5 $group1"$ns at 7.5 "$n(15) color black" ;#set color back to black.
$ns at 8.0 "$cbr1 stop"
$ns at 8.0 "$n(10) color black" ;#set solor back to black
$ns at 8.5 "finish"
$ns run
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -