PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Fritzbox QoS


lumines
2016-09-17, 17:13:31
Ich habe mich einmal ein bisschen an die Fritzbox gesetzt und an den Einstellungen für die Priorisierung geschraubt. Bisher habe ich dafür andere Geräte benutzt, weil die standardmäßigen Einstellungen an der Fritzbox nicht so wirklich transparent sind, aber irgendwie hat es mich doch einmal gereizt das etwas zu verbessern.

Dazu muss man noch Folgendes wissen:

Scheinbar werden TCP ACKs von FritzOS grundsätzlich höher priorisiert, aber mir ist nicht ganz klar, in welcher Prioritätsklasse die gesteckt werden. Die ACKs scheinen aber dafür zu sorgen, dass ein einziger TCP-Upload schon alle konkurrienden, UDP-basierende Protokolle im Upload „verhungern“ lässt, wenn man die nicht speziell priorisiert, was natürlich nervig ist
Viele moderne Protokolle benutzen zufällige Portranges (z.B. WebRTC). Das kann man schlecht mit dem System der Fritzbox abbilden
Ich gehe (naiv) davon aus, dass die meisten UDP-basierten Protokolle eine höhere Priorität brauchen und selten so viel Bandbreite benötigen, dass Protokolle in niedrigen Prioritätsklassen dadurch „verhungern“ können
FritzOS macht wohl nur Traffic Shaping für den Upload, nicht für den Download. Man kann auch keine Regeln für den Download erstellen
Ich habe hier eine gebrandete Fritzbox 6490 von Unitymedia. Mit einer Fritzbox 7360 an einer VDSL-Leitung konnte ich das Problem mit dem Bufferbloat beim Upload nicht 1:1 nachstellen, warum auch immer. Unter Umständen laden vielleicht auch einige Provider ihre eigenen Priorisierungsprofile in die Firmware. Die Regeln hier sollten keine negativen Auswirkungen haben, aber der Nutzen kann sich dadurch für einige Geräte in Grenzen halten


Daraus habe ich dann versucht ein paar Regeln zu erstellen, die in den allermeisten Fällen keine Nachteile haben und trotzdem das Problem mit dem Bufferbloat beim Upload lösen.

DNS und NTP von der Fritzbox zu priorisieren dürfte klar sein. Beides brauch nicht viel Bandbreite, hat also eine sehr geringe Chance die niedrigeren Klassen „verhungern“ zu lassen. Trotzdem will man maximale Zuverlässigkeit für beide Protokolle.

Der große Clou liegt in der großen UDPOhneQUIC-Regel. Für jedes Protokoll oder Spiel eine eigene Regel zu erstellen ist aufwendig. Für WebRTC ist es z.B. auch gar nicht möglich, weil es zufällige Portranges benutzt. Auch andere Protokolle für VoIP benutzen nicht immer die gleichen Ports, z.B. um den Drosselungen einiger Provider zu entgehen. Ich habe daher alle UDP-Ports in die höhere Prioritätsklasse gesteckt, weil alles andere nicht praktikabel ist. Stattdessen schließe ich gewisse Protokolle aus, in diesem Fall QUIC (UDP-Port 80 und 443). Das benutzt Google als Ersatz für HTTPS und wird wohl in Zukunft immer öfter eingesetzt werden. Ein Upload über QUIC würde natürlich HTTP und HTTPS verhungern lassen, weil beide in der Standardklasse liegen. Mit dem Ausschluss der beiden Ports für QUIC landet es automatisch selbst in der Standardklasse und konkurriert direkt mit HTTP und HTTPS, was man auch haben will, weil es in den meisten Fällen nicht latenzkritisch ist.

Falls irgendein weiteres UDP-basierte Protokoll Probleme macht, könnte man das genau wie QUIC gezielt ausschließen. Das scheint mir einfacher zu sein als bestimmte Protokolle zu bevorzugen, gerade durch die implizite ACK-Bevorzugung. Man kann natürlich noch immer weitere Regeln für die „Priorisierte Anwendungen“-Klasse erstellen. Ich habe da z.B. noch Minecraft drin, weil das TCP benutzt und dadurch normalerweise auch in der Standardklasse landen würde.

Im Download hilft das alles natürlich nichts. Wer mit einer langsamen DSL-Leitung gesegnet ist, für den ändert sich durch die Regeln nicht so wahnsinnig viel. Bei schnellem Kabelinternet mit extrem asymmetrischen Bandbreiten (ich habe hier z.B. 120/5) sollte das am meisten helfen.

