[Berlin-wireless] Berlin Firmware "Kathleen" Release 0.1.1!

Stefan Sperling stsp
So Mai 31 15:52:16 CEST 2015


On Sat, May 30, 2015 at 04:08:11PM +0200, Malte wrote:
> Die Berliner Freifunk-Firmware "Kathleen" 0.1.1 ist verfügbar:
> http://buildbot.berlin.freifunk.net/buildbot/stable/0.1.1/ar71xx/
> https://github.com/freifunk-berlin/firmware/blob/0.1.1/README.md
> 
> Im Vergleich zur 0.1.0 basiert das Release auf einer neueren Version von
> OpenWrt und kommt mit einigen Fixes (siehe README oben). Es unterstützt neu
> die TP-LINK CPE210/220/510/520 sowie wieder die Router mit 4MB Flash (WR841
> etc.).

Vielen Dank!

Ich habe meinen TP-Link WR841N v8.4 mit dem backbone_4MB image wieder belebt.

Es gibt auf diesem Router kein VPN und keine clients am LAN. Er mesht
lediglich im IBSS (intern-ch13.freifunk.net) und verteilt DHCP per
AP (berlin.freifunk.net). Beides auf dem selben phyischen WLAN interface.

Ich hatte ein paar Problem bei der Einrichtung die ich hier
dokumentieren möchte:

Es gibt manchmal relativ viel packet loss (10-20%) auf dem AP, auch wenn
der client direkt daneben steht. Wenn ich das IBSS interface austelle und
den Router als reinen AP konfiguriere geht der Packet loss vom client zum
AP auf 0%. Leider konnte ich die Ursache bisher nicht eingrenzen.
Ist dieses Problem bereits bekannt? Ich meine mich zu erinnern dass der
dual IBSS/AP mode in alten Versionen der Firmware mal ohne Packet loss
funktioniert hat. Dieses Problem hatte ich auch schon mit Kathleen 0.1.0
auf einer Nanostation M2. Manchmal ist es so schlimm dass sich clients
nichtmal assozieren können -- der Router ist aber gleichzeitig per IBSS
erreichbar.

Unabhängig davon bekommen DHCP clients am AP keine leases. Oberflächlich
nachgeforscht scheint das am policy routing zu liegen. Die routen zu den
Netzen in denen sich die clients befinden stehen im 'main' table:

root at kevin:~# ip route show table main 
10.230.24.128/27 dev wlan0-1  proto kernel  scope link  src 10.230.24.129 
192.168.42.0/24 dev eth1  proto kernel  scope link  src 192.168.42.1 

root at kevin:~# ip rule show
0:      from all lookup local 
20000:  from all iif wlan0 lookup olsr-default 
32766:  from all lookup main 
32767:  from all lookup default 
100000: from all lookup olsr-tunnel 
100010: from all lookup olsr-default 

Es scheint als ob wlan0-1 (AP/DHCP) und wlan0 (IBSS) aus Sicht der
routing table lookup rules identisch sind. Sollte das so sein?

Mit folgendem workaround in /etc/config/network geht DHCP:
config rule
        option lookup 'main'
        option priority '999'

Ausserdem fehlt in der Ausgabe von 'ip rule show' ein Eintrag für die
olsr table in welcher der olsrd seine Routen einträgt:
root at kevin:~# ip route show table olsr | wc -l
843
Daher erreichen die Clients keine nodes im mesh bzw. HNA.

Workaround in /etc/config/network:
config rule
        option lookup 'olsr'
        option priority '1000'

Noch ein Problem: IPv6 RA/DHCPv6 clients können nix pingen.

root at kevin:~# ip -6 rule show
0:      from all lookup local 
1000:   from all lookup olsr 
20000:  from all iif wlan0 lookup olsr-default 
32766:  from all lookup main 
4200000001:     from all iif lo failed_policy
4200000003:     from all iif eth1 failed_policy
4200000004:     from all iif tunl0 failed_policy
4200000006:     from all iif wlan0 failed_policy
4200000007:     from all iif wlan0-1 failed_policy

Der IPv6 prefix in dem sich die RA clients befinden steht im 'main' table:
root at kevin:~# ip -6 route show table main | grep 999
2001:bf7:830:999::/64 dev wlan0-1  proto kernel  metric 256

Leider wird dort nicht nachgeguckt, denn die olsr table kommt
vorher und hat eine default route:
root at kevin:~# ip -6 route show table olsr | grep ^default
default via 2001:bf7:830:fcc::1 dev wlan0  metric 2 

Hier scheint wieder wlan0-1 (AP/DHCP) gleich behandelt zu werden
wie wlan0 (IBSS).

Der olsrd6 schreibt gar keine routen in die olsr-default Tabelle
aber die lookup rules gucken trotzdem dort nach.
root at kevin:~# ip -6 route show table olsr-default
root at kevin:~# 
Die settings sind aber eigentlich korrekt:
root at kevin:~# grep  -i table /etc/config/olsrd6
        option RtTable '111'
        option RtTableDefault '112'
        option RtTablePriority '1000'
        option RtTableDefaultOlsrPriority '20000'
root at kevin:~# grep -i table /var/etc/olsrd6.conf 
RtTable 111
RtTableDefault 112
RtTablePriority 1000
RtTableDefaultOlsrPriority 20000
root at kevin:~# grep olsr /etc/iproute2/rt_tables
111 olsr
112 olsr-default
113 olsr-tunnel

Evtl ist dies ein Bug im olsrd?

Als workaround habe ich in /etc/config/network den main table vor
olsr gestellt:
config rule6
	option lookup 'main'
	option priority '999'

Meine rules sehen jetzt insgesamt so aus:

root at kevin:~# ip rule show
0:      from all lookup local 
999:    from all lookup main 
1000:   from all lookup olsr 
20000:  from all iif wlan0 lookup olsr-default 
32766:  from all lookup main 
32767:  from all lookup default 
100000: from all lookup olsr-tunnel 
100010: from all lookup olsr-default 
root at kevin:~# ip -6 rule show
0:      from all lookup local 
999:    from all lookup main 
1000:   from all lookup olsr 
20000:  from all iif wlan0 lookup olsr-default 
32766:  from all lookup main 
4200000001:     from all iif lo failed_policy
4200000003:     from all iif eth1 failed_policy
4200000004:     from all iif tunl0 failed_policy
4200000006:     from all iif wlan0 failed_policy
4200000007:     from all iif wlan0-1 failed_policy





Mehr Informationen über die Mailingliste Berlin