Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

falsche Priorisierung der Gatewayserver beim Laden der *-services.csv #4

Open
leoss opened this issue Jan 28, 2023 · 1 comment
Open

Comments

@leoss
Copy link
Contributor

leoss commented Jan 28, 2023

Die User-APs benötigen einen UGW, um ins Internet zu kommen. Eine Liste von UGWs wird ermittelt per:

Problem: Bei UGWs, welche per CSV ermittelt wurden, wird "teilweise" die Prüfung auf optimalen UGW übersprungen und fälschlicherweise wird dieser UGW dann genutzt. Dies führt zu einer schlechten/langsamen Verbindung der Nutzer:innen.

leoss added a commit to opennet-initiative/ansible that referenced this issue Feb 7, 2023
In der CSV wird ein UGW-Server announciert, lediglich durch eine IPv6 Adresse.
Dies fuehrt dazu, dass OLSR2 genutzt wird. Bei der Ermittlung der Distanz zum
UGW-Server liefert OLSR2 derzeit immer einen Wert 0<x<1. Dadurch ist dieser
Server immer ganz oben in der Prioritätsliste bei den Clients.
Wir deaktivieren das Announcement dieses Servers hier. Als naechstes muessen
wir klaeren, wie wir ETX von OLSR1 und OLSR2 vergleichbar machen koennen
oder einen anderen Mechanismus zur UGW Auswahl nutzen.
opennet-initiative/firmware#4
@leoss
Copy link
Contributor Author

leoss commented Feb 7, 2023

Das Problem ist, dass der ETX/ETT von OLSR2 sehr klein ist und deshalb "besser" als der ETX (HopCount) von OLSR1 angesehen wird.

Warum ist die Zahl so klein?
Diese Zahl wird aus der Funktion get_hop_count_and_etx() [2] entnommen und soll dem ETX Wert entsprechen.
Bei OLSRv1 entspricht der ETX Wert (grob gesagt) dem Hop Count, wobei aus ETX Wert auch künstlich erhöht werden kann, wenn man bspw. die Nutzung von gewissen Strecken verhindern will. Wir erhöhen den ETX für die Strecken zwischen den Gateway Servern, sodass kein Traffic von einem Gatewayserver zu einem anderen weitergeleitet wird.
Bei OLSRv2 ist der ETX (ETT) ein "anderer" abstrakter Wert [1], welcher die reale Geschwindigkeit versucht abzubilden. Der Wert kann sehr groß werden bei langsamen Verbindungen. Beispielsweise:

Bandwidth (Hops) ETT Hop Count
3.06kbit/s (6 hops) 4210231 6
6.12kbit/s (6 hops) 2105164 6
4.502kbit/s (9 hops) 4292284 9
97.612Mbit/s (3 hops) 68 3
126.322Mbit/s (9 hops) 160 9
102.261Mbit/s (1 hops) 21 1
1.073Gbit/s (1 hops) 2 1

In der Funktion get_hop_count_and_etx() wird bei OLSRv2 der ETX mittles 1/ETT berechnet. Warum genau, weiß ich nicht. Das könnte man hinterfragen.

Das Grundproblem ist nun, dass wir zwei Metriken haben, welche nicht miteinander vergleichbar sein. Unsere derzeitige Implementierung tut aber so, als ob sie vergleichbar wären, mit entsprechend schlechtem Ergebnis.
Wie kommen wir aus dieser Situation raus?
Eigentlich dürften wir uns nur auf unsere eigenen Geschwindigkeitstests verlassen. Wir lösen das Problem also in den Layern darüber und schauen nicht auf das Routing.
Alternativ hätte man einen Schalter zwischen only-OLSRv1 oder only-OLSRv2 für die UGW Ermittlung.

Temporär haben wir erstmal das Announcement des OLSR2 UGW-Servers deaktiviert per opennet-initiative/ansible@bf70790

[1] Abschnit "2.2.2. ETT metric" https://people.ac.upc.edu/leandro/docs/olsrv2fcn.pdf
[2]

leoss added a commit to opennet-initiative/ansible that referenced this issue Mar 4, 2023
Wegen des Bugs opennet-initiative/firmware#4
sollten wir erstmal keine UGWs per IPv6 annoncieren.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant