[hannover] [TECHNIK] Stand der Dinge - Netzsegmentierung
lemoer
freifunk at irrelefant.net
So Jul 2 00:20:09 CEST 2017
Heyho liebe Freifunker,
ich schreibe euch mal ein wenig, was der momentane Stand der Dinge zum
Thema "Netzsegmentierung" ist.
Kurzzusammenfassung des Problems:
Jeder Freifunkrouter informiert alle anderen Router über die verbundenen
Endgeräte und auch über seine Nachbargeräte, damit daraus eine Netzkarte
(Routingtabelle) für das Netz erstellt werden kann. So weiß jeder
Router, wie er ein Endgerät im Netz zu finden hat.
Je größer ein Mesh-Netz ist, desto mehr von diesen Metainformationen
müssen übertragen werden. Momentan sind es schon so viel, dass sich
Freifunk an einem DSL-2000-Anschluss nicht mehr betreiben lässt (allein
nur durch die Metadaten). Wir nennen dieses Phänomen "Grundrauschen".
Problemlösung:
Da Router in der Nordstadt wohl eher nicht mit Routern in Linden über
eine WLAN-Strecke meshen werden, ist es nun unser Ziel, die Stadt in
einzelne Bereiche zu segmentieren und diese nur noch über unsere
Internet-Gateways zu verbinden. Von Bereich zu Bereich muss dann keine
Routing-/Metainformation mehr ausgetauscht werden. Das sorgt für
erheblich geringeres Grundrauschen.
Was muss dafür getan werden:
- Auf den Freifunkroutern muss ein Paket geschrieben werden, das im
Config-Mode ein Dropdown mit den verfügbaren Stadtteilen anzeigt.
Daraus kann der Nutzer seinen Stadtteil ("district") wählen. Mehrere
districts werden später zu einem "Bereich" zusammengefasst. Außerdem
ermöglicht dieses Paktet, dass der gewählte district über den
Informationsdienst (respondd) an den Server, der auch die Karte
bereitstellt, übermittelt wird. - fertig*
- Ein weiteres Paket sorgt bei der Migration dafür, dass nicht jeder
Routerbetreiber den district nachträglich einstellen muss. Hierfür
wird stündlich unser Webserver angefragt, ob für den Router ein neues
district bekannt ist. Wir können also aus der Ferne (beispielsweise
mit den Geokoordinaten und Mesh-Partnern) bestimmen einen
Migrationsplan schmieden, den die Router dann ausführen. Dieses Paket
wird aber nur wärend einer gewissen Migrationsphase in den Routern
eingebaut und später entfernt. Es soll wirklich nur dazu dienen,
Router zu migrieren, die schon länger im Netz sind. - fertig*
- Ein letztes selbstgeschriebenes Paket sorgt dann dafür dass die
sogenannte Grundkonfiguration unserer Firmware (site.conf) je nach dem
Bereich angepasst wird, in dem man sich befindet. Diese wird erst in
einem späteren Firmware-Release eingebaut, in dem schon jeder Router
ein district zugewiesen hat. Dieses Paket sorgt unter anderem dafür,
dass Router, die nicht im gleichen "Bereich" sind, nicht mehr
miteinander meshen können. Durch dieses Upgrade können also eventuell
Mesh-Ketten zerstört werden, wenn der Uplink vor den Mesh-Only-Knoten
updatet. - fertig*
- Um das Problem der Mesh-Ketten zu beheben, wollen wir ein fremdes
Paket nutzen, das dafür sorgt, dass ein Router sich als Fallback zu
dem "hannover.frefunk.net"-Client-Netzwerk verbindet, und dort sein
Update zieht. Hier sind noch einige Tests nötig. Eine kritische
Situation wäre beispielsweise, wenn zwei Mesh-Only-Knoten gegenseitig
meinen, dass sie sich zueinander verbinden sollten, weil der Uplink
eine geringere Signalstärke als der jeweils andere Mesh-Only-Knoten
hat. - begonnen
Soweit zu der Software auf den Routern selbst. Nun der Rest..
- Ein Migrationsskript, das mit Hilfe der Geodaten und der Mesh-Struktur
einen Migrationsplan. welcher Router in welchen Stadtteil/district
gehört, muss geschaffen werden. Das gestaltet sich nicht so einfach,
weil nicht jeder Router Geokoordinaten besitzt. Router zu denen
letztendlich kein sinnvoller Stadtteil zugewiesen werden kann, werden
im "Umland" enden. - teilweise fertig
- Der Meshviewer/die Karte sollte noch angepasst werden, sodass er die
Information des Bereichs oder des Stadtteils in irgendeiner Weise mit
anzeigt. Die Information des Stadtteils ist in der nodes.json bereits
vorhanden und muss noch in das Frontend eingebaut werden. - 0%
- Zu guter Letzt muss unsere Serverinfrastruktur noch darauf umgebaut
werden, mehrere "Bereiche" zu bedienen und auch eine Verbindung
zwischen diesen herzustellen. - 0%
Ich hoffe, ich konnte einen kleinen Einblick darein geben, was im Moment
an der Front der Netzsegmentierung so los ist. Wenn etwas unklar
und/oder unverständlich ist, dann sagt Bescheid! :)
Falls ihr an der einen oder anderen Stelle helfen könnt, dann seid ihr
herzlich dazu eingeladen.
Gruß,
Leo
PS: fertig* = theoretisch fertig, Tests fehlen
Mehr Informationen über die Mailingliste hannover