⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pim-sm.tcl

📁 这是关于ns2学习的资料
💻 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 + -