[e2e] Some thoughts on WLAN etc., was: Re: RES: Why Buffering?

Detlef Bosau detlef.bosau at web.de
Mon Jul 6 11:54:46 PDT 2009


David P. Reed wrote:
> I think you are confusing link troubles with "network" troubles.  (and 
> WLAN's are just multi-user links, pretty much).
No way. Did I use the word "trouble" even once? (No kidding.)

> Part of the architecture of some link layers is a "feature" that is 
> designed to declare the link "down" by some kind of measure.

O.k., than this feature is, at least in some sense, a "declaration".


>   Now this is clearly a compromise - the link in most cases is only 
> temporarily "down", depending on the tolerance of end-to-end apps for 
> delay.

For delay and, of course, for reliability. However, that's a minor point.

At least the term "temporarily" is quite sensitive here. When a link is 
"temporarily down", one would expect the link to be "up again" at some 
time. Particularly in the literature on opportunistic scheduling you 
always will find the attitude (if unspoken): "When the link is bad - 
we'll send it later, when the link is better." _Will_ a bad link ever be 
better?

I'm not thinking of troubles. Actually, this question reflects my 
personal life experience. How often did I waste years of my life - just 
waiting, for something to become better. (Perhaps, this kind of thinking 
is some kind of midlife crisis.... May be. But if the consequence is to 
stop waiting and to seize the day instead - than this is the right 
consequence.)

When there is evidence, that bad link conditions will be overcome in 
some realistic period of time, it makes sense to defer sending. No 
discussion about that. But what should be done in cases where such an 
evidence doesn't exist?

When a wireline link is "down", this may mean different things:

1. The cabling is broken. No discussion, the cabling must be fixed and 
if possible, an alternative routing should be chosen until the problem 
is fixed.

2. Power supply, Router, Switch, Hub or any other malware made of steel, 
copper and plastic is broken. Same discussion as 1.

3. Referring to the sense of "temporarily down": Routing protocols may 
assess load metrics or other cost metrics - and may declare a link 
"down", i.e. not feasible, when the load becomes to high or the link 
becomes to expensive.

However, I would ask the same question here: Is there any evidence, that 
the load / costs /... will drop down some time?

Of course, these are two different scenarios. i) "Permanently down until 
some thechnical problem is fixed." ii) "Temporarily down, until the link 
becomes feasible again." Both in common, I made the quiet assumption, 
that an alternative route exist. Which may not be the case e.g. in WWWAN 
scenarios.


> In an 802.11* LAN (using standard WiFi MAC protocols), there is one of 
> these"declared down", whether you are using APs or Virtual LANs or 
> AdHoc mode (so called) or even 802.11s mesh.    Since 802.11 doesn't 
> take input from the IETF, it has no notion of meeting the needs of 
> end-to-end protocols for a *useful* declaration.  Instead, by studying 
> their navels, the 802.11 guys wait a really long (and therefore 
> relatively useless in terms of semantics) before declaring a WLAN 
> "link" down.  Of course that is a "win" if your goal is just managing 
> the link layer.

Hm. One thing, I learned from my CS colleagues is that in CS we have a 
quite strong "top down view", i.e. it would be helpful to respect the 
application layers needs for a "link down declaration". And these may 
well depend on the scenario.
I well remember an RFC draft submitted by Martina Zitterbart et al. some 
years ago which proposed a "limited effort class" in the context of QoS 
and DiffServ. Just to mention an example that users don't necessarily 
require a high throughput link. So, in my opinion, a "useful 
declaration" for "link declared down" should respect the user's 
requirements.

Perhaps it would even be possible  to use a wireless link for those 
applications, for which the minimum requirements for a link are met and 
not to use the same link for other applications.


>
> What would be useful to the end-to-end protocol is a meaningful 
> assessment of the likelihood that a packet will be deliverable over 
> that link as a function of time as it goes into the future.   

Indeed. However, I'm not quite sure if this is possible. I'm looking for 
something like this for some years now, however the more I understand 
wireless networks, the less optimistic I become in this respect.
> This would let the end-to-end protocol decide whether to tear down the 
> TCP circuit and inform the app, or just wait, if the app is not delay 
> sensitive in the time frame of interest.
>

