Simple click config is VERY slow on our system; also the PollDevice doesn't work on our tulip.

Tao Zhao taozhao at cs.nyu.edu
Sun Mar 3 17:24:55 EST 2002


Thanks for your time on this issue.

> (2) What if you had just one DelayUnqueue with 10 times the delay? What
> happens there? (Why do you cascade the blocks anyway?)

As Eric desribed before we want to simulate a wide area network using
click on the same media (a switch in our case). Links between different
networks has different bandwidth and latency. We use classifiers to route
a packet from one network to another and along the road we impose
bandwidth and latency constraints according to the link property we
predefined. So if serveral links exist between two nodes, we will create a
cascade of blocks you saw in previous emails.

> (3) What happens if you have one DelayUnqueue with the normal delay, but
> you also have 10 DelayUnqueue blocks just sitting there idling? Like this:
> 
>     Idle
> 	-> Queue(256)
> 	-> BandwidthShaper(100000000)
> 	-> SetTimestamp
> 	-> DelayUnqueue(0.00001s)
> 	-> Idle;
> 
> Does this still have high variance? Each of the DelayUnqueue elements (even
> the idling ones) sticks itself on Click's task list. This experiment is
> trying to determine whether the variance is due to task list issues.
> 
> (4) What happens if you don't send the packets to Linux? We have
> experienced problems recently with the ToLinux element. Its locking
> discipline is broken. We are working on fixing it.

I did two experiments today:

a. (see attached configuration file a). packets go to linux directly from
FromDevice(), which is the only element in the configuration besides the
classifier. Then I pinged from one machine to another, the latency is
about 200us with very low variation, almost the same as without click
installed.

b. (see attached configuration file b). packets go to linux directly from
FromDevice(). But there are 100 idle blocks with total 300 elements (three
kinds: Queue, SetTimestamp and DelayUnqueue)  at background. Then I pinged
from one machine to another, the latency went from 3ms upto as high as
400ms within 2 minutes and stayed at that level with high variation.

The wire was quiet in these two experiments except the ping traffic.

>From above, it seems that the delay is caused by the background
elements; maybe the task list got too crowded?

Please let us know your opinion on this issue.

BTW, we couldn't make PollDevice work on our system. No packets will go
through if we use it intead of FromDevice. We use tulip NIC. Anyway, we
don't think this causes above problem.

Thanks,
-Tao
-------------- next part --------------
FromDevice(eth1) ->
cc :: IPClassifier(src 1.1.1.0, dst 1.1.1.1,  dst 1.1.1.2,  dst 1.1.1.3,  dst 1.1.1.4,  dst 1.1.1.5,  dst 1.1.1.6,  dst 1.1.1.7,  dst 1.1.1.8, dst 1.1.1.9, -);

cc[0] -> ToLinux;
cc[1] -> ToLinux;
cc[2] -> ToLinux;
cc[3] -> ToLinux;
cc[4] -> ToLinux;
cc[5] -> ToLinux;
cc[6] -> ToLinux;
cc[7] -> ToLinux;
cc[8] -> ToLinux;
cc[9] -> ToLinux;
cc[10] -> ToLinux;
-------------- next part --------------

// all first 9 are dummies: only the last one will match
FromDevice(eth1) -> 
cc :: IPClassifier(dst 1.1.1.0, dst 1.1.1.1,  dst 1.1.1.2,  dst 1.1.1.3,  dst 1.1.1.4,  dst 1.1.1.5,  dst 1.1.1.6,  dst 1.1.1.7,  dst 1.1.1.8, dst 1.1.1.9, -);

// all traffic goes here
cc[10] -> ToLinux

// dummies. each has 10 sets of 3 elements just to increase the # of elements
// in click and task list.
cc[0] 
 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 
 -> Idle;

cc[1] 
 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 
-> Idle;

cc[2] 
 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 
	
 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 
-> Idle;

cc[3] 
 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 
-> Idle;

cc[4] 
 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 
-> Idle;

cc[5] 
 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 
	
 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 
-> Idle;

cc[6] 
 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 
-> Idle;

cc[7] 
 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 
-> Idle;

cc[8] 
 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 
-> Idle;

cc[9] 
 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 

 -> Queue(256)
 -> SetTimestamp 
 -> DelayUnqueue(0.00001s) 
-> Idle;





More information about the click mailing list