[Click] Problem with click fake-router.click and delay elements

Sahan Gamage sahans at gmail.com
Fri Jan 22 16:40:07 EST 2010


Hi Cliff,

thanks for the reply.
Yes I am running the latest sources.
I tried following 2 configurations :
InfiniteSource(LENGTH 1000) -> EtherEncap(0x0800, 00:11:43:58:19:D1,
00:11:43:58:19:D1) -> Queue(2000) -> ToDevice(eth1);
and
InfiniteSource(LENGTH 1000) -> EtherEncap(0x0800, 00:11:43:58:19:D1,
00:11:43:58:19:D1) -> DelayUnqueue(0.005s) -> Queue(2000) ->
ToDevice(eth1);

Other than click trying to occupy 100% of the CPU nothing special
happened. Also I didn't see the "BUG! Tx Ring full when queue awake!"
thing showing up.

I am still trying to figure out what causes the actual problem.

Thanks
-sahan

On Thu, Jan 21, 2010 at 6:42 PM, Cliff Frey <cliff at meraki.com> wrote:
> Without knowing anything for sure, I suspect that your ethernet driver has a
> bug in the transmit side when transmitting traffic faster than the wire
> rate.
> You could try a configuration like
> InfiniteSource(LENGTH 1000) -> EtherEncap(...) -> Queue -> ToDevice;
> and I imagine that you would see the same behavior.
> You could also try plugging eth0 into a slower ethernet connection (10 or
> 100Mbps) and you might see the same behavior.
> Are you running the most recent click sources (from git)?  There might have
> been some ToDevice changes since then...
> In any case, just my random ideas... I doubt that LinkUnqueue or Queue are
> actually misbehaving.
> Cliff
>
> On Thu, Jan 21, 2010 at 2:07 PM, Sahan Gamage <sahans at gmail.com> wrote:
>>
>> Hi All,
>>
>> I was working with click router to implement a delay inducing network.
>> What I wanted was to configure a click router with standard routing
>> components and once the routing is done, add some extra delay
>> (specified). So I modified the fake-router.click to include real
>> network devices (which is much similar to the router discussed in SOSP
>> 99 paper). I encountered two problems.
>> 1. When I ran the router without delay elements and use an iperf
>> client and server on the two sides of the router, the maximum
>> throughput I got was 330Mbps. The network drivers were tg3 drivers. My
>> feeling is that the throughput is somewhat lower than that is
>> expected.
>>
>> 2. Then I changed the configuration a little bit to introduce delays.
>> What I did was change the output component from:
>> out0 :: Queue(2000) -> ToDevice(eth0)
>> to
>> out0 :: Queue(2000) -> LinkUnqueue(0.005s, 1000Mbps) -> Queue(2000) ->
>> ToDevice(eth0).
>>
>> I did this for both eth0 and eth1.
>> But when I ran this configuration, the machine always locks up.
>> Sometimes I can see there's a log entry in kernel message log saying
>> "tg3: eth1: BUG! Tx Ring full when queue awake!".  Few  options I
>> tried :
>>  - I tried different delay elements such as LinkUnqueue and DelayUnqueue.
>>  - I tried different Queue sizes (from 200 to 5000).
>>  - I changed the Tx ring size of the devices to 511 (maximum allowed).
>>
>> But none of them resolved the problem.
>>
>> My feeling is the crash (or the lockup) is primarily due to the delay
>> introducing elements (LinkUnqueue or DelayUnqueue). Does anybody know
>> the reasons for reduced performance numbers and the lockups ?
>>
>> (I have attached my configuration file along with this)
>>
>> Thanks in advance
>> -sahan
>>
>> _______________________________________________
>> click mailing list
>> click at amsterdam.lcs.mit.edu
>> https://amsterdam.lcs.mit.edu/mailman/listinfo/click
>>
>
>



More information about the click mailing list