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