On Mar 23, 2007, at 9:43 AM, Avinash Sridharan wrote:
Hi Phil,
By service rates of a packet I mean the service rate that the
queue is giving to each packet. Since the buffer space for the
clients and the forwarders are different the probability that you
serve a client packet should be lower then the probability that you
serve a forwarded packet (assuming both are generating packets at
the same rate).
Again, you're assuming that the forwarding engine is trying to
achieve fairness. It's not. No fixed ratio between those two rates
can provide fairness. The assumption is that if you want fairness,
you have to have higher-level mechanisms/feedback/rate control/etc.
If you do, then you can just control the rate at which packets enter
the client queues, and so why should CTP introduce additional logic
that is bloat except for this case?
I agree fairness is at the flow level but the fair rates that you
would calculate for each flow is closely tied to the maximum
possible rate that each flow can be serviced at, which in turn is
determined by the queuing dynamics. This reasoning leads to my
statement " that there seems to be an inherent unfairness in the
queuing dynamics ".
You're assuming that rate control is independent of servicing rates.
It's not. If you decrease the generation rate throughout the entire
network, then you can change the ratio between local generation and
forwarding. IFRC does this, after all.
Also under light loads the above affects might not show up as you
stated since if the average queue length of the forwarded packets
is going to be close to 1 then all the above dynamics I just
described wouldn't come into play. But again this would depend on
what you define a "light" load as (what if the average queue length
is greater than 1 ?).
I mean "light loads" in the traditional sense for this sort of
problem, that is, "loads low enough that you do not drop packets from
your queues." If every node is generating packets at its fair rate F,
and you are not dropping packets, then you have fairness. If you want
to control fairness through packet drops, then generally you need to
maintain per-child state. Also, given that these are nominally low
power networks, the idea of rate control through wasting energy seems
a bit questionable.
Nevertheless, the Intercept handler allows you to tell CTP to drop
packets. So you can control the generation rate, and you can drop
packets from the forwarding queue.
Please, if there's some piece of functionality that you think the
forwarding engine needs but does not understand, state it clearly and
succinctly. E.g., "I need a command that tells me the number of
forwarding packets in the transmission queue."
My objective here was to develop a rate control mechanism on top of
the CTP framework and the rates that I was calculating was based on
the notion that all flows are treated the same in the queues.
However as I mentioned earlier the rates I was getting were coming
out to be disproportional, but I concede that the experiments were
being carried out at heavy load (all queues were almost fully loaded).
Well, under light load, fairness doesn't matter/make any sense.
It sounds like you wrote an algorithm that made an incorrect
assumption about CTP.
You should talk with Om. He is the lead person on CTP, after all, and
I suspect his office is not so far from yours... he can probably
answer your questions much more completely and quickly than I can.
Sumit (also at USC) had a paper in SIGCOMM on fair queueing in
wireless sensornets, implemented in TinyOS. You might want to talk
with these people to get a sense of the scope of the problem.
Phil
_______________________________________________
Tinyos-help mailing list
[email protected]
https://mail.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help