# This example demonstrates multihoming. Two SCTP endpoints, each # with 2 interfaces, are directly connected between each pair of # interfaces. In the middle of the association, a change primary # is done. Running nam helps to visualize the multihomed # architecture. # # host0_if0 O===========O host1_if0 # / \ # host0_core O O host1_core # \ / # host0_if1 O===========O host1_if1
Trace set show\_sctphdr\_ 1 set ns [new Simulator] set nf [open sctp.nam w] \$ns namtrace-all \$nf set allchan [open all.tr w] \$ns trace-all \$allchan proc finish {} { exec nam sctp.nam & exit 0 } set host0\_core [\$ns node] set host0\_if0 [\$ns node] set host0\_if1 [\$ns node] \$host0\_core color Red \$host0\_if0 color Red \$host0\_if1 color Red \$ns multihome-add-interface \$host0\_core \$host0\_if0 \$ns multihome-add-interface \$host0\_core \$host0\_if1 set host1\_core [\$ns node] set host1\_if0 [\$ns node] set host1\_if1 [\$ns node] \$host1\_core color Blue \$host1\_if0 color Blue \$host1\_if1 color Blue \$ns multihome-add-interface \$host1\_core \$host1\_if0 \$ns multihome-add-interface \$host1\_core \$host1\_if1 \$ns duplex-link \$host0\_if0 \$host1\_if0 .5Mb 200ms DropTail \$ns duplex-link \$host0\_if1 \$host1\_if1 .5Mb 200ms DropTail set sctp0 [new Agent/SCTP] \$ns multihome-attach-agent \$host0\_core \$sctp0 set trace\_ch [open trace.sctp w] \$sctp0 set trace\_all\_ 1 # print all on a single trace event; \$sctp0 trace rto\_ \$sctp0 trace errorCount\_ \$sctp0 attach \$trace\_ch set sctp1 [new Agent/SCTP] \$ns multihome-attach-agent \$host1\_core \$sctp1 \$ns connect \$sctp0 \$sctp1 set ftp0 [new Application/FTP] \$ftp0 attach-agent \$sctp0 \$sctp0 set-primary-destination \$host1\_if0 # set primary before association starts; \$ns at 7.5 "\$sctp0 set-primary-destination \$host1\_if1" # change primary; \$ns at 7.5 "\$sctp0 print cwnd\_" # print all dests' cwnds at time 7.5; \$ns at 0.5 "\$ftp0 start" \$ns at 9.5 "\$ftp0 stop" \$ns at 10.0 "finish" \$ns run