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

📄 topology.tcl

📁 无线个域网(WPAN)就是在个人周围空间形成的无线网络
💻 TCL
字号:
Class TopologyTopology instproc node? n {    $self instvar node_    if [info exists node_($n)] {        set ret $node_($n)    } else {        set ret ""    }    set ret}Topology  instproc init {ns noNodes noRouters} {    $self next    $self instvar node_        for {set i 0} {$i < $noNodes} {incr i} {	set node_(s$i) [$ns node]	set node_(d$i) [$ns node]    }    for {set i 0} {$i < $noRouters} {incr i} {	set node_(r$i) [$ns node]    }    }Topology instproc set_red_params { redq psize qlim min_th max_th bytes wait gentle} {    $redq set mean_pktsize_ $psize    $redq set limit_ $qlim    $redq set bytes_ $bytes    $redq set wait_ $wait    $redq set gentle_ $gentle        $redq set thresh_ $min_th    $redq set maxthresh_ $max_th}    Class Topology/netAllUDP -superclass TopologyTopology/netAllUDP instproc init ns {    $self next $ns 1 2    $self instvar node_ redpdq_ redpdflowmon_ redpdlink_         $ns duplex-link $node_(s0) $node_(r0) 100Mb 2ms DropTail    $ns duplex-link $node_(d0) $node_(r1) 100Mb 2ms DropTail        $ns simplex-link $node_(r0) $node_(r1) 10Mb 20ms RED/PD MEDROP EDROP    $ns simplex-link $node_(r1) $node_(r0) 10Mb 20ms DropTail    	$self instvar bandwidth_	set bandwidth_ 10000    set redpdlink_ [$ns link $node_(r0) $node_(r1)]    set redpdq_ [$redpdlink_ queue]    set redpdflowmon_ [$redpdq_ makeflowmon $redpdlink_]     $self set_red_params $redpdq_ 1000 50 10 33 false false true    	#   $redpdq_ set debug_ true    #	$redpdq_ set auto_ true    #	$redpdq_ set global_target_ true    #	set appropriate queue-limits    #	$ns queue-limit $node_(r1) $node_(r2) 25        #	$ns queue-limit $node_(r2) $node_(r1) 25}Class Topology/netMix -superclass TopologyTopology/netMix instproc init ns {    $self next $ns 3 2    $self instvar node_ redpdq_ redpdflowmon_ redpdlink_        $ns duplex-link $node_(s0) $node_(r0) 100Mb 3ms DropTail    $ns duplex-link $node_(s1) $node_(r0) 100Mb 13ms DropTail    $ns duplex-link $node_(s2) $node_(r0) 100Mb 23ms DropTail        $ns duplex-link $node_(d0) $node_(r1) 100Mb 1ms DropTail    $ns duplex-link $node_(d1) $node_(r1) 100Mb 1.5ms DropTail    $ns duplex-link $node_(d2) $node_(r1) 100Mb 2ms DropTail        $ns simplex-link $node_(r0) $node_(r1) 10Mb 10ms RED/PD MEDROP EDROP    $ns simplex-link $node_(r1) $node_(r0) 10Mb 10ms DropTail    	$self instvar bandwidth_	set bandwidth_ 10000    set redpdlink_ [$ns link $node_(r0) $node_(r1)]    set redpdq_ [$redpdlink_ queue]    set redpdflowmon_ [$redpdq_ makeflowmon $redpdlink_]     $self set_red_params $redpdq_ 1000 50 10 33 true false true#    $redpdq_ set debug_ true}Class Topology/netTFRC -superclass TopologyTopology/netTFRC instproc init ns {    $self next $ns 9 2    $self instvar node_ redpdq_ redpdflowmon_ redpdlink_        $ns duplex-link $node_(s0) $node_(r0) 100Mb 4ms DropTail    $ns duplex-link $node_(s1) $node_(r0) 100Mb 49ms DropTail         set delay 1    for {set i 0} {$i < 9} {incr i} {		$ns duplex-link $node_(d$i) $node_(r1) 100Mb ${delay}ms DropTail		set delay [expr $delay+0.2]    }         $ns simplex-link $node_(r0) $node_(r1) 10Mb 10ms RED/PD MEDROP EDROP    $ns simplex-link $node_(r1) $node_(r0) 10Mb 10ms DropTail    	$self instvar bandwidth_	set bandwidth_ 10000    set redpdlink_ [$ns link $node_(r0) $node_(r1)]    set redpdq_ [$redpdlink_ queue]    set redpdflowmon_ [$redpdq_ makeflowmon $redpdlink_]     $self set_red_params $redpdq_ 1000 50 10 33 false false true#    $redpdq_ set debug_ true}Class Topology/netAllTCP -superclass TopologyTopology/netAllTCP instproc init ns {    $self next $ns 4 2    $self instvar node_ redpdq_ redpdflowmon_ redpdlink_        $ns duplex-link $node_(s0) $node_(r0) 100Mb 9ms DropTail    $ns duplex-link $node_(s1) $node_(r0) 100Mb 29ms DropTail    $ns duplex-link $node_(s2) $node_(r0) 100Mb 49ms DropTail    $ns duplex-link $node_(s3) $node_(r0) 100Mb 69ms DropTail        $ns duplex-link $node_(d0) $node_(r1) 100Mb 1ms DropTail    $ns duplex-link $node_(d1) $node_(r1) 100Mb 2ms DropTail            $ns simplex-link $node_(r0) $node_(r1) 10Mb 10ms RED/PD MEDROP EDROP    $ns simplex-link $node_(r1) $node_(r0) 10Mb 10ms DropTail    	$self instvar bandwidth_	set bandwidth_ 10000    set redpdlink_ [$ns link $node_(r0) $node_(r1)]    set redpdq_ [$redpdlink_ queue]    set redpdflowmon_ [$redpdq_ makeflowmon $redpdlink_]     $self set_red_params $redpdq_ 1000 100 10 33 false false true    #    $redpdq_ set debug_ true}# For Web Traffic SimulationsClass Topology/netWeb -superclass TopologyTopology/netWeb instproc init ns {    $self next $ns 5 2    $self instvar node_ redpdq_ redpdflowmon_ redpdlink_        $ns duplex-link $node_(s0) $node_(r0) 100Mb 10ms DropTail    $ns duplex-link $node_(s1) $node_(r0) 100Mb 20ms DropTail    $ns duplex-link $node_(s2) $node_(r0) 100Mb 30ms DropTail    $ns duplex-link $node_(s3) $node_(r0) 100Mb 40ms DropTail    $ns duplex-link $node_(s4) $node_(r0) 100Mb 50ms DropTail    $ns duplex-link $node_(d0) $node_(r1) 100Mb 1ms DropTail    $ns duplex-link $node_(d1) $node_(r1) 100Mb 1.2ms DropTail    $ns duplex-link $node_(d2) $node_(r1) 100Mb 1.4ms DropTail    $ns duplex-link $node_(d3) $node_(r1) 100Mb 1.6ms DropTail    $ns duplex-link $node_(d4) $node_(r1) 100Mb 1.8ms DropTail         $ns simplex-link $node_(r0) $node_(r1) 10Mb 1ms RED/PD MEDROP EDROP    $ns simplex-link $node_(r1) $node_(r0) 10Mb 1ms DropTail    	$self instvar bandwidth_	set bandwidth_ 10000    set redpdlink_ [$ns link $node_(r0) $node_(r1)]    set redpdq_ [$redpdlink_ queue]    set redpdflowmon_ [$redpdq_ makeflowmon $redpdlink_ Fid]    $self set_red_params $redpdq_ 500 100 10 33 false false false    	#$redpdq_ set debug_ true        return $redpdq_}#For multiple congested linksClass Topology/netMulti -superclass TopologyTopology/netMulti instproc init ns {	    $self instvar node_ redpdq_ redpdflowmon_ redpdlink_ noLinks_    	global topo_para1_    set noLinks_ $topo_para1_	if { $noLinks_ <=0 } {		puts stderr "Invalid number of links $noLinks_"	}    set noNodes $noLinks_    set noRouters [expr $noLinks_+1]    $self next $ns $noNodes $noRouters        for {set i 0} {$i<$noLinks_} {incr i} {	set node_(s1$i) [$ns node]	set node_(s2$i) [$ns node]	set node_(s3$i) [$ns node]    }    set node_(source) [$ns node]    set node_(sink) [$ns node]    #create the necessary connections and stuff    for {set i 0} {$i < $noNodes} {incr i} {		$ns duplex-link $node_(s$i) $node_(r$i) 100Mb 10ms DropTail	$ns duplex-link $node_(s1$i) $node_(r$i) 100Mb 20ms DropTail	$ns duplex-link $node_(s2$i) $node_(r$i) 100Mb 30ms DropTail	$ns duplex-link $node_(s3$i) $node_(r$i) 100Mb 40ms DropTail	set j [expr $i+1]	$ns duplex-link $node_(d$i) $node_(r$j) 100Mb 1ms DropTail		$ns simplex-link $node_(r$i) $node_(r$j) 10Mb 1ms RED/PD MEDROP EDROP	$ns simplex-link $node_(r$j) $node_(r$i) 10Mb 1ms DropTail	    	$self instvar bandwidth_	set bandwidth_ 10000	set redpdlink_($i) [$ns link $node_(r$i) $node_(r$j)]	set redpdq_($i) [$redpdlink_($i) queue]	set redpdflowmon_($i) [$redpdq_($i) makeflowmon $redpdlink_($i)]	$self set_red_params $redpdq_($i) 1000 50 10 33 false false false#	$redpdq_($i) set debug_ true    }    set node_(source) [$ns node]    set node_(sink) [$ns node]    set delay [expr 40 - $noLinks_]    $ns duplex-link $node_(source) $node_(r0) 100Mb ${delay}ms DropTail    $ns duplex-link $node_(sink) $node_(r$noLinks_) 100Mb 1ms DropTail}Class Topology/netTestFRp -superclass TopologyTopology/netTestFRp instproc init ns {#    puts "In netTestFRp ..."    $self next $ns 6 2    $self instvar node_ redpdq_ redpdflowmon_ redpdlink_    #    puts "In netTestFRp ..."    global traf_para1_ traf_para2_ target_rtt_#    puts "Topology parametsrs: $target_rtt_ ftype=$traf_para1_ gamma=$traf_para2_"     switch -exact $traf_para1_ {	"tcp" {	    set delay [expr ($target_rtt_/(2*$traf_para2_))*1000]	}	default {	    set delay 10	}    }    if { $delay <= 0 } {	puts stderr "Invalid Link Delay"	exit 1    }#    puts stderr "Delay = $delay ms"    for {set i 0} {$i < 5} {incr i} {	$ns duplex-link $node_(s$i) $node_(r0) 1000Mb [expr ${delay}+0.05*$i]ms DropTail    }    $ns duplex-link $node_(d0) $node_(r1) 100Mb 0ms DropTail    $ns simplex-link $node_(r0) $node_(r1) 1000Mb 0ms RED/PD MEDROP EDROP    $ns simplex-link $node_(r1) $node_(r0) 1000Mb 0ms DropTail        $self instvar bandwidth_    set bandwidth_ 1000000    set redpdlink_ [$ns link $node_(r0) $node_(r1)]    set redpdq_ [$redpdlink_ queue]    set redpdflowmon_ [$redpdq_ makeflowmon $redpdlink_]     #excessively high values so that pkts are never dropped because of RED dynamics    $self set_red_params $redpdq_ 1000 1000 1000 1000 false false true        #    $redpdq_ set debug_ true        #set the P in FRp while running the simulation for fixed drop rate    #(-1 to operate in normal mode).     global topo_para1_    $redpdq_ set P_testFRp_ $topo_para1_}Class Topology/netSingleVsMulti -superclass TopologyTopology/netSingleVsMulti instproc init ns {    $self next $ns 5 2    $self instvar node_ redpdq_ redpdflowmon_ redpdlink_        $ns duplex-link $node_(s0) $node_(r0) 100Mb 0.2ms DropTail    $ns duplex-link $node_(s1) $node_(r0) 100Mb 0.4ms DropTail    $ns duplex-link $node_(s2) $node_(r0) 100Mb 0.6ms DropTail    $ns duplex-link $node_(s3) $node_(r0) 100Mb 0.8ms DropTail    $ns duplex-link $node_(s4) $node_(r0) 100Mb 1ms DropTail    $ns duplex-link $node_(d0) $node_(r1) 100Mb 1ms DropTail        global topo_para1_     if {$topo_para1_ <= 0} {	puts stderr "Invalid Round Trip Time $traf_para1_"    }        set one_way_delay [expr $topo_para1_*500 - 1]    $ns simplex-link $node_(r0) $node_(r1) 10Mb ${one_way_delay}ms RED/PD MEDROP EDROP    $ns simplex-link $node_(r1) $node_(r0) 10Mb ${one_way_delay}ms DropTail        $self instvar bandwidth_    set bandwidth_ 10000    set redpdlink_ [$ns link $node_(r0) $node_(r1)]    set redpdq_ [$redpdlink_ queue]    set redpdflowmon_ [$redpdq_ makeflowmon $redpdlink_]     #RED parameters likely to show a bursty drop behavior    set bw_delay_prod [expr ($one_way_delay+2.0)/(0.4)]    puts "product = $bw_delay_prod"    $self set_red_params $redpdq_ 1000 [expr {$bw_delay_prod/4}] [expr {$bw_delay_prod/8}] \	[expr {$bw_delay_prod/4}] false false true    #    $redpdq_ set debug_ true}Class Topology/netPktsVsBytes -superclass TopologyTopology/netPktsVsBytes instproc init ns {    $self next $ns 9 2    $self instvar node_ redpdq_ redpdflowmon_ redpdlink_        $ns duplex-link $node_(s0) $node_(r0) 100Mb 4ms DropTail    $ns duplex-link $node_(s1) $node_(r0) 100Mb 34ms DropTail         set delay 1    for {set i 0} {$i < 9} {incr i} {		$ns duplex-link $node_(d$i) $node_(r1) 100Mb ${delay}ms DropTail		set delay [expr $delay+0.2]    }         $ns simplex-link $node_(r0) $node_(r1) 10Mb 5ms RED/PD MEDROP EDROP    $ns simplex-link $node_(r1) $node_(r0) 10Mb 5ms DropTail    $self instvar bandwidth_    set bandwidth_ 10000    set redpdlink_ [$ns link $node_(r0) $node_(r1)]    set redpdq_ [$redpdlink_ queue]    set redpdflowmon_ [$redpdq_ makeflowmon $redpdlink_]     $self set_red_params $redpdq_ 1000 50 10 33 true false true    #    global topo_para1_#    $redpdq_ set P_testFRp_ $topo_para1_#   $redpdq_ set debug_ true}Class Topology/netPktsVsBytes1 -superclass TopologyTopology/netPktsVsBytes1 instproc init ns {    $self next $ns 9 2    $self instvar node_ redpdq_ redpdflowmon_ redpdlink_        $ns duplex-link $node_(s0) $node_(r0) 100Mb 4ms DropTail    $ns duplex-link $node_(s1) $node_(r0) 100Mb 34ms DropTail         set delay 1    for {set i 0} {$i < 9} {incr i} {		$ns duplex-link $node_(d$i) $node_(r1) 100Mb ${delay}ms DropTail		set delay [expr $delay+0.2]    }         $ns simplex-link $node_(r0) $node_(r1) 10Mb 5ms RED/PD MEDROP EDROP    $ns simplex-link $node_(r1) $node_(r0) 10Mb 5ms DropTail    $self instvar bandwidth_    set bandwidth_ 10000    set redpdlink_ [$ns link $node_(r0) $node_(r1)]    set redpdq_ [$redpdlink_ queue]    set redpdflowmon_ [$redpdq_ makeflowmon $redpdlink_]     $self set_red_params $redpdq_ 1000 50 10 33 false false true    #    global topo_para1_#    $redpdq_ set P_testFRp_ $topo_para1_#   $redpdq_ set debug_ true}

⌨️ 快捷键说明

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