Perfekt ist das nicht, aber ich wollte das hier einfach mal zur Diskussion in den Raum stellen. Vielleicht hilft das ja einigen oder jemand hat dazu noch eine bessere Idee.

Darkman.X
2016-09-17, 21:44:25
Hey, erstmal danke für dieser Erklärungen. Ob's etwas bringt....kommt wohl darauf an, wie man sich allgemein im Netz bewegt.

Ich selber habe 10 Mbit Upload und weiß eigentlich nicht, womit ich sie abseits von Datei-Uploads auslasten kann. Und wenn ich Uploads tätige, habe ich dort noch meine verkrusteten Denkstrukturen ;), d.h. während des Uploads keine Online-Spiele oder andere zeitkritische Dienste nutzen. Für User mit 1 Mbit oder weniger Upload ist es sicherlich interessanter.

Was ich für mich erstmal mitgenommen habe: Ich habe etwas über QUIC gelernt (nach weiterem googeln) und die Priorisierung von DNS. Darüber hatte ich mir nie Gedanken gemacht, aber klingt nützlich. Denn während Dateiuploads surfe ich in der Regel doch im Netz weiter.
Bei NTP bin ich mir nicht so sicher. Da ist doch (ich habe wenig/keine Ahnung) der Upload nicht zeitkritisch, sondern eher der Download, der schnelle Empfang des "Zeitsignals", oder?

Du hattest übrigens erwähnt, dass du nicht genau weiß, in welcher Prioritätsklassen die TCP-ACKs liegen. Laut dem Online-Monitor der FB liegen sie in "Priorisierte Anwendungen" (in dieser orangen Farbe). Also hast du dein "UDPohneQUIC" schon in die richtige Klasse gesteckt :)

lumines
2016-09-17, 22:44:43
Ich selber habe 10 Mbit Upload und weiß eigentlich nicht, womit ich sie abseits von Datei-Uploads auslasten kann. Und wenn ich Uploads tätige, habe ich dort noch meine verkrusteten Denkstrukturen ;), d.h. während des Uploads keine Online-Spiele oder andere zeitkritische Dienste nutzen. Für User mit 1 Mbit oder weniger Upload ist es sicherlich interessanter.

Ich synchronisiere hin und wieder Daten und Projekte auf meinen Server per syncthing. Es gibt auch immer mal wieder Rechner hier, die per Dropbox Daten synchroniseren. Solange der Upload nicht abgeschlossen ist, hab ich dann latenztechnisch ziemliche Probleme beim Zocken.

Bei NTP bin ich mir nicht so sicher. Da ist doch (ich habe wenig/keine Ahnung) der Upload nicht zeitkritisch, sondern eher der Download, der schnelle Empfang des "Zeitsignals", oder?

Geht nur darum, dass die Anfragen auch unter hoher Auslastung noch zuverlässig rausgehen. Gerade bei DNS ist das ziemlich unangenehm, wenn eine Anfrage verloren geht und man dann den Timeout abwarten muss, bis die Anwendung noch einmal anfragt. Der Timeout ist AFAIK meistens so 3s. NTP ist da unkritischer, aber kann sicher nicht schaden, wenn man in zuverlässigen Intervallen die Zeit synchronisiert bekommt.

Du hattest übrigens erwähnt, dass du nicht genau weiß, in welcher Prioritätsklassen die TCP-ACKs liegen. Laut dem Online-Monitor der FB liegen sie in "Priorisierte Anwendungen" (in dieser orangen Farbe). Also hast du dein "UDPohneQUIC" schon in die richtige Klasse gesteckt :)

Dachte ich auch, habe aber gerade noch einmal nachgeschaut. Wenn ich einen kurzen Speedtest auf z.B. fast.com mache, dann scheinen die TCP-ACKs sogar in die „Echtzeitanwendungen“ eingeordnet zu werden, wenn ich das richtig deute:

https://abload.de/img/bildschirmfoto2016-09bbkoi.png

Ist jetzt natürlich ein Download, aber wenn ich einen Upload starte und parallel dazu zocke, dann habe ich mit den Standardeinstellungen eine Latenz von 250 - 600 ms. Mit den Einstellungen von oben kann man TCP-Uploads (Dropbox, syncthing, was-auch-immer) starten wie man lustig ist, beeinflusst dann alle UDP-basierten Sachen nicht mehr nennenswert.

Darkman.X
2016-09-17, 23:09:23
Dachte ich auch, habe aber gerade noch einmal nachgeschaut. Wenn ich einen kurzen Speedtest auf z.B. fast.com mache, dann scheinen die TCP-ACKs sogar in die „Echtzeitanwendungen“ eingeordnet zu werden, wenn ich das richtig deute:

