Multicast
Multicast
Multicast
1
Multicast 簡介
2
Multicast Routing
set ns [new Simulator]
$ns multicast
Or
set ns [new Simulator –multicast on]
3
Multicast Routing
all nodes will contain multicast protocol
agents
set mrthandle [$ns mrtproto $mproto]
allocating a multicast address
set group [Node allocaddr]
define an agent and as a multicast source for
the group
$udp1 set dst_addr_ $group
$udp1 set dst_port_ 0
4
Multicast Routing
create a receiver agent
set rcvr [new Agent/LossMonitor]
specify which nodes join the group and when
they want to join the group
$ns at 0.0 "$n1 join-group $rcvr $group"
make a node leave the group at a time
$ns at 1.6 "$n2 leave-group $rcvr $group"
5
Multicast:Step1
Scheduler , tracing , and topology
# Create scheduler
set ns [new Simulator]
# Turn on multicast
$ns multicast
# Turn on Tracing
set fd [new “mcast.nam” w]
$ns namtrace-all $fd
6
Multicast:Step2
Topology
# Create nodes
set n0 [$ns node]
set n1 [$ns node]
set n2 [$ns node]
set n3 [$ns node]
# Create links
$ns duplex-link $n0 $n1 1.5Mb 10ms DropTail
$ns duplex-link $n0 $n2 1.5Mb 10ms DropTail
$ns duplex-link $n0 $n3 1.5Mb 10ms DropTail
7
Multicast:Step3
Routing and group setup
# Routing protocol: let’s run distance vector
set mproto DM
# Allocate group addresses
set group1 [Node allocaddr]
set group2 [Node allocaddr]
8
Multicast:Step4
Sender0
# Transport agent for the traffic source
set udp0 [new Agent/UDP]
$ns attach-agent $n1 $udp0
$udp0 set dst_addr_ $group1
$udp0 set dst_port_ 0
# Constant Bit Rate source #0
set cbr0 [new Application/Traffic/CBR]
$cbr0 attach-agent $udp0
# Start at time 1.0 second
$ns at 1.0 "$cbr0 start"
9
Multicast:Step5
Sender1
# Transport agent for the traffic source
set udp1 [new Agent/UDP]
$ns attach-agent $n3 $udp1
$udp1 set dst_addr_ $group2
$udp1 set dst_port_ 0
# Constant Bit Rate source #0
set cbr1 [new Application/Traffic/CBR]
$cbr1 attach-agent $udp1
# Start at time 1.1 second
$ns at 1.1 "$cbr1 start"
10
Multicast:Step6
Receiver with dynamic membership
# Can also be Agent/Null
set rcvr [new Agent/LossMonitor]
# Assign it to node $n2
$ns at 1.2 "$n2 join-group $rcvr $group2"
$ns at 1.25 "$n2 leave-group $rcvr $group2"
$ns at 1.3 "$n2 join-group $rcvr $group2"
$ns at 1.35 "$n2 join-group $rcvr $group1"
11
Multicast:Step7
End-of-simulation wrapper (as usual)
$ns at 2.0 "finish"
proc finish {} {
global ns fd
close $fd
$ns flush-trace
puts "running nam..."
exec nam out.nam &
exit 0
}
$ns run
12
Web link for Multicastrouting
http://www.isi.edu/nsnam/ns/doc/
node338.html
13