[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[ns] session-multicast help
Hi, all:
I run a simple session -multicast program as below, although
Agent/LossMonitor can tell the number of lost packets, the trace file has
only E(enqueue), D(dequeue), no P(session drop events). Also in nam, every
receiver drops packet up(the direction), strange!
the below example is abstracted from test-suite-session.tcl.
thank you for any hints.
Sencun
----------------------------------------
Test one session on a six node topology with inserted errors
n0
/ \
n1 n2
/ \ / \
n3 n4 n5
All links are of 1.5Mbps bandwidth with 10ms latency
--------------------------------------------------------------------------
set ns_ [new SessionSim]
set grp0 [Node allocaddr]
set f [open out.tr w]
$ns_ trace-all $f
set nf [open out.nam w]
$ns_ namtrace-all $nf
set node_(n0) [$ns_ node]
set node_(n1) [$ns_ node]
set node_(n2) [$ns_ node]
set node_(n3) [$ns_ node]
set node_(n4) [$ns_ node]
set node_(n5) [$ns_ node]
$ns_ duplex-link $node_(n0) $node_(n1) 1.5Mb 10ms DropTail
$ns_ duplex-link $node_(n0) $node_(n2) 1.5Mb 10ms DropTail
$ns_ duplex-link $node_(n1) $node_(n3) 1.5Mb 10ms DropTail
$ns_ duplex-link $node_(n1) $node_(n4) 1.5Mb 10ms DropTail
$ns_ duplex-link $node_(n2) $node_(n4) 1.5Mb 10ms DropTail
$ns_ duplex-link $node_(n2) $node_(n5) 1.5Mb 10ms DropTail
set udp0 [new Agent/UDP]
$udp0 set ttl_ 3
$ns_ attach-agent $node_(n0) $udp0
$udp0 set dst_addr_ $grp0
$udp0 set dst_port_ 0
set cbr0 [new Application/Traffic/CBR]
$cbr0 attach-agent $udp0
set sessionhelper [$ns_ create-session $node_(n0) $udp0]
set rcvr0 [new Agent/LossMonitor]
set rcvr1 [new Agent/LossMonitor]
set rcvr2 [new Agent/LossMonitor]
set rcvr3 [new Agent/LossMonitor]
set rcvr4 [new Agent/LossMonitor]
set rcvr5 [new Agent/LossMonitor]
$ns_ attach-agent $node_(n0) $rcvr0
$ns_ attach-agent $node_(n1) $rcvr1
$ns_ attach-agent $node_(n2) $rcvr2
$ns_ attach-agent $node_(n3) $rcvr3
$ns_ attach-agent $node_(n4) $rcvr4
$ns_ attach-agent $node_(n5) $rcvr5
$ns_ at 0.0 "$node_(n0) join-group $rcvr0 $grp0"
$ns_ at 0.0 "$node_(n1) join-group $rcvr1 $grp0"
$ns_ at 0.0 "$node_(n2) join-group $rcvr2 $grp0"
$ns_ at 0.0 "$node_(n3) join-group $rcvr3 $grp0"
$ns_ at 0.0 "$node_(n4) join-group $rcvr4 $grp0"
$ns_ at 0.0 "$node_(n5) join-group $rcvr5 $grp0"
set loss_module1 [new SelectErrorModel]
$loss_module1 drop-packet 2 20 1
$loss_module1 drop-target [$ns_ set nullAgent_]
set loss_module2 [new SelectErrorModel]
$loss_module2 drop-packet 2 10 1
$loss_module2 drop-target [$ns_ set nullAgent_]
set loss_module3 [new SelectErrorModel]
$loss_module3 drop-packet 2 10 1
$loss_module3 drop-target [$ns_ set nullAgent_]
$ns_ insert-loss $loss_module1 $node_(n0) $node_(n1)
$ns_ insert-loss $loss_module2 $node_(n1) $node_(n3)
$ns_ insert-loss $loss_module3 $node_(n0) $node_(n2)
proc finish args {
global ns_ f nf
$ns_ flush-trace
puts "\t#pkt\t#pkt"
puts "rcvr\trcvd\tlost"
set i 0
foreach index $args {
puts "$i\t[$index set npkts_]\t[$index set nlost_]"
incr i
}
# exec awk -f ../nam-demo/nstonam.awk all.tr > [append file \.tr]
puts "running nam ..."
exec nam out.nam &
close $f
close $nf
exit 0
}
$ns_ at 0.1 "$cbr0 start"
$ns_ at 1.6 "finish [list $rcvr0 $rcvr1 $rcvr2 $rcvr3 \
$rcvr4 $rcvr5]"
$ns_ run