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

📄 bdflow.tcl

📁 CBRP协议(移动adhoc中基于分簇的路由协议)ns2下的源码
💻 TCL
字号:
source bdflow_h.tclsource Setred.v2.tcl#set flowfile fairflow.trset flowgraphfile fairflow.xgr#set highspeed_bw 10Mb#set bottleneck_bw 1.5Mbset highspeed_bw 670Mbset bottleneck_bw 100Mb#------------------------------------------------------------------## Create traffic.## highspeed_bw = 10Mb# bottleneck_bw = 1.5Mb#proc traffic {} {  global s1 s2 r1 r2 s3 s4  new_tcp 1.0 $s1 $s3 100 1 1 1000  new_tcp 4.2 $s2 $s4 100 2 0 50  new_cbr 18.4 $s1 $s4 190 0.003 3  new_tcp 65.4 $s1 $s4 4 4 0 2000  new_tcp 100.2 $s3 $s1 8 5 0 1000  new_tcp 122.6 $s1 $s4 4 6 0 512  new_tcp 135.0 $s4 $s2 100 7 0 1000  new_tcp 162.0 $s2 $s3 100 8 0 1000  new_tcp 220.0 $s1 $s3 100 9 0 512  new_tcp 260.0 $s3 $s2 100 10 0 512  new_cbr 310.0 $s2 $s4 190 0.1 11   new_tcp 320.0 $s1 $s4 100 12 0 512  new_tcp 350.0 $s1 $s3 100 13 0 512  new_tcp 370.0 $s3 $s2 100 14 0 512  new_tcp 390.0 $s2 $s3 100 15 0 512  new_tcp 420.0 $s2 $s4 100 16 0 512  new_tcp 440.0 $s2 $s4 100 17 0 512}proc random_tcps {start stop n src dst win id size} {    set maxrval [expr pow(2,31)]        for { set i 0 } { $i < $n } { incr i } {        set randomval [ns-random]        set rtmp [expr $randomval / $maxrval]        set start_time [expr $start + [expr $rtmp * [expr $stop - $start]]]	new_tcp $start_time $src $dst $win $id 0 $size	incr id    }}proc random_cbrs {start stop n src dst size int id} {    set maxrval [expr pow(2,31)]        for { set i 0 } { $i < $n } { incr i } {        set randomval [ns-random]        set rtmp [expr $randomval / $maxrval]        set start_time [expr $start + [expr $rtmp * [expr $stop - $start]]]	new_cbr $start_time $src $dst $size $int $id	incr id    }}# highspeed_bw = 10Mb# bottleneck_bw = 1.5Mb#proc traffic_LbwLcg {} {    global s1 s2 r1 r2 s3 s4    new_cbr 18.4 $s1 $s4 190 0.003 3    random_tcps 0.0 500.0 1 $s1 $s3 100 100 1500    random_tcps 250.0 500.0 1 $s2 $s4 100 101 1500    random_tcps 0.0 500.0 1 $s2 $s3 100 200 1000    random_tcps 0.0 500.0 1 $s1 $s3 100 300 512    random_tcps 250.0 500.0 1 $s2 $s3 100 301 512    random_tcps 0.0 500.0 1 $s4 $s1 100 302 512    random_cbrs 0.0 500.0 1 $s1 $s3 190 0.1 400}# highspeed_bw = 10Mb# bottleneck_bw = 1.5Mb# 38 flows#proc traffic_LbwHcg {} {    global s1 s2 r1 r2 s3 s4        new_cbr 18.4 $s1 $s4 190 0.003 3    random_tcps 0.0 500.0 3 $s1 $s3 100 100 1500    random_tcps 125.0 500.0 3 $s1 $s4 100 106 1500    random_tcps 250.0 500.0 3 $s2 $s3 100 112 1500    random_tcps 375.0 500.0 4 $s2 $s4 100 117 1500    random_tcps 0.0 500.0 1 $s3 $s1 100 122 1500    random_tcps 0.0 500.0 1 $s2 $s4 8 123 1500    random_tcps 0.0 500.0 1 $s1 $s3 100 200 1000    random_tcps 250.0 500.0 1 $s2 $s3 100 201 1000    random_tcps 0.0 500.0 1 $s3 $s1 100 202 1000    random_tcps 0.0 500.0 1 $s2 $s3 4 203 1000    random_tcps 0.0 500.0 1 $s1 $s3 100 300 512    random_tcps 150.0 500.0 1 $s2 $s3 100 301 512    random_tcps 0.0 500.0 1 $s4 $s1 100 304 512    random_tcps 0.0 500.0 1 $s3 $s1 8 306 512    random_cbrs 0.0 500.0 1 $s1 $s3 190 0.1 400    random_cbrs 0.0 500.0 1 $s4 $s2 190 0.1 401}# highspeed_bw = 670Mb# bottleneck_bw = 100Mb# 605 flows#proc traffic_HbwLcg {} {    global s1 s2 r1 r2 s3 s4    new_cbr 18.4 $s1 $s4 190 0.00006 3    random_tcps 0.0 500.0 2 $s1 $s3 100 100 4000    random_tcps 125.0 500.0 2 $s1 $s4 100 103 4000    random_tcps 250.0 500.0 2 $s2 $s3 100 106 4000    random_tcps 375.0 500.0 2 $s2 $s4 100 109 4000    random_tcps 0.0 500.0 3 $s1 $s3 100 200 2000    random_tcps 125.0 500.0 3 $s1 $s4 100 204 2000    random_tcps 250.0 500.0 3 $s2 $s3 100 208 2000    random_tcps 375.0 500.0 3 $s2 $s4 100 212 2000    random_tcps 0.0 500.0 80 $s1 $s3 100 300 1500    random_tcps 125.0 500.0 80 $s1 $s4 100 385 1500    random_tcps 250.0 500.0 80 $s2 $s3 100 465 1500    random_tcps 375.0 500.0 80 $s2 $s4 100 545 1500    random_tcps 0.0 500.0 10 $s3 $s1 100 625 1500    random_tcps 125.0 500.0 10 $s3 $s2 100 635 1500    random_tcps 250.0 500.0 10 $s4 $s1 100 645 1500    random_tcps 375.0 500.0 10 $s4 $s2 100 655 1500    random_tcps 0.0 500.0 2 $s1 $s3 8 665 1500    random_tcps 125.0 500.0 2 $s1 $s4 4 667 1500    random_tcps 250.0 500.0 2 $s2 $s3 8 669 1500    random_tcps 375.0 500.0 2 $s2 $s4 4 671 1500    random_tcps 0.0 500.0 10 $s1 $s3 100 700 1000    random_tcps 125.0 500.0 10 $s2 $s3 100 710 1000    random_tcps 250.0 500.0 10 $s1 $s4 100 720 1000    random_tcps 375.0 500.0 10 $s2 $s4 100 730 1000    random_tcps 0.0 500.0 4 $s3 $s1 100 740 1000    random_tcps 125.0 500.0 4 $s3 $s2 100 744 1000    random_tcps 250.0 500.0 4 $s4 $s1 100 748 1000    random_tcps 375.0 500.0 4 $s4 $s2 100 752 1000    random_tcps 0.0 500.0 2 $s1 $s3 4 756 1000    random_tcps 125.0 500.0 2 $s1 $s4 8 758 1000    random_tcps 250.0 500.0 2 $s2 $s3 4 760 1000    random_tcps 375.0 500.0 2 $s2 $s4 8 762 1000    random_tcps 0.0 500.0 20 $s1 $s3 100 800 512    random_tcps 125.0 500.0 20 $s1 $s4 100 820 512    random_tcps 250.0 500.0 20 $s2 $s3 100 840 512    random_tcps 375.0 500.0 20 $s2 $s4 100 860 512    random_tcps 0.0 500.0 6 $s3 $s1 100 880 512    random_tcps 125.0 500.0 6 $s3 $s2 100 886 512    random_tcps 250.0 500.0 6 $s4 $s1 100 892 512    random_tcps 375.0 500.0 6 $s4 $s2 100 898 512    random_tcps 0.0 500.0 2 $s1 $s3 8 914 512    random_tcps 125.0 500.0 2 $s1 $s4 8 916 512    random_tcps 250.0 500.0 2 $s2 $s3 4 918 512    random_tcps 375.0 500.0 2 $s2 $s4 4 920 512    random_cbrs 0.0 500.0 2 $s1 $s3 190 0.1 1000    random_cbrs 125.0 500.0 2 $s1 $s4 190 0.1 1002    random_cbrs 250.0 500.0 2 $s2 $s3 190 0.1 1004    random_cbrs 375.0 500.0 2 $s2 $s4 190 0.1 1006    random_cbrs 0.0 500.0 1 $s3 $s1 190 0.1 1008    random_cbrs 125.0 500.0 1 $s3 $s2 190 0.1 1009    random_cbrs 250.0 500.0 1 $s4 $s1 190 0.1 1010    random_cbrs 375.0 500.0 1 $s4 $s2 190 0.1 1011}# highspeed_bw = 670Mb# bottleneck_bw = 100Mb#proc traffic_HbwHcg {} {    global s1 s2 r1 r2 s3 s4    new_cbr 18.4 $s1 $s4 190 0.00005 3    random_tcps 0.0 500.0 8 $s1 $s3 100 100 4000    random_tcps 125.0 500.0 8 $s1 $s4 100 115 4000    random_tcps 250.0 500.0 8 $s2 $s3 100 130 4000    random_tcps 375.0 500.0 8 $s2 $s4 100 145 4000    random_tcps 0.0 500.0 12 $s1 $s3 100 200 2000    random_tcps 125.0 500.0 12 $s1 $s4 100 220 2000    random_tcps 250.0 500.0 12 $s2 $s3 100 240 2000    random_tcps 375.0 500.0 12 $s2 $s4 100 260 2000    random_tcps 0.0 500.0 130 $s1 $s3 100 300 1500    random_tcps 125.0 500.0 130 $s1 $s4 100 400 1500    random_tcps 250.0 500.0 130 $s2 $s3 100 500 1500    random_tcps 375.0 500.0 130 $s2 $s4 100 600 1500    random_tcps 0.0 500.0 20 $s3 $s1 100 625 1500    random_tcps 125.0 500.0 20 $s3 $s2 100 635 1500    random_tcps 250.0 500.0 20 $s4 $s1 100 645 1500    random_tcps 375.0 500.0 20 $s4 $s2 100 655 1500    random_tcps 0.0 500.0 4 $s1 $s3 8 665 1500    random_tcps 125.0 500.0 4 $s1 $s4 4 667 1500    random_tcps 250.0 500.0 4 $s2 $s3 8 669 1500    random_tcps 375.0 500.0 4 $s2 $s4 4 671 1500    random_tcps 0.0 500.0 20 $s1 $s3 100 700 1000    random_tcps 125.0 500.0 20 $s2 $s3 100 710 1000    random_tcps 250.0 500.0 20 $s1 $s4 100 720 1000    random_tcps 375.0 500.0 20 $s2 $s4 100 730 1000    random_tcps 0.0 500.0 8 $s3 $s1 100 740 1000    random_tcps 125.0 500.0 8 $s3 $s2 100 744 1000    random_tcps 250.0 500.0 8 $s4 $s1 100 748 1000    random_tcps 375.0 500.0 8 $s4 $s2 100 752 1000    random_tcps 0.0 500.0 4 $s1 $s3 4 756 1000    random_tcps 125.0 500.0 4 $s1 $s4 8 758 1000    random_tcps 250.0 500.0 4 $s2 $s3 4 760 1000    random_tcps 375.0 500.0 4 $s2 $s4 8 762 1000    random_tcps 0.0 500.0 12 $s1 $s3 100 800 512    random_tcps 125.0 500.0 12 $s1 $s4 100 820 512    random_tcps 250.0 500.0 12 $s2 $s3 100 840 512    random_tcps 375.0 500.0 12 $s2 $s4 100 860 512    random_tcps 0.0 500.0 12 $s3 $s1 100 880 512    random_tcps 125.0 500.0 12 $s3 $s2 100 886 512    random_tcps 250.0 500.0 12 $s4 $s1 100 892 512    random_tcps 375.0 500.0 12 $s4 $s2 100 898 512    random_tcps 0.0 500.0 4 $s1 $s3 8 914 512    random_tcps 125.0 500.0 4 $s1 $s4 8 916 512    random_tcps 250.0 500.0 4 $s2 $s3 4 918 512    random_tcps 375.0 500.0 4 $s2 $s4 4 920 512    random_cbrs 0.0 500.0 4 $s1 $s3 190 0.0002 1000    random_cbrs 125.0 500.0 4 $s1 $s4 190 0.0002 1002    random_cbrs 250.0 500.0 4 $s2 $s3 190 0.0003 1004    random_cbrs 375.0 500.0 4 $s2 $s4 190 0.0003 1006    random_cbrs 0.0 500.0 2 $s3 $s1 190 0.1 1008    random_cbrs 125.0 500.0 2 $s3 $s2 190 0.1 1009    random_cbrs 250.0 500.0 2 $s4 $s1 190 0.1 1010  random_cbrs 375.0 500.0 2 $s4 $s2 190 0.1 1011}proc add_traffic {} {	traffic_HbwHcg  puts "traffic created"}#------------------------------------------------------------------proc create_testnet6 { queuetype }  {    global ns s1 s2 r1 r2 s3 s4 highspeed_bw bottleneck_bw    set s1 [$ns node]    set s2 [$ns node]    set r1 [$ns node]    set r2 [$ns node]    set s3 [$ns node]    set s4 [$ns node]        $ns duplex-link $s1 $r1 $highspeed_bw 2ms DropTail    $ns duplex-link $s2 $r1 $highspeed_bw 3ms DropTail    #$ns simplex-link $r1 $r2 $bottleneck_bw 20ms $queuetype    #$ns simplex-link $r2 $r1 $bottleneck_bw 20ms $queuetype    $ns simplex-link $r1 $r2 $bottleneck_bw 5ms $queuetype    $ns simplex-link $r2 $r1 $bottleneck_bw 5ms $queuetype    set redlink [$ns link $r1 $r2]    [[$ns link $r2 $r1] queue] set limit_ 25    [[$ns link $r1 $r2] queue] set limit_ 25    $ns duplex-link $s3 $r2 $highspeed_bw 4ms DropTail    $ns duplex-link $s4 $r2 $highspeed_bw 5ms DropTail        return $redlink}proc finish_ns {} {    global ns flowdesc    $ns instvar scheduler_    $scheduler_ halt    puts "simulation complete"    close $flowdesc}proc test {testname seed finishfile label createflows dump queue} {    global ns s1 s2 r1 r2 s3 s4 r1fm flowgraphfile       # set stoptime 300.0    set stoptime 500.0    # ? Final sims use 500.0 while paper mentions 300.0    set queuetype $queue    # Set queuesize 25 for Drop Tail, later set to 100 for RED    set queuesize 25    set ns [new Simulator]    # makes simulation run faster    $ns use-scheduler Calendar    set redlink [create_testnet6 $queuetype]    [$redlink queue] set limit_ $queuesize    [[$ns link $r2 $r1] queue] set limit_ $queuesize    if {$queuetype == "RED"} {	set_Red $r1 $r2	[$redlink queue] set limit_ 100	new_tcp 50.2 $s1 $s3 100 20 0 1500	new_tcp 50.2 $s1 $s3 100 21 0 1500    }    $createflows $redlink $dump $stoptime    add_traffic    new_tcp 50.2 $s1 $s3 100 18 0 1460    new_tcp 50.5 $s1 $s3 100 19 0 1460	for {set t 0} {$t < 500} {incr t 50} {	  $ns at $t "puts time=$t"	}    $ns at $stoptime "$finishfile $testname $flowgraphfile.$label"    $ns at $stoptime "finish"    # trace only the bottleneck link    #    [$ns link $r1 $r2] trace [openTrace $stoptime $testname]    ns-random $seed    $ns run}#------------------------------------------------------------------# plot_dropsinpackets looks at every 100 drops,# plot_dropsinpackets1 for each flow waits until "sufficient"#   drops have accumulated# unforced drops, packet drop metric, REDproc test_unforced { seed } {    global category ns_link queuetype    set queuetype packets    set ns_link(queue-in-bytes) false    set category unforced    #	test $seed plot_dropsinpackets1 u create_flowstats flowDump RED    test unforced $seed plot_dropsinpackets u create_flowstats flowDump RED}# forced drops, byte drop metric, REDproc test_forced { seed } {    global category ns_link queuetype    set queuetype packets    set ns_link(queue-in-bytes) false    set category forced    test forced $seed plot_dropsinbytes f create_flowstats flowDump RED}# unforced drops, byte drop metric, REDproc test_unforced1 { seed } {    global category ns_link queuetype    set queuetype packets    set ns_link(queue-in-bytes) false    set category unforced    test unforced1 $seed plot_dropsinbytes u1 create_flowstats flowDump RED}# forced drops, packet drop metric, REDproc test_forced1 { seed } {    global category ns_link queuetype    set queuetype packets    set ns_link(queue-in-bytes) false    set category forced    test forced1 $seed plot_dropsinpackets f1 create_flowstats flowDump RED}# all drops, combined drop metric, REDproc test_combined { seed } {    global ns_link queuetype category    set queuetype packets    set ns_link(queue-in-bytes) false    set category combined    test combined $seed plot_dropscombined c create_flowstats1 flowDump1 RED}# byte drop metric, queue in packets, Drop-Tailproc test_droptail1 { seed } {    global queuetype category    set queuetype packets    set category forced    test droptail1 $seed plot_dropsinbytes d1 create_flowstats flowDump DropTail}# packet drop metric, queue in packets, Drop-Tailproc test_droptail2 { seed } {    global queuetype    set queuetype packets    set category forced    test droptail2 $seed plot_dropsinpackets d2 create_flowstats flowDump DropTail}# byte drop metric, queue in bytes, Drop-Tailproc test_droptail3 { seed } {    global ns_link queuetype category    set queuetype bytes    set ns_link(queue-in-bytes) true    set ns_link(mean_pktsize) 512    set category forced    test droptail3 $seed plot_dropsinbytes d3 create_flowstats flowDump DropTail}# packet drop metric, queue in bytes, Drop-Tailproc test_droptail4 { seed } {    global ns_link queuetype category    set queuetype bytes    set ns_link(queue-in-bytes) true    set ns_link(mean_pktsize) 512    set category forced    test droptail4 $seed plot_dropsinpackets d4 create_flowstats flowDump DropTail}if { $argc < 2 } {        puts stderr {usage: ns $argv [ two ]}        exit 1} elseif { $argc == 2 } {        set testname [lindex $argv 0]	set seed [lindex $argv 1]	puts stderr "testname: $testname"	puts stderr "seed: $seed"}if { "[info procs test_$testname]" != "test_$testname" } {        puts stderr "$testname: no such test: $testname"}test_$testname $seed

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -