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.
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.