[Click] LinkUnqueue multiple flows shaping issues

Eddie Kohler kohler at cs.ucla.edu
Thu Jun 23 22:18:00 EDT 2011


Please cc: your replies to the list.

On 06/23/2011 04:22 PM, milos rovcanin wrote:
> Hello,
> I am not sure that you have understood me right: I am using Jperf 2.0 to
> generate UDP/TCP traffic and I am trying to send TWO flows at the same time,
> from host1 and host2 towards  host 3, through a router that runs my script. I
> need to have 2 LinqUnqueue elements, for host1 and host2 , respectively.
> Therefore, to test a configuration with only one LinkUnqueue element won't
> help me in any way.

I have understood you.

If you expect anyone to help you solve your problem, you need to help narrow 
down the problem to a minimal bug report.

If you are sure that the problem DOES NOT occur with one LinkUnqueue, but DOES 
occur with two, that would be helpful.  You could report the experiments that 
brought you to this conclusion.

If you are not sure, then you have not created a minimal bug report yet.  I 
sent a script that you change to create a smaller test case.

With your own code, you can test by, for example, only sending one of the two 
flows at a time, or whatever else.

> Could you, at least, explain to me what "scheduled" handler (or is it a flag
> of some kind) mean? You can see it when you run Clicky and check your
> LinkUnqueue element?

"scheduled" is true if the element is rescheduling itself using Tasks, and 
false if it is rescheduling itself using Timers.  It is not very meaningful in 
this scenario.

Eddie


>
>
> Thank you very much for your time!
> On Fri, Jun 24, 2011 at 1:09 AM, milos rovcanin <ro1208984 at gmail.com
> <mailto:ro1208984 at gmail.com>> wrote:
>
>
>
>     On Thu, Jun 23, 2011 at 8:02 PM, Eddie Kohler <kohler at cs.ucla.edu
>     <mailto:kohler at cs.ucla.edu>> wrote:
>
>         Milos,
>
>         Are you sure this is a bug?
>
>         Remember that LinkUnqueue enforces a BANDWIDTH limit.  That means that
>         you SHOULD see more smaller packets per second than larger ones.
>
>         I wrote the following Click script to test the enforced bandwidth of
>         LinkUnqueue at three packet sizes, first 64, then 1000, then 32.  The
>         observed bandwidths for these three packet sizes is:
>
>         10039296
>         10000000
>         10000080
>
>         all of which are pretty close to 10000000 bps!!
>
>         If you really think this is a bug please provide the simplest test
>         case possible -- preferably involving only one LinkUnqueue.
>
>         Eddie
>
>
>         s :: InfiniteSource(LENGTH 64)
>                 -> q :: Queue
>                 -> l :: LinkUnqueue(LATENCY 0, BANDWIDTH 10000000 bps)
>                 -> c :: Counter
>                 -> Discard;
>
>         DriverManager(
>                 wait 5s,
>                 write s.active false,
>                 print $(mul $(c.count) $(s.length) 1.6), // 1.6 == 8 bits / 5 sec
>
>                 write c.reset,
>                 write q.reset,
>                 write l.reset,
>                 write s.length 1000,
>                 write s.active true,
>                 wait 5s,
>                 write s.active false,
>                 print $(mul $(c.count) $(s.length) 1.6),
>
>                 write c.reset,
>                 write q.reset,
>                 write l.reset,
>                 write s.length 30,
>                 write s.active true,
>                 wait 5s,
>                 write s.active false,
>                 print $(mul $(c.count) $(s.length) 1.6),
>         );
>
>
>
>         On 06/23/2011 07:00 AM, milos rovcanin wrote:
>
>             Greetings to all,
>
>             I have noticed an awkward behaviour of the LinkUnqueue() element
>             when trying
>             to send two flows at the same time (UDP/UDP, TCP/TCP, UDP/UDP).
>             This is,
>             pretty much, what my configuration looks like:
>
>               ...
>                ->Qtag0::Queue(20)
>                ->  LinkUnqueue(LATENCY 0,BANDWIDTH 13000000 bps)
>                ->  Queue()
>                ->  [0]output;
>
>               ...
>                ->  Qtag1::Queue(20)
>                ->  LinkUnqueue(LATENCY 0,BANDWIDTH 9000000 bps)
>                ->  Queue()
>                ->  [1]output;
>
>             and while I am sending at rates lower than the ones defined in the
>             LinkUnqueue() element, everything seems to be working fine.
>             Problems start
>             to occur when one or both of the flows exceed the threshold. In
>             other words,
>             when LinkUnque() starts to shape. Both flow rates drop
>             significantly, but
>             only if the packet size is over 850 bytes! For example, if I use
>             MSS of 1000
>             bytes, everything work fine even with higher rates.
>
>             I used Clicky to check the status of the LinkUnqueue() element and
>             I noticed
>             this:
>             - Qtag0/Qtag1 lenghts are 1 all the time and LinkEnqueue's handler
>             "scheduled" is true - when I send smaller packets (the ones that cause
>             problems)
>             - Qtag0/Qtag1 gets immediately full all the time and LinkEnqueue's
>             handler
>             "scheduled" is false - when I send larger packets (~850B and larger)
>
>             Does anyone have any idea what could be the problem and how to
>             solve it?
>
>             Thank you in advance!
>
>
>
>
>     --
>     Milos Rovcanin
>     Department of Information Technology
>     Internet Based Communication Networks and Services research group (IBCN)
>     Ghent University - IBBT
>     Gaston Crommenlaan 8 (Bus 201), B-9050 Gent, Belgium
>     T: +32 9 33 14946 ; T Secr: +32 9 33 14900
>     E: Milos.Rovcanin at intec.UGent.be <mailto:Milos.Rovcanin at intec.UGent.be>
>     W: www.ibcn.intec.UGent.be <http://www.ibcn.intec.UGent.be>
>
>
>
>
> --
> Milos Rovcanin
> Department of Information Technology
> Internet Based Communication Networks and Services research group (IBCN)
> Ghent University - IBBT
> Gaston Crommenlaan 8 (Bus 201), B-9050 Gent, Belgium
> T: +32 9 33 14946 ; T Secr: +32 9 33 14900
> E: Milos.Rovcanin at intec.UGent.be <mailto:Milos.Rovcanin at intec.UGent.be>
> W: www.ibcn.intec.UGent.be <http://www.ibcn.intec.UGent.be>
>


More information about the click mailing list