[Bloat] sigcomm wifi
David Lang
david at lang.hm
Sun Aug 31 18:35:26 EDT 2014
On Mon, 25 Aug 2014, Michael Welzl wrote:
>> But this cache of recently sent packets is separate from a queue of packets waiting to be sent.
>>
>> the size of the buffer used to track what's been sent isn't a problem. the
>> bufferbloat problem is aroudn the size of the queue for packet waiting to be
>> sent.
>
> This confuses me. Why do you even need a cache of recently sent packets?
so that you can re-send them.
if you are the originator of the packet, you need to have this.
If your are relaying packets over some media that has link-level acks you need
this for all packets you relay as well
> Anyway, what I am talking about *is* the size of the queue for packets waiting
> to be sent - and not only due to aggregation but also link layer retransmits.
> Per device, at the link layer, packets (frames, really) are sent in sequence
> AFAIK, and so any frame that has been sent but not yet acknowledged and then
> has to be resent if it isn't acknowledged holds up all other frames to that
> same destination.
>
>
>
>>>> If people are retrying when they really don't need to, that cuts down on the avialable airtime.
>>>
>>> Yes
>>>
>>>
>>>> But if you have continual transmissions taking place, so you have a hard time getting a chance to send your traffic, then you really do have congestion and should be dropping packets to let the sender know that it shouldn't try to generate as much.
>>>
>>> Yes; but the complexity that I was pointing at (but maybe it's a simple parameter, more like a 0 or 1 situation in practice?) lies in the word "continual". How long do you try before you decide that the sending TCP should really think it *is* congestion? To really optimize the behavior, that would have to depend on the RTT, which you can't easily know.
>>
>> Again, I think you are mixing two different issues here.
>
> No, I think you misunderstand me -
>
>
>> 1. waiting for a pause in everyone else's transmissions so that you can
>> transmit wihtout _knowing_ that you are going to clobber someone
>>
>> Even this can get tricky, is that station you are hearing faintly trying to
>> transmit to a AP near you so you should be quiet? or is it transmitting to a
>> station enough further away from you so you can go ahead and transmit your
>> packet to your AP without interfering with it?
>
> You mean the normal CSMA/CA procedure ( + RTS/CTS)? Sure that's tricky in
> itself but I wasn't talking about that.
>
>
>> 2. your transmission gettng clobbered so the packet doesn't get through,
>> where you need to wait 'long enough' to decide that it's not going to be
>> acknowledged and try again.
>
> I was always only talking about that second bit. I'm sure I wasn't clear
> enough in writing and I'm sorry for that.
>
>
>> This is a case where a local proxy server can actually make a big difference
>> to you. The connections between your mobile devices and the local proxy
>> server have a short RTT and so all timeouts can be nice and short, and then
>> the proxy deals with the long RTT connections out to the Internet.
>
> Adding a proxy to these considerations only complicates them: it's a hard
> enough trade-off when we just ask ourselves: how large should a buffer for the
> sake of link layer retransmissions be? (which is closely related to the
> question: how often should a link layer try to retransmit before giving up?)
> That's what my emails were about. I suspect that we don't have a good answer
> to even these questions, and I suspect that we'd better off having something
> dynamic than fixed default values.
A proxy should simplify this, because the total connection RTT now is client <->
AP <-> proxy, not client <-> AP <-> Internet <-> server.
if you can _know_ that the endpoint of the connection is a local proxy that's
only 10ms away, you don't need to have timeouts long enough to handle a
multi-second connection to a server on the other side of the world with you both
using satellite links
David Lang
More information about the Bloat
mailing list