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

📄 egresspareto6nodeegress800.tcl.tcl

📁 在网络的边缘路由器中并不能完全接受所到的包
💻 TCL
字号:

set ns [new Simulator]
ns-random 0

set f [open out.tr w]
set f1 [open out.tr w]
set f2 [open out.tr w]
set f3 [open out.tr w]
set f4 [open out.tr w]
set f5 [open out1.tr w]
$ns trace-all $f5

Agent/CBR/UDP/SA set flowtype_  -1

set S_ [expr 5e3]
set T_ 3
set utilization_ 0.95
set s_ [expr 2e-3]
set w_ [expr pow(2,-3)]
set epsilon_ 0.7
set simtime 500.0   
set meastime 0
set srcno 1  
set trace_flow 0 
set seed 1973272912
set qlim 1000
set backoff true
set clr 1.0
set K 10
set bump 0
set nobump 0
set Tm 17
set index 0.0
set delayrequest 0.020
set ADC AggEgress
set EST AggEgress  


#Set pkt size and link bw
set psize 1000
set bandwidth 9e6
set hvar 300.0   

Agent set ingressnodeofpacket_ 1
Agent set egressnodeofpacket_ 4
Agent/SA set ingressnodeofpacket_ 1
Agent/SA set egressnodeofpacket_ 4

Trace set bandwidth_ 9e6
Trace set congest1_ 1
Trace set congest2_ 0

#defaults
Queue/SimpleIntServ set qlimit1_ $qlim  
Queue/SimpleIntServ set qlimit0_ 0

set adc $ADC
set est $EST   
$defaultRNG seed $seed

puts "Using ADC: $adc EST: $est simtime: $simtime s"

ADC set backoff_ $backoff
Est/ExpAvg set w_ [expr $w_]
Est set period_ 1

ADC/AggEgress set clr_ [expr $clr]
ADC/AggEgress set lifetime_ $hvar 
ADC/AggEgress set delayrequest_ $delayrequest

Est/AggEgress set lifetimeofflow_ $hvar
Est/AggEgress set simulationtime_ $simtime
Est/AggEgress set delayrequest_ $delayrequest

Est/AggEgress set T_ .5
Est/AggEgress set M_ 3

set nflowtypes 1

proc zero-flows {} {
        global totflows nflowtypes
        set i 0
        while { $i < $nflowtypes } {
                set totflows($i) 0   
                incr i
        }
}

set i 0 
while { $i < $nflowtypes } {
        set flows($i) 0
        incr i
}
zero-flows

Agent/CBR/UDP/SA instproc clear-flow { leavetime decision } {
        global ns trace_flow flows  
        $self instvar node_ flowtype_

        if { $decision == 1 } {
                $self stoponidle "sched-stop 0"
                incr flows($flowtype_) -1
        }
        if { $decision == 0 } {
                if { $trace_flow } {
                        puts "Flow [$self set fid_] left @ $leavetime"
                }
                $ns detach-agent $node_ $self
                delete [$self set trafgen_]
                delete $self
        }
}

#Helper function to schedule stop time for the new flow
Agent/CBR/UDP/SA instproc sched-stop { decision } {
        global hold simtime ns trace_flow flows totflows
        $self instvar node_ lifetime_ flowtype_
        
        if { $decision == 1 } {
                incr flows($flowtype_)
                incr totflows($flowtype_)
                set leavetime [expr [$ns now] + $lifetime_]
                $ns at [expr [$ns now] + $lifetime_] "$self clear-flow $leavetime $decision"
           } else {
                set leavetime [$ns now]
                $ns at-now " $self clear-flow $leavetime $decision"
         }      
}
 
set n0 [$ns node]
set n1 [$ns node]
set n2 [$ns node]
set n3 [$ns node]
set n4 [$ns node]
set n5 [$ns node]

$ns duplex-link $n0 $n1 100e6 0.01ms SimpleIntServ SALink
$ns duplex-link $n1 $n2 9e6 0.01ms SimpleIntServ SALink
$ns duplex-link $n2 $n4 9e6 0.01ms SimpleIntServ SALink
$ns duplex-link $n3 $n4 9e6 0.01ms SimpleIntServ SALink
$ns duplex-intserv-link $n4 $n5 9e6 0.01ms SimpleIntServ SALink $adc $est CL

set qmon [$ns monitor-queue $n0 $n1 $f]
set qmon1 [$ns monitor-queue $n1 $n2 $f1]
set qmon2 [$ns monitor-queue $n2 $n4 $f2]
set qmon3 [$ns monitor-queue $n3 $n4 $f3]
set qmon4 [$ns monitor-queue $n4 $n5 $f4]

#create 1 receiver agent
set r [new Agent/SAack]
$ns attach-agent $n5 $r

proc create-source {node rcvr starttime  i} {
        global ns hvar defaultRNG psize
        global tfile
        set a [new Agent/CBR/UDP/SA] 
        
        $a set flowtype_ 0

        set exp1 [new Traffic/Pareto]
        $exp1 set packet-size $psize
        $exp1 set burst-time 0.250
        $exp1 set idle-time 0.250
        $exp1 set rate 800k   
        $exp1 set shape 1.9
        $a set rate_ 800k  
        $a set bucket_ 800k
        $node attach $a 
        $a set fid_ $i
        $ns connect $a $rcvr
        $a attach-traffic $exp1  
        $a set lifetime_ $hvar
        $ns at $starttime "$a start"
        $a instvar trafgen_
        set trafgen_ $exp1   
        
}       

#proc to create a source and schedule another one after a time from
#expo dist
proc sched-source { node receiver index numcheck} {
        global srcno ns trace_flow
        
        create-source $node $receiver [$ns now]  $srcno

        if { $trace_flow } {
                puts "Flow $srcno started @ [$ns now]"
        }
        incr srcno
         
        #generate another startime
 
        if { $numcheck == 0 } {
        }

        if { $numcheck == 1 } {
           set starttime1 [expr [$ns now] + 4.0]
           $ns at $starttime1 "sched-source $node $receiver $index $numcheck"
        }
}

#Sched the first flow
set starttime 0.0
set starttime1 40.0

set num 0
set num1 1      

set i 0
while { $i < 37 } {
     $ns at $i "sched-source $n3 $r $index $num"
     set j $i
     set i [expr $j + 4]
}
  
$ns at $starttime1 "sched-source $n0 $r $index $num1"


$ns at 500.0 "finish"
proc finish {} {
         global ns f5
         $ns flush-trace
         close $f5
         exit 0
}

$ns run   

⌨️ 快捷键说明

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