Of course. However, this is one example for common principle "prediction 
is hard, especially of the future". (Credited to numerous people.)
> Unfortunately, TCP's default is typically 30 seconds long - far too 
> long for a typical interactive app.  

In some GPRS standard, even latencies of 600 seconds were accepted. This 
may be quite long for quite a few apps.

However: 30 seconds, even 0.30 secodns, are "ages" in the context of 
wireless networks. I don't know any reasonable CE guy who would make a 
forecast for a wireless channel's quality, or a packet corruption ratio, 
for 30 seconds, despite of lab scenarios.
> And in some ways that's right: an app can implement a shorter-term "is 
> the link alive" by merely using an app layer handshake at a relevant 
> rate, and declaring the e2e circuit down if too many handshakes are 
> not delivered.  If you think about it, this is probably optimal, 
> because otherwise the end-to-end app will have to have a language to 
> express its desire to every possible link along the way, and also to 
> the "rerouting" algorithms that might preserve end-to-end connectivity 
> by "routing around" the slow or intermittent link.
>
> Recognize the "end to end argument" in that last paragraph?   It says: 
> we can't put the function of determining "app layer circuit down" into 
> the different kinds of elements that make up the Internet links.  

Absolutely.

However, what I think about is: If there _is_ no alternative path, so 
rerouting will not solve the problem, how can we make an application 
_live_ with the situation?

Sometimes, we get the advice: "Love it, change it or leave it." Now, 
wireless channels may only offer the possibility to love them, because 
we cannot change them and because there is no alternative, we cannot 
leave them. So, the alternative is only: "take it - or leave it."

Basically, that is in short what we talked about before: You mentioned 
that IEEE 802.11 does not take input from IETF. So,  wireless networks 
will perhaps not obey QoS requirements or the like from upper layers. CE 
guys tell me, that a forecast for wireless channel properties is more 
than difficult and perhaps simply not possible - hence application 
adaptation may stay a dream.
> Therefore we need to do an end-to-end link down determination.
And ideally some determination when a link will be up again....

> Thus the network shouldn't spend its time holding onto packets in 
> buffers.  Instead it should push the problem to the endpoints as 
> quickly as possible.  Unfortunately, the link layer designers, whether 
> of DOCSIS modems or 802.11 stacks, have it in their heads that 
> reliable delivery is more important than the cost to endpoints of deep 
> buffering.  DOCSIS 2 modems have multiple seconds of buffer, and many 
> WLANs will retransmit a packet up to 255 times before giving up!

I well remember your advice: "Not more than three attempts." And I 
think, I'm with you here, because I think that the overlong latencies 
accepted by some standards are a consequence of a far too low packet 
corruption probability.
With respect to the GPRS standard mentioned above, the overlong 
tolerated latencies appear in conjunction with a packet corruption ratio 
10^-9, which is simply nonsense for many wireless links.

And that's one of the arguments I often have with colleagues, that one 
does not believe me that wireless links are typically _lossy_. And when 
wireless links appear to be _not_ _lossy_, this is often a consequence 
of a far too high number of retransmissions.

Hence, a small number of retransmissions (maximum 3) would result 
exactly in what you propose: On a noisy link, packets  will see a high 
corruption ratio and hence, the end-to-end application sees an important 
packet loss and has to deal with this.

And perhaps that's not so far from my way of thinking. I simply don't 
want to declare a link "down" because of a high packet corruption ratio. 
I would like to use the link with the packet corruption ratio it can 
yield - and then, it's up to the application with this.

>   These are not a useful operational platform for TCP.  It's not TCP 
> that's broken, but the attempt to maximize link capacity, rather than 
> letting routers and endpoints work to fix the problem at a higher level.
>
I did not say that TCP is broken. However, I think some algorithms in 
TCP could be made more robust against lossy channels in some scenarios.

Nevertheless, TCP is neither the Torah nor the Holy Bible nor the Quran. 
Perhaps, for some scenarios there may exist reasonable alternatives to 
TCP for reliable packet transfer.

Detlef

-- 
Detlef Bosau		Galileistraße 30	70565 Stuttgart
phone: +49 711 5208031	mobile: +49 172 6819937	skype: detlef.bosau	
ICQ: 566129673		http://detlef.bosau@web.de			




More information about the end2end-interest mailing list