OLSR/SmartGateway

Aus wiki.freifunk.net
Wechseln zu: Navigation, Suche

Wozu SmartGateway?

Ohne SmartGateway wählt OLSR immer das Gateway mit dem aktuell besten ETX-Wert. Wenn mehrere Gateways einen ähnlichen ETX-Wert haben, dann wird wegen der normalen Fluktuationen oft das Gateway gewechselt. Das führt zu dem unangenehmen Nebeneffekt, dass alle laufenden Verbindungen (TCP, z.B. SSH-Sessions oder Downloads per HTTP) hängen und irgendwann abgebrochen werden.

SmartGateway soll dieses Problem beheben, indem ein (unverschlüsselter IPIP-) Tunnel zu einem Gateway aufgebaut wird und dieses Gateway beibehalten wird, selbst wenn ein anderes Gateway aktuell einen besseren ETX-Wert hat. Das Gateway wird nach Pfadkosten/-länge und seiner angegebenen Bandbreite ausgewählt. Details dazu finden sich im README.

Konfiguration

Installieren des IPIP Kernel Moduls:

opkg install kmod-ipip

Hilfreich beim Aufspüren von Problemen:

opkg install ip

Aktivieren von Smartgateway in /etc/config/olsrd in der section config 'olsrd':

option 'SmartGateway' 'yes'

Die Konfiguration ist hier separat beschrieben für ein Gateway bzw. "Client"-Node. Es kann aber auch beides gleichzeitig eingerichtet werden, dann kann ein "Client"-Node ohne neue Konfiguration in ein Gateway-Node umgewandelt werden und umgekehrt.

Gateway

Unter /etc/config/network das tunl0 Interface hinzufügen:

config 'interface' 'tunl0'         
        option 'proto' 'none'
        option 'ifname' 'tunl0'

Das tunl0 Interface zu einer zone hinzufügen und forwarding auf die wan-zone erlauben in /etc/config/firewall, z.B. so:

config 'zone'                  
        option 'input' 'ACCEPT'  
        option 'forward' 'REJECT'
        option 'output' 'ACCEPT'
        option 'name' 'smarttun' 
        option 'network' 'tunl0'          
                               
config 'forwarding'        
        option 'dest' 'wan'    
        option 'src' 'smarttun'

Todo: Proto 4 fuer ipip muss eingehend erlaubt werden noch auf den wlan-interfaces, z.B. iptables -I INPUT -p 4 -i ath0 -j ACCEPT

"Client"

Für die dynamisch erstellten tnl_XXXXX Intefaces müssen forwarding und NAT in der /etc/firewall.user aktiviert werden:

iptables -I FORWARD -o tnl_+ -j ACCEPT
iptables -t nat -I POSTROUTING -o tnl_+ -j MASQUERADE

Todo

  • Wie kann ein anderes Gateway ausgewählt werden?
    • Dazu bräuchte es ein kleines Plugin für olsr, gibts laut Henning aber noch nicht --Soma 09:34, 7. Mai 2011 (UTC)