https://abload.de/img/bildschirmfoto2016-09bbkoi.png


hmm, ich habe auch bei fast.com auch nur "Priorisierte Anwendung". Macht FW 6.62 (vermute ich mal) bei dir etwas anderes als die 6.60 meiner 7490? Oder irgendeine Kabel- oder ISP-spezifische Optimierung?!

Das macht natürlich allgemeingültige Optimierungen, wie du sie vorgeschlagen hast, etwas schwierig :-/ Dann müsste man dein "UDPohneQUIC" sogar in die Echtzeitklasse stecken.

lumines
2016-09-18, 00:27:48
hmm, ich habe auch bei fast.com auch nur "Priorisierte Anwendung". Macht FW 6.62 (vermute ich mal) bei dir etwas anderes als die 6.60 meiner 7490? Oder irgendeine Kabel- oder ISP-spezifische Optimierung?!

Ist noch FritzOS 6.50 auf der 6490 von UM. Ich kann da leider nicht selbst up- oder downgraden, aber wenn das Update kommt, werde ich das mal vergleichen. Ich vermute aber echt, dass die Provider da noch zusätzlich Profile hinterlegen können. Das würde dann nämlich auch Sinn ergeben, warum das bei den Kabelfritzboxen bisher ein größeres Problem war als bei den meistens ungebrandeten Fritzboxen bei DSL-Anschlüssen. Vielleicht sind die einfach standardmäßig unterschiedlich konfiguriert.

Das macht natürlich allgemeingültige Optimierungen, wie du sie vorgeschlagen hast, etwas schwierig :-/ Dann müsste man dein "UDPohneQUIC" sogar in die Echtzeitklasse stecken.

Habe ich schon drüber nachgedacht, aber bisher funktioniert es so schon ganz gut und bei „normalen“ Fritzboxen sollte es auch nicht schlechter laufen. Vielleicht sogar etwas besser, weil die Bandbreite dann noch etwas fairer verteilt wird. Der Witz ist nämlich, das ich bisher bei anderen Router-Betriebssystemen nie irgendwelche Priorisierungen vorgenommen habe und das hat immer gut funktioniert. Eine große SFQ-Queue teilt einfach zwischen allen Netzwerverbindungen und Streams die Bandbreite fair auf und lässt keine Verbindung „verhungern“, weil alle in regelmäßigen Abständen zum Zug kommen. Bei der Fritzbox haben die irgendwie vier SFQ-Queues und die Gewichtungen dazwischen sind nicht so klar, deshalb finde ich das auch ziemlich schwierig zu konfigurieren. Man macht aber nichts falsch, wenn möglichst viele Sachen in der gleichen Klasse landen und miteinander konkurrieren. Das wird (meiner Erfahrung nach) nur dann haarig, wenn man extrem viele Verbindungen parallel aufmacht, aber das passiert so selten, dass man das bei privaten Anschlüssen meistens vernachlässigen kann.

Mit der Klasse bei Echtzeitanwendungen bin ich vorsichtig, weil die im Zweifelsfall auch die gesamte Bandbreite für sich beanspruchen kann. Das würde zu viel Bandbreite von der „normalen“ Klasse abzwacken, man könnte also andersrum nicht mehr surfen, wenn etwas mit UDP viel Last erzeugt.

lumines
2017-02-23, 13:30:57
FritzOS 6.80 bevorzugt jetzt übrigens DNS-Anfragen schon von sich aus (https://avm.de/service/downloads/download/show/18152/). Die Regel aus dem ersten Post ist daher auf einem aktuellen FritzOS eventuell redundant. Was aber genau mit einer „optimierten Behandlung“ gemeint ist, weiß ich leider nicht.

Lurtz
2017-05-28, 12:04:20
Interessantes Thema. Gibts dazu neue Erkentnisse von dir?

Ich habe die Einstellungen bei einer 7490 mit OS 06.83 mal so gesetzt wie von dir beschrieben (inklusive DSL) und eine leichte Besserung beim Bufferbloat bei DSLReports festgestellt. Allerdings immer noch mit Spikes in den 80ms-Bereich bei VDSL 50.

FritzBoxen sind aber auch generell zickig. Musste sie gerade mal wieder hart vom Strom nehmen, weil der Downspeed einfach nicht mehr über 25 mbit/s ging. Da hilft auch meist kein Softreboot, irgendwas scheint sich da einfach intern aufzuhängen...

lumines
2017-05-28, 18:30:24
Leider nicht, aber viel mehr wird man da wahrscheinlich auch nicht machen können. Mir sind aber bisher immerhin auch keine Probleme aufgefallen.