📄 egresspareto6nodeegress800.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 + -