[Codel] Codel Digest, Vol 29, Issue 6

kanu monga kanumonga013 at gmail.com
Mon Feb 23 01:02:43 EST 2015


Thanks a lot @Kathleen Nichols for showing me the path.
Best Regards

On Mon, Feb 23, 2015 at 2:56 AM, <codel-request at lists.bufferbloat.net>
wrote:

> Send Codel mailing list submissions to
>         codel at lists.bufferbloat.net
>
> To subscribe or unsubscribe via the World Wide Web, visit
>         https://lists.bufferbloat.net/listinfo/codel
> or, via email, send a message with subject or body 'help' to
>         codel-request at lists.bufferbloat.net
>
> You can reach the person managing the list at
>         codel-owner at lists.bufferbloat.net
>
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of Codel digest..."
>
>
> Today's Topics:
>
>    1. Re: Codel Digest, Vol 29, Issue 4 (Kathleen Nichols)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Sun, 22 Feb 2015 13:25:52 -0800
> From: Kathleen Nichols <nichols at pollere.com>
> To: codel at lists.bufferbloat.net
> Subject: Re: [Codel] Codel Digest, Vol 29, Issue 4
> Message-ID: <54EA4960.8030709 at pollere.com>
> Content-Type: text/plain; charset=windows-1252
>
>
> I used TCP/Linux because it was closer to what is out there in a lot of
> boxes
> that people use and I think there may have been some ns-2 reason also but
> I'm thankfully not using simulators currently, spending more time with
> traces
> and lab stuff. You can and should use anything you want.
>
> Reverse ftps are used to create a flow of acks in the the  monitored
> direction. This
> can make a huge difference in what you observe. I believe the first work
> on this might
> be something Lixia Zhang published as a grad student and I also found
> this in early
> simulation work I did. You could read about it and you can also do
> different experiments
> yourself to see how results differ. You might also read
> http://queue.acm.org/detail.cfm?id=2209336 and some of the references
> cited.
>
> On 2/22/15 6:35 AM, kanu monga wrote:
> > Thank you so much for replying. i really appreciate it.
> > i have two more questions:
> > (1) what is the concept of using TCP/Linux with codel. can't we use
> > other TCP Variants
> > (2) N what is purpose of using reverse ftps
> >
> >
> > On Fri, Feb 20, 2015 at 11:32 PM, <codel-request at lists.bufferbloat.net
> > <mailto:codel-request at lists.bufferbloat.net>> wrote:
> >
> >     Send Codel mailing list submissions to
> >             codel at lists.bufferbloat.net <mailto:
> codel at lists.bufferbloat.net>
> >
> >     To subscribe or unsubscribe via the World Wide Web, visit
> >             https://lists.bufferbloat.net/listinfo/codel
> >     or, via email, send a message with subject or body 'help' to
> >             codel-request at lists.bufferbloat.net
> >     <mailto:codel-request at lists.bufferbloat.net>
> >
> >     You can reach the person managing the list at
> >             codel-owner at lists.bufferbloat.net
> >     <mailto:codel-owner at lists.bufferbloat.net>
> >
> >     When replying, please edit your Subject line so it is more specific
> >     than "Re: Contents of Codel digest..."
> >
> >
> >     Today's Topics:
> >
> >        1. Re: Codel code (Kathleen Nichols)
> >        2. Re: Codel code (Dave Taht)
> >        3. Setpoint in CoDel (Anjali Chawla)
> >        4. Re: Setpoint in CoDel (Dave Taht)
> >        5. Re: Setpoint in CoDel (Dave Taht)
> >
> >
> >
>  ----------------------------------------------------------------------
> >
> >     Message: 1
> >     Date: Thu, 19 Feb 2015 13:34:14 -0800
> >     From: Kathleen Nichols <nichols at pollere.com
> >     <mailto:nichols at pollere.com>>
> >     To: codel at lists.bufferbloat.net <mailto:codel at lists.bufferbloat.net>
> >     Subject: Re: [Codel] Codel code
> >     Message-ID: <54E656D6.5010308 at pollere.com
> >     <mailto:54E656D6.5010308 at pollere.com>>
> >     Content-Type: text/plain; charset=windows-1252
> >
> >
> >     I'll reply list in case anyone else is interested. Just delete if you
> >     are fortunate enough to
> >     have nothing to do with ns-2.
> >
> >     First of all, I'm as much a victim of ns-2's tcl as the next person
> and
> >     secondly, I will
> >     tell you what I remember without looking at the c++ code, but would
> >     recommend
> >     you take a look at that for some of the settings.
> >
> >     The first commented line just shows how you can set stuff on the
> command
> >     line and what
> >     the different variables are. This particular script is using
> PackMime to
> >     generate web
> >     traffic though there is also an update of a web script I wrote many
> >     years ago and
> >     CableLabs paid me to update. I also used that for some codel tests.
> So
> >     this can run
> >     a mix of f ftp connections, w web connections per sec, c constant bit
> >     rate connections
> >     through a bottleneck of b Mbps. Use s to set the file size that the
> ftps
> >     transfer and if
> >     set to -1 the ftps are infinite, that is don't terminate over the
> >     simulation run. This avoids
> >     lots of slow starts. d is something I used to get the dynamic
> bandwidth
> >     thing to work,
> >     that is it makes the bottleneck link change periodically (you can see
> >     the plot of this
> >     in the ACM CoDel paper). Reverse ftps are sourced at the opposite
> end of
> >     the bottleneck
> >     so they create acks in the "forward" direction.
> >
> >     There is a routine called build_cbr and that's where the rate and
> packet
> >     size for the CBRs is set. This sets dynamic bw to 0 so the bandwidth
> >     doesn't change unless set in the command line to do so. I don't
> remember
> >     off hand what greedy is. I think it sets one
> >     ftp to be "greedy".
> >
> >     A bunch of this you should try to figure out for yourself by looking
> at
> >     ns2 documentation
> >     and perhaps at the agent .cc files.
> >
> >     The nominal RTT is what is "expected" and is used as the interval but
> >     the real rtt is what
> >     is actually experienced in the particular experiment. I will use this
> >     opportunity once again
> >     to note that CoDel is actually more sensitive to this parameter than
> to
> >     target in the sense
> >     that excess drops will happen if the real rtt is longer than the
> >     interval (I keep trying to
> >     explain this but no one hears it.)
> >
> >     Code to set the random seed. Sometimes you want different runs to use
> >     different random
> >     seeds and sometimes you want to run exactly the same scenario.
> >
> >     There's a bunch of parameters to the TCP agents. Some of these are in
> >     ns2 documentation,
> >     but you can find it in the code also.
> >
> >     Just a note that I couldn't get the ns2 TCP/Linux code to work the
> way
> >     it was supposed to,
> >     specifically the idle() routine never seemed to get called. (This
> sort
> >     of thing is pretty
> >     common with ns2) and I didn't want to waste a lot of time untangling
> the
> >     tcl-c++
> >     relationship in ns2. Anyway, so I wrote those tcl procedures to get
> the
> >     ftps to restart.
> >     I wanted to run more modern TCPs, hence use of the Linux TCP.
> >
> >     The dynamic bandwidth thing changes the bandwidth and preset times.
> It
> >     does it by multiplying the original bandwidth so I set up an array of
> >     the mulipliers. I'm sure there's
> >     a more elegant way to do it but, at this stage of my life, I have
> >     accepted that I don't do
> >     elegant. I'm more of a "get the job done" kind of coder. And I really
> >     don't like ns2 so I
> >     generally find it works better to just whack it with a hammer rather
> >     than to try to do
> >     something beautifully. Note, as above, that a lot of the stuff in ns2
> >     just doesn't work.
> >
> >     There is code to build up the topology which shouldn't be that hard
> to
> >     figure out.
> >
> >             Kathie
> >
> >     On 2/18/15 11:19 PM, kanu monga wrote:
> >     > is there anyone who can help me in understanding tcl code of
> >     codel(given
> >     > below)
> >     > This one is quite complex for me.
> >     > please help if you can.
> >     > Thanks in advance.
> >     >
> >     > ###################################################################
> >     >
> >     >
> >     > # ns codel.tcl f w c {b}Mb s d r
> >     > # where:
> >     > #f = # ftps
> >     > #w = # PackMime connections per second
> >     > #c = # CBRs
> >     > #b = bottleneck bandwidth in Mbps
> >     > #s = filesize for ftp, -1 for infinite
> >     > #d = dynamic bandwidth, if non-zero, changes (kind of kludgey)
> >     > #have to set the specific change ratios in this file (below)
> >     > #r = number of "reverse" ftps
> >     >
> >     > set stopTime 300
> >     > set ns [new Simulator]
> >     >
> >     > # These are defaults if values not set on command line
> >     >
> >     > set num_ftps 1
> >     > set web_rate 0
> >     > set revftp 0
> >     > set num_cbrs 0
> >     > #rate and packetSize set in build_cbr
> >     > set bottleneck 3Mb
> >     > #for a 10MB ftp
> >     > set filesize 10000000
> >     > set dynamic_bw 0
> >     > set greedy 0
> >     >
> >     > # Parse command line
> >     >
> >     > if {$argc >= 1} {
> >     >     set num_ftps [lindex $argv 0]
> >     >     if {$argc >= 2} {
> >     >         set web_rate [lindex $argv 1]
> >     >         if {$argc >= 3} {
> >     >             set num_cbrs [lindex $argv 2]
> >     >             if {$argc >= 4} {
> >     >             set bottleneck [lindex $argv 3]
> >     >    if {$argc >= 5} {
> >     > set filesize [lindex $argv 4]
> >     >   if {$argc >= 6} {
> >     > set dynamic_bw [lindex $argv 5]
> >     >   if {$argc >= 7} {
> >     > set revftp [lindex $argv 6]
> >     >    }
> >     >    }
> >     >         }
> >     >         }
> >     > }
> >     >     }
> >     > }
> >     >
> >     > set bw [bw_parse $bottleneck]
> >     > if { $revftp >= 1} {
> >     > set num_revs $revftp
> >     > } else {
> >     > set num_revs 0
> >     > }
> >     > puts "ftps $num_ftps webrate $web_rate cbrs $num_cbrs bw $bw
> filesize
> >     > $filesize reverse $num_revs"
> >     >
> >     > # experiment settings
> >     > set psize 1500
> >     > if { $bw < 1000000} { set psize 500 }
> >     > set nominal_rtt [delay_parse 100ms]
> >     > set accessdly 20
> >     > set bdelay 10
> >     > set realrtt [expr 2*(2*$accessdly + $bdelay)]
> >     > puts "accessdly $accessdly bneckdly $bdelay realrtt $realrtt
> >     bneckbw $bw"
> >     >
> >     > # CoDel values
> >     > # interval to keep min over
> >     > set interval [delay_parse 100ms]
> >     > # target in ms.
> >     > set target [delay_parse 5ms]
> >     >
> >     > global defaultRNG
> >     > $defaultRNG seed 0
> >     > ns-random 0
> >     > #$defaultRNG seed 54321
> >     > #ns-random 23145
> >     >
> >     > # ------- config info is all above this line ----------
> >     >
> >     > #bdp in packets, based on the nominal rtt
> >     > set bdp [expr round($bw*$nominal_rtt/(8*$psize))]
> >     >
> >     > Trace set show_tcphdr_ 1
> >     > set startTime 0.0
> >     >
> >     > #TCP parameters - have to set both for FTPs and PackMime
> >     >
> >     > Agent/TCP set window_ [expr $bdp*16]
> >     > Agent/TCP set segsize_ [expr $psize-40]
> >     > Agent/TCP set packetSize_ [expr $psize-40]
> >     > Agent/TCP set windowInit_ 4
> >     > Agent/TCP set segsperack_ 1
> >     > Agent/TCP set timestamps_ true
> >     > set delack 0.4
> >     > Agent/TCP set interval_ $delack
> >     >
> >     > Agent/TCP/FullTcp set window_ [expr $bdp*16]
> >     > Agent/TCP/FullTcp set segsize_ [expr $psize-40]
> >     > Agent/TCP/FullTcp set packetSize_ [expr $psize-40]
> >     > Agent/TCP/FullTcp set windowInit_ 4
> >     > Agent/TCP/FullTcp set segsperack_ 1
> >     > Agent/TCP/FullTcp set timestamps_ true
> >     > Agent/TCP/FullTcp set interval_ $delack
> >     >
> >     >
> >     > Agent/TCP/Linux instproc done {} {
> >     > global ns filesize
> >     > #this doesn't seem to work, had to hack tcp-linux.cc to do repeat
> ftps
> >     > $self set closed_ 0
> >     > #needs to be delayed by at least .3sec to slow start
> >     > puts "[$ns now] TCP/Linux proc done called"
> >     > $ns at [expr [$ns now] + 0.3] "$self send $filesize"
> >     > }
> >     >
> >     > # problem is that idle() in tcp.cc never seems to get called...
> >     > Application/FTP instproc resume {} {
> >     > puts "called resume"
> >     >         global filesize
> >     >         $self send $filesize
> >     > #$ns at [expr [$ns now] + 0.5] "[$self agent] reset"
> >     > $ns at [expr [$ns now] + 0.5] "[$self agent] send $filesize"
> >     > }
> >     >
> >     > Application/FTP instproc fire {} {
> >     >         global filesize
> >     >         $self instvar maxpkts_
> >     >         set maxpkts_ $filesize
> >     > [$self agent] set maxpkts_ $filesize
> >     >         $self send $maxpkts_
> >     > puts "fire() FTP"
> >     > }
> >     >
> >     > #buffersizes
> >     > set buffersize [expr $bdp]
> >     > set buffersize1 [expr $bdp*10]
> >     >
> >     > Queue/CoDel set target_ $target
> >     > Queue/CoDel set interval_ $interval
> >     >
> >     > #set Flow_id 1
> >     >
> >     > proc build_topology { ns } {
> >     >     # nodes n0 and n1 are the server and client side gateways and
> >     >     # the link between them is the congested slow link. n0 -> n1
> >     >     # handles all the server to client traffic.
> >     >     #
> >     >     # if the web_rate is non-zero, node n2 will be the packmime
> >     server cloud
> >     >     # and node n3 will be the client cloud.
> >     >     #
> >     >     # num_ftps server nodes and client nodes are created for the
> ftp
> >     > sessions.
> >     >     # the first client node is n{2+w} and the first server node is
> >     n{2+f+w}
> >     >     # where 'f' is num_ftps and 'w' is 1 if web_rate>0 and 0
> >     otherwise.
> >     >     # servers will be even numbered nodes, clients odd
> >     >     # Warning: the numbering here is ridiculously complicated
> >     >
> >     >     global bw bdelay accessdly buffersize buffersize1 filesize
> >     node_cnt
> >     >     set node_cnt 2
> >     >
> >     >     # congested link
> >     >     global n0 n1
> >     >     set n0 [$ns node]
> >     >     set n1 [$ns node]
> >     >     $ns duplex-link $n0 $n1 $bw ${bdelay}ms CoDel
> >     >     $ns duplex-link-op $n0 $n1 orient right
> >     >     $ns duplex-link-op $n0 $n1 queuePos 0.5
> >     >     $ns duplex-link-op $n1 $n0 queuePos 1.5
> >     >     $ns queue-limit $n0 $n1 $buffersize
> >     >     $ns queue-limit $n1 $n0 $buffersize
> >     >     set node_cnt 2
> >     >
> >     >     #dynamic bandwidth
> >     >     # these are the multipliers for changing bw, times initial set
> bw
> >     >     # edit these values to get different patterns
> >     >     global stopTime dynamic_bw
> >     >     array names bw_changes
> >     >     set bw_changes(1) 0.1
> >     >     set bw_changes(2) 0.01
> >     >     set bw_changes(3) 0.5
> >     >     set bw_changes(4) 0.01
> >     >     set bw_changes(5) 1.0
> >     >
> >     >     puts "bottleneck starts at [[[$ns link $n0 $n1] link] set
> >     > bandwidth_]bps"
> >     >     for {set k 1} {$k <= $dynamic_bw} {incr k 1} {
> >     > set changeTime [expr $k*$stopTime/($dynamic_bw+1)]
> >     > set f $bw_changes($k)
> >     > set newBW [expr $f*$bw]
> >     > puts "change at $changeTime to [expr $newBW/1000000.]Mbps"
> >     > $ns at $changeTime "[[$ns link $n0 $n1] link] set bandwidth_
> $newBW"
> >     > $ns at $changeTime "[[$ns link $n1 $n0] link] set bandwidth_
> $newBW"
> >     > $ns at $changeTime "puts $newBW"
> >     >     }
> >     >
> >     >     set li_10 [[$ns link $n1 $n0] queue]
> >     >     set li_01 [[$ns link $n0 $n1] queue]
> >     >
> >     >     set tchan_ [open /tmp/redqvar.tr <http://redqvar.tr>
> >     <http://redqvar.tr> w]
> >     >     $li_01 trace curq_
> >     >     $li_01 trace d_exp_
> >     >     $li_01 attach $tchan_
> >     >
> >     >     global num_ftps web_rate num_cbrs greedy num_revs
> >     >     set linkbw [expr $bw*10]
> >     >
> >     >     set w [expr $web_rate > 0]
> >     >     if {$w} {
> >     >         global n2 n3
> >     > #server
> >     >         set n2 [$ns node]
> >     >         $ns duplex-link $n2 $n0 $linkbw ${accessdly}ms DropTail
> >     >         $ns queue-limit $n2 $n0 $buffersize1
> >     >         $ns queue-limit $n0 $n2 $buffersize1
> >     >
> >     > #client
> >     >         set n3 [$ns node]
> >     >         $ns duplex-link $n1 $n3 $linkbw ${accessdly}ms DropTail
> >     >         $ns queue-limit $n1 $n3 $buffersize1
> >     >         $ns queue-limit $n3 $n1 $buffersize1
> >     > set node_cnt 4
> >     >     }
> >     > #need to fix the angles if use nam
> >     >     for {set k 0} {$k < $num_ftps} {incr k 1} {
> >     >         # servers
> >     >         set j $node_cnt
> >     >         global n$j
> >     >         set n$j [$ns node]
> >     > if {$greedy > 0 && $k == 0} {
> >     >          $ns duplex-link [set n$j] $n0 $linkbw 1ms DropTail
> >     > } else {
> >     >          $ns duplex-link [set n$j] $n0 $linkbw ${accessdly}ms
> DropTail
> >     > }
> >     >         $ns queue-limit [set n$j] $n0 $buffersize1
> >     >         $ns queue-limit $n0 [set n$j] $buffersize1
> >     >         set angle [expr $num_ftps>1? 0.75+($k-1)*.5/($num_ftps-1)
> : 1]
> >     >         $ns duplex-link-op $n0 [set n$j] orient $angle
> >     > incr node_cnt
> >     >
> >     >         # clients
> >     >         set j $node_cnt
> >     >         global n$j
> >     >         set n$j [$ns node]
> >     >         set dly [expr ${accessdly} +($k+1)]
> >     >         $ns duplex-link $n1 [set n$j] $linkbw  ${dly}ms  DropTail
> >     >         $ns queue-limit $n1 [set n$j] $buffersize1
> >     >         $ns queue-limit [set n$j] $n1 $buffersize1
> >     >         set angle [expr $num_ftps>1?
> >     fmod(2.25-($k-1)*.5/($num_ftps-1),
> >     > 2) : 0]
> >     >         $ns duplex-link-op $n1 [set n$j] orient $angle
> >     > incr node_cnt
> >     >     }
> >     >     for {set k 0} {$k < $num_cbrs} {incr k 1} {
> >     >         # servers
> >     >         set j $node_cnt
> >     >         global n$j
> >     >         set n$j [$ns node]
> >     >         $ns duplex-link [set n$j] $n0 $linkbw ${accessdly}ms
> DropTail
> >     >         $ns queue-limit [set n$j] $n0 $buffersize1
> >     >         $ns queue-limit $n0 [set n$j] $buffersize1
> >     > #        set angle [expr $num_cbrs>1? 0.75+($k-1)*.5/($num_cbrs-1)
> >     : 1]
> >     >         $ns duplex-link-op $n0 [set n$j] orient $angle
> >     > incr node_cnt
> >     >
> >     >         # clients
> >     >         set j $node_cnt
> >     >         global n$j
> >     >         set n$j [$ns node]
> >     >         $ns duplex-link $n1 [set n$j] $linkbw  ${accessdly}ms
> >     DropTail
> >     >         $ns queue-limit $n1 [set n$j] $buffersize1
> >     >         $ns queue-limit [set n$j] $n1 $buffersize1
> >     > #        set angle [expr $num_cbrs>1?
> >     fmod(2.25-($k-1)*.5/($num_ftps-1),
> >     > 2) : 0]
> >     >         $ns duplex-link-op $n1 [set n$j] orient $angle
> >     > incr node_cnt
> >     >     }
> >     > #reverse direction ftps
> >     >     for {set k 0} {$k < $num_revs} {incr k 1} {
> >     >         # clients
> >     >         set j $node_cnt
> >     >         global n$j
> >     >         set n$j [$ns node]
> >     >         $ns duplex-link [set n$j] $n0 $linkbw ${accessdly}ms
> DropTail
> >     >         $ns queue-limit [set n$j] $n0 $buffersize1
> >     >         $ns queue-limit $n0 [set n$j] $buffersize1
> >     >         set angle [expr $num_ftps>1? 0.75+($k-1)*.5/($num_ftps-1)
> : 1]
> >     >         $ns duplex-link-op $n0 [set n$j] orient $angle
> >     > incr node_cnt
> >     >
> >     >         # servers
> >     >         set j $node_cnt
> >     >         global n$j
> >     >         set n$j [$ns node]
> >     >         set dly [expr ($accessdly)*1.1 +($k+1)]
> >     >         $ns duplex-link $n1 [set n$j] $linkbw  ${dly}ms  DropTail
> >     >         $ns queue-limit $n1 [set n$j] $buffersize1
> >     >         $ns queue-limit [set n$j] $n1 $buffersize1
> >     >         set angle [expr $num_ftps>1?
> >     fmod(2.25-($k-1)*.5/($num_ftps-1),
> >     > 2) : 0]
> >     >         $ns duplex-link-op $n1 [set n$j] orient $angle
> >     > incr node_cnt
> >     >     }
> >     > }
> >     >
> >     > proc build_cbr {cnd snd startTime timeToStop Flow_id} {
> >     >     global ns
> >     >     set udp [$ns create-connection UDP $snd LossMonitor $cnd
> $Flow_id]
> >     >     set cbr [new Application/Traffic/CBR]
> >     >     $cbr attach-agent $udp
> >     >     # change these for different types of CBRs
> >     >     $cbr set packetSize_ 100
> >     >     $cbr set rate_ 0.064Mb
> >     >     $ns at $startTime "$cbr start"
> >     >     $ns at $timeToStop "$cbr stop"
> >     > }
> >     >
> >     > # cnd is client node, snd is server node
> >     > proc build_ftpclient {cnd snd startTime timeToStop Flow_id} {
> >     >
> >     >     global ns filesize greedy revftp
> >     >     set ctcp [$ns create-connection TCP/Linux $snd TCPSink/Sack1
> $cnd
> >     > $Flow_id]
> >     >     $ctcp select_ca cubic
> >     >     set ftp [$ctcp attach-app FTP]
> >     >     $ftp set enableResume_ true
> >     >     $ftp set type_ FTP
> >     >
> >     > #set up a single infinite ftp with smallest RTT
> >     >     if {$greedy > 0 || $filesize < 0} {
> >     >      $ns at $startTime "$ftp start"
> >     >      set greedy 0
> >     >     } else {
> >     >      $ns at $startTime "$ftp send $filesize"
> >     >     }
> >     >     $ns at $timeToStop "$ftp stop"
> >     > }
> >     >
> >     > proc build_webs {cnd snd rate startTime timeToStop} {
> >     >     set CLIENT 0
> >     >     set SERVER 1
> >     >
> >     >     # SETUP PACKMIME
> >     >     set pm [new PackMimeHTTP]
> >     >     $pm set-TCP Sack
> >     >     $pm set-client $cnd
> >     >     $pm set-server $snd
> >     >     $pm set-rate $rate;                    # new connections per
> >     second
> >     >     $pm set-http-1.1;                      # use HTTP/1.1
> >     >
> >     >     # create RandomVariables
> >     >     set flow_arrive [new RandomVariable/PackMimeHTTPFlowArrive
> $rate]
> >     >     set req_size [new RandomVariable/PackMimeHTTPFileSize $rate
> >     $CLIENT]
> >     >     set rsp_size [new RandomVariable/PackMimeHTTPFileSize $rate
> >     $SERVER]
> >     >
> >     >     # assign RNGs to RandomVariables
> >     >     $flow_arrive use-rng [new RNG]
> >     >     $req_size use-rng [new RNG]
> >     >     $rsp_size use-rng [new RNG]
> >     >
> >     >     # set PackMime variables
> >     >     $pm set-flow_arrive $flow_arrive
> >     >     $pm set-req_size $req_size
> >     >     $pm set-rsp_size $rsp_size
> >     >
> >     >     global ns
> >     >     $ns at $startTime "$pm start"
> >     >     $ns at $timeToStop "$pm stop"
> >     > }
> >     >
> >     > proc uniform {a b} {
> >     > expr $a + (($b- $a) * ([ns-random]*1.0/0x7fffffff))
> >     > }
> >     >
> >     > proc finish {} {
> >     >         global ns
> >     > $ns halt
> >     >         $ns flush-trace
> >     >         exit 0
> >     > }
> >     >
> >     > # $ns namtrace-all [open out.nam w]
> >     > # $ns color 2 blue
> >     > # $ns color 3 red
> >     > # $ns color 4 yellow
> >     > # $ns color 5 green
> >     >
> >     > build_topology $ns
> >     >
> >     > #$ns trace-queue $n0 $n1 [open out_n0ton1.tr
> >     <http://out_n0ton1.tr> <http://out_n0ton1.tr> w]
> >     > #set fname f${num_ftps}w${web_rate}b${bottleneck}.tr
> >     > set fname f.tr <http://f.tr> <http://f.tr>
> >     > puts $fname
> >     > $ns trace-queue $n0 $n1 [open /tmp/$fname w]
> >     > #reverse direction
> >     > #$ns trace-queue $n1 $n0 [open /tmp/$fname w]
> >     >
> >     > set node_cnt 2
> >     > if {$web_rate > 0} {
> >     >         build_webs $n3 $n2 $web_rate 0 $stopTime
> >     > set node_cnt 4
> >     > }
> >     >
> >     > for {set k 1} {$k <= $num_ftps} {incr k 1} {
> >     >     set j $node_cnt
> >     >     incr node_cnt
> >     >     set i $node_cnt
> >     >     build_ftpclient [set n$i] [set n$j]  \
> >     >  $startTime $stopTime $i
> >     > # [expr 1.0*($k-1)] $stopTime $i
> >     > # [expr $startTime+($k-1)*[uniform 0.0 2.0]] $stopTime $i
> >     >     incr node_cnt
> >     > }
> >     >
> >     > for {set k 1} {$k <= $num_cbrs} {incr k 1} {
> >     >     set j $node_cnt
> >     >     incr node_cnt
> >     >     set i $node_cnt
> >     >     build_cbr [set n$i] [set n$j]  \
> >     >  [expr $startTime+($k-1)*[uniform 0.0 2.0]] $stopTime $i
> >     >     incr node_cnt
> >     > }
> >     >
> >     > #for reverse direction, give client smaller number
> >     > for {set k 1} {$k <= $num_revs} {incr k 1} {
> >     >     set j $node_cnt
> >     >     incr node_cnt
> >     >     set i $node_cnt
> >     >     build_ftpclient [set n$j] [set n$i] $startTime $stopTime $j
> >     >     incr node_cnt
> >     > }
> >     >
> >     > $ns at [expr $stopTime ] "finish"
> >     > $ns run
> >     > exit 0
> >     > ###################################################################
> >     >
> >     >
> >     > _______________________________________________
> >     > Codel mailing list
> >     > Codel at lists.bufferbloat.net <mailto:Codel at lists.bufferbloat.net>
> >     > https://lists.bufferbloat.net/listinfo/codel
> >     >
> >
> >
> >
> >     ------------------------------
> >
> >     Message: 2
> >     Date: Thu, 19 Feb 2015 13:38:53 -0800
> >     From: Dave Taht <dave.taht at gmail.com <mailto:dave.taht at gmail.com>>
> >     To: Kathleen Nichols <nichols at pollere.com <mailto:
> nichols at pollere.com>>
> >     Cc: "codel at lists.bufferbloat.net
> >     <mailto:codel at lists.bufferbloat.net>" <codel at lists.bufferbloat.net
> >     <mailto:codel at lists.bufferbloat.net>>
> >     Subject: Re: [Codel] Codel code
> >     Message-ID:
> >
> >     <CAA93jw5dWzXfEX70w1PFmPudH+qfurq=e4Srbth2+f4QC2h4Og at mail.gmail.com
> >     <mailto:e4Srbth2%2Bf4QC2h4Og at mail.gmail.com>>
> >     Content-Type: text/plain; charset=UTF-8
> >
> >     I am fairly happy with the example codel code that is now in the ns3
> >     branch,
> >     which is pure c++, and quite a bit easier to understand than tcl, to
> >     my eye.
> >
> >     https://www.nsnam.org/doxygen/codel-vs-droptail-asymmetric_8cc.html
> >
> >     regrettably the fq_codel version for ns3 is still out of tree.
> >
> >
> >     ------------------------------
> >
> >     Message: 3
> >     Date: Fri, 20 Feb 2015 00:46:11 -0800
> >     From: Anjali Chawla <anjaliachawla013 at gmail.com
> >     <mailto:anjaliachawla013 at gmail.com>>
> >     To: codel at lists.bufferbloat.net <mailto:codel at lists.bufferbloat.net>
> >     Subject: [Codel] Setpoint in CoDel
> >     Message-ID:
> >
> >     <CAL6QuG8ktPQgrGkA+wp9V=BHqdcQh4E19dsX02Pozh_fjfJ+0w at mail.gmail.com
> >     <mailto:BHqdcQh4E19dsX02Pozh_fjfJ%2B0w at mail.gmail.com>>
> >     Content-Type: text/plain; charset="utf-8"
> >
> >     Hi
> >     anyone please explain me what is concept behind  setpoint in codel
> >     algorithm??
> >     Thanks
> >     -------------- next part --------------
> >     An HTML attachment was scrubbed...
> >     URL:
> >     <
> https://lists.bufferbloat.net/pipermail/codel/attachments/20150220/285d07dd/attachment-0001.html
> >
> >
> >     ------------------------------
> >
> >     Message: 4
> >     Date: Fri, 20 Feb 2015 01:21:13 -0800
> >     From: Dave Taht <dave.taht at gmail.com <mailto:dave.taht at gmail.com>>
> >     To: Anjali Chawla <anjaliachawla013 at gmail.com
> >     <mailto:anjaliachawla013 at gmail.com>>
> >     Cc: "codel at lists.bufferbloat.net
> >     <mailto:codel at lists.bufferbloat.net>" <codel at lists.bufferbloat.net
> >     <mailto:codel at lists.bufferbloat.net>>
> >     Subject: Re: [Codel] Setpoint in CoDel
> >     Message-ID:
> >
> >     <CAA93jw43TJdo9FK61HK0et3Mopq8-YKjjkNm_6_OF7+g0iMipw at mail.gmail.com
> >     <mailto:
> CAA93jw43TJdo9FK61HK0et3Mopq8-YKjjkNm_6_OF7%2Bg0iMipw at mail.gmail.com>>
> >     Content-Type: text/plain; charset=UTF-8
> >
> >     the best talk on the subject was van?s at ietf, it is well worth
> >     watching multiple times.
> >
> >     http://www.bufferbloat.net/projects/cerowrt/wiki/Bloat-videos
> >
> >     He goes deeply into the reasoning behind the sojourn time, and
> setpoint.
> >
> >     About the only other somewhat in-depth talk on how codel really works
> >     was my attempt at stanford.
> >
> >     and there are of course other talks above that try to describe bits
> of
> >     the elephant.
> >
> >     One of these days I hope someone puts together the definitive talk on
> >     codel complete with even more elegant demos than stephen hemminger
> >     came up with..., but it does seem to be really hard for people to get
> >     at a deep level... most of my own talks are more about fq than
> >     fq_codel, and that is *tons* easier to explain.
> >
> >     If you watch them all a bunch of times, and run a few experiments of
> >     your own, enlightenment will come. For me, it was seeing kathie give
> >     the first public explanation of codel - about midway through I
> started
> >     vibrating in my seat - but I had just completed a slash and burn tour
> >     through all the aqm literature going back 30 years, and trying
> >     everything that seemed to make sense. I don?t know how to impart that
> >     in an email...
> >
> >
> >     On Fri, Feb 20, 2015 at 12:46 AM, Anjali Chawla
> >     <anjaliachawla013 at gmail.com <mailto:anjaliachawla013 at gmail.com>>
> wrote:
> >     > Hi
> >     > anyone please explain me what is concept behind  setpoint in codel
> >     > algorithm??
> >     > Thanks
> >     >
> >     > _______________________________________________
> >     > Codel mailing list
> >     > Codel at lists.bufferbloat.net <mailto:Codel at lists.bufferbloat.net>
> >     > https://lists.bufferbloat.net/listinfo/codel
> >     >
> >
> >
> >
> >     --
> >     Dave T?ht
> >
> >     thttp://www.bufferbloat.net/projects/bloat/wiki/Upcoming_Talks
> >     <http://www.bufferbloat.net/projects/bloat/wiki/Upcoming_Talks>
> >
> >
> >     ------------------------------
> >
> >     Message: 5
> >     Date: Fri, 20 Feb 2015 10:01:54 -0800
> >     From: Dave Taht <dave.taht at gmail.com <mailto:dave.taht at gmail.com>>
> >     To: Anjali Chawla <anjaliachawla013 at gmail.com
> >     <mailto:anjaliachawla013 at gmail.com>>
> >     Cc: "codel at lists.bufferbloat.net
> >     <mailto:codel at lists.bufferbloat.net>" <codel at lists.bufferbloat.net
> >     <mailto:codel at lists.bufferbloat.net>>
> >     Subject: Re: [Codel] Setpoint in CoDel
> >     Message-ID:
> >
> >     <CAA93jw7147Ucy=fRmt-65VuUSDyVwHwH9NCmOFjq4GULYGC63A at mail.gmail.com
> >     <mailto:fRmt-65VuUSDyVwHwH9NCmOFjq4GULYGC63A at mail.gmail.com>>
> >     Content-Type: text/plain; charset=UTF-8
> >
> >     On Fri, Feb 20, 2015 at 1:21 AM, Dave Taht <dave.taht at gmail.com
> >     <mailto:dave.taht at gmail.com>> wrote:
> >     > the best talk on the subject was van?s at ietf, it is well worth
> >     > watching multiple times.
> >     >
> >     > http://www.bufferbloat.net/projects/cerowrt/wiki/Bloat-videos
> >     >
> >     > He goes deeply into the reasoning behind the sojourn time, and
> >     setpoint.
> >     >
> >     > About the only other somewhat in-depth talk on how codel really
> works
> >     > was my attempt at stanford.
> >
> >     The stanford talk took some digging to find. I would really like a
> shot
> >     at a do-over one day - or for van to give his talk again to be
> filmed at
> >     high quality.
> >
> >     https://www.youtube.com/watch?v=Mxoa5Si4Ubw
> >
> >     >
> >     > and there are of course other talks above that try to describe
> bits of
> >     > the elephant.
> >     >
> >     > One of these days I hope someone puts together the definitive talk
> on
> >     > codel complete with even more elegant demos than stephen hemminger
> >     > came up with..., but it does seem to be really hard for people to
> get
> >     > at a deep level... most of my own talks are more about fq than
> >     > fq_codel, and that is *tons* easier to explain.
> >     >
> >     > If you watch them all a bunch of times, and run a few experiments
> of
> >     > your own, enlightenment will come. For me, it was seeing kathie
> give
> >     > the first public explanation of codel - about midway through I
> started
> >     > vibrating in my seat - but I had just completed a slash and burn
> tour
> >     > through all the aqm literature going back 30 years, and trying
> >     > everything that seemed to make sense. I don?t know how to impart
> that
> >     > in an email...
> >     >
> >     >
> >     > On Fri, Feb 20, 2015 at 12:46 AM, Anjali Chawla
> >     > <anjaliachawla013 at gmail.com <mailto:anjaliachawla013 at gmail.com>>
> >     wrote:
> >     >> Hi
> >     >> anyone please explain me what is concept behind  setpoint in codel
> >     >> algorithm??
> >     >> Thanks
> >     >>
> >     >> _______________________________________________
> >     >> Codel mailing list
> >     >> Codel at lists.bufferbloat.net <mailto:Codel at lists.bufferbloat.net>
> >     >> https://lists.bufferbloat.net/listinfo/codel
> >     >>
> >     >
> >     >
> >     >
> >     > --
> >     > Dave T?ht
> >     >
> >     > thttp://www.bufferbloat.net/projects/bloat/wiki/Upcoming_Talks
> >     <http://www.bufferbloat.net/projects/bloat/wiki/Upcoming_Talks>
> >
> >
> >
> >     --
> >     Dave T?ht
> >
> >     thttp://www.bufferbloat.net/projects/bloat/wiki/Upcoming_Talks
> >     <http://www.bufferbloat.net/projects/bloat/wiki/Upcoming_Talks>
> >
> >
> >     ------------------------------
> >
> >     _______________________________________________
> >     Codel mailing list
> >     Codel at lists.bufferbloat.net <mailto:Codel at lists.bufferbloat.net>
> >     https://lists.bufferbloat.net/listinfo/codel
> >
> >
> >     End of Codel Digest, Vol 29, Issue 4
> >     ************************************
> >
> >
> >
> >
> > _______________________________________________
> > Codel mailing list
> > Codel at lists.bufferbloat.net
> > https://lists.bufferbloat.net/listinfo/codel
> >
>
>
>
> ------------------------------
>
> _______________________________________________
> Codel mailing list
> Codel at lists.bufferbloat.net
> https://lists.bufferbloat.net/listinfo/codel
>
>
> End of Codel Digest, Vol 29, Issue 6
> ************************************
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.bufferbloat.net/pipermail/codel/attachments/20150223/a17a3718/attachment-0002.html>


More information about the Codel mailing list