[Olsr-dev] Committed Patches

Sven-Ola Tuecke (spam-protected)
Wed Sep 19 12:58:32 CEST 2007


Ahoi Aaron,

right. That's a Freifunk special. If the NAT-Endpoint (the preferred 0/0 HNA 
emitting node) is to be changed, the ETX value of the current 0/0 is 
compared to the new one. If the ETX difference is too small, the default 
route isn't changed. Simply as that.

Background:

We measure link quality by evaluating LQ_HELLO message loss. Because OLSR 
messages are normally sent inside UDP Broadcasts, there is no Wifi ACK 
mechanism to resend a lost packet. Hence, the full physical wifi packet loss 
rate has some influence on the measured LQ_HELLO message loss. Which selects 
the most efficient link for routing. Operates as designed and expected.

Until you start transferring data on that link. A lot of unicast payload 
packets will be sent and received together with a flood of Wifi ACKs. Which 
in turn increases the Wifi UDP broadcast packet loss. The current Freifunk 
Firmware tries to circumvent this effect with a traffic shaping prio queue 
for UDP port  698 As well as by elongating the 
LQ_HELLO-Loss-Measurement-Window to 128 messages.

Nevertheless: If you start using a link, the ETX values will change a bit 
over time. Which triggers a route flap if there are two equal or nearly 
equal hop chains (in terms of ETX). This is fine and also expected 
behaviour. A route switch should not break anything. But in the case of a 
NAT gateway, all connection oriented services will terminate if you change 
the NAT gateway. Because the next NAT gateway does not have the state info.

The "cost" of risking pingpong or even circle routes is lower than the 
"cost" of users experiencing broken downloads, interruped phone calls etc. 
This is where the NatThreshold jumps in. BTW: if the 0/0 gw isn't changed, 
the default route change will be executed as normal, even if triggerd by 
minimal ETX diffs.

Ideas:

* We can switch from routing to tunneling. Makes live of a network 
operator/admin a bit harder. But prevents NAT-Gateway-Switches. We may be 
able to automate, e.g. only switch tunnel enpoint if no UDP/TCP connection 
state info exists in tunnel endpoint or so. Something to consider: the TOR 
network is similar. And there is Batman, which implements tunnels for this. 
Have experienced very unexpected exit points for IP packets with that 
auto-tunnel stuff.

* We can add in more info for selecting a gateway. Currently, there is no 
bandwith / utilization / freedom-to-transport-anything / owners-sharing-will 
/ uptime-in-the-last-year etc. info in the OLSR routing scheme. If we 
consider this additional info while calculating the preferred 0/0, I'am sure 
that NAT gateways will be more distinguisable. Current ETX-only evaluation 
for the decision what default route / tunnel enpoint to select is 
less-than-real-live. A completely blocked ISDN/Analog uplink up for today is 
handled the same way as an 36Mbit SDSL or DS3 line up since the 1990's.

* We can get rid of NAT even by using an external tunnel endpoint. A cheap 
root server - preferably on the isle-of-man or in antarctica to circumvent 
other problems, SCNR. Of course, a solution like this does not need support 
inside olsrd IMO.

* We can implement a State-Info-Sync between NAT nodes, e.g. as Linux kernel 
module.

* We can change the measurement fundamentals to have more real-live-data in 
the system. Possible candiate: ETT (pat. pend.?). Install an ancient 
bandwidth measurement thingy by "apt-get install bing" then "bing localhost 
google.de" to dig in.

* We can simply start using batman && / || batman-ng. At least for managing 
the inet gateway. Marek and Elektra will welcome any development power I 
presume <ggg>.

Yes I know. Route damping has drawbacks. But all these things need 
implementation time. And the little hack does it's little job - at least for 
me and at least _now_.

Just my two cents,
// Sven-Ola

----- Original Message ----- 
From: "Aaron Kaplan" <(spam-protected)>
To: <(spam-protected)>
Sent: Tuesday, September 18, 2007 6:28 PM
Subject: Re: [Olsr-dev] Committed Patches


>
> BTW:
>
> At the WCW we noticed the NatThreshold parameter in /etc/olsrd.conf
> in the freifunk fw
> AFAIK this parameter does not exist in CVS.
>
> What is it for? Is there another patch somewhere for it?
>
> best,
> a.





More information about the Olsr-dev mailing list