Opennet Firmware
|
Wir verwenden für IPv4-Verkehr das Policy Routing, um Ziel-Routen abhängig von der Paketherkunft auszuwählen.
Nach dem Booten und bei jeder Änderung (up/down) von Netzwerk-Schnittstellen wird die Funktion initialize_olsrd_policy_routing ausgeführt. Diese Funktion enthält die folgenden Schritte:
Die folgende Reihenfolge der Regeln definiert den Paketfluss im Opennet. Die erste passende Regel wird verwendet.
Für den historischen Vergleich dokumentieren wir hier alle im Zeitverlauf verwendeten Routing-Flüsse.
Firmware v0.5 und später ^^^^^^^^^^^^^^^^^^^^^^^^
Regel | Erklärung |
---|---|
from all iif $ON-FREE-INTERFACE lookup on-tunnel | Verkehr von Hotspot-Nutzenden darf ausschließlich ins Internet gehen |
from all iif $ON-MESH-INTERFACE lookup olsrd | Verkehr aus dem Opennet-Mesh sollte vorrangig über das olsr-Routing gelenkt werden, damit lokale Netzwerk-Interfaces keinen Einfluss auf vorbeifließenden Verkehr haben |
from all iif $ON-MESH-INTERFACE lookup olsrd-default | die default-Tabelle wird aktuell nicht genutzt - inhaltlich ist sie vergleichbar mit olsrd (siehe oben) |
from all to $NOT-MESH-NETWORK lookup main | Pakete mit Ziel-IPs, die zu einem der nicht-Mesh-Interfaces gehören, werden durch die main-Tabelle geroutet. Somit dominieren die lokalen Interfaces für Verkehr, der nicht aus einem Mesh-Interface kam (dieser wurde oben bereits behandelt). |
from all lookup olsrd | der übrige Verkehr (keine lokale Ziel-Adresse, nicht aus dem Mesh kommend; also überwiegend Verkehr aus der LAN-Zone) wird ins Mesh geroutet, falls es passt |
from all lookup olsrd-default | ebenso |
from all lookup main | der verbliebene Verkehr fließt beispielsweise in die default-Route (lokaler Uplink) |
from all lookup default | Rückfall-Option, falls es keine default-Route in der main-Tabelle gibt |
from all lookup on-tunnel | zweite Rückfall-Option: falls es keine lokalen default-Routen gibt, wird der Tunnel verwendet |
Kurz zusammengefasst sollen die obigen Regeln folgende Logik ausdrücken:
Firmware vor v0.5 ^^^^^^^^^^^^^^^^^
Vorbemerkung: beim Booten werden in die main-Tabelle throw-Regeln eingefügt, die alle IP-Bereiche von lokal vorhandenen olsr-Netzwerkschnittstellen umfassen.
Regel | Erklärung |
---|---|
from $NOT-MESH-NETWORK lookup main | Pakete mit Quell-IPs aus lokalen nicht-olsr-Mesh-Interfaces werden entsprechend lokaler Regeln zugestellt (lokale Interfaces und auch default-Route); die zuvor erwähnten throw-Regeln verhindern, dass Ziel-IPs aus mesh-Netzwerkbereichen betroffen sind |
from all $ROUTER-PAKETE lookup main | dasselbe gilt für Pakete, die der Router selbst erzeugt |
from all lookup default | falls es eine default-Regel gibt (typischerweise nicht vorhanden), dann wir sie auf alle Pakete angewandt |
from $NOT-MESH-NETWORK lookup tun | die verbliebenen Pakete mit Quell-IPs aus lokalen nicht-olsr-Mesh-Interfaces werden über den Internet-Tunnel geleitet (typischerweise Pakete ins Internet) |
from all $ROUTER-PAKETE lookup tun | dasselbe gilt für Pakete, die der Router selbst erzeugt |
from all lookup olsrd | alle verbliebenen Pakete werden via olsr geroutet |
from all lookup olsrd-default | diese Tabelle ist meist leer |
from all lookup main | alles andere wird lokal zugestellt |
Kurz zusammengefasst sollen die obigen Regeln folgende Logik ausdrücken: