Wie verwende ich QoS auf einem Tomato-Router, um die Bandbreite zwischen Computern im Netzwerk gleichmäßig zu teilen?

0

Ich habe den Quellcode für den Kernel Packet Scheduler durchgesehen und bin mir ziemlich sicher, dass ich das, was ich möchte, bei Bedarf manuell codieren kann, aber ich würde gerne wissen, ob dies möglich ist, ohne den Kernel neu zu kompilieren.

Ich verwende einen RT-N66U-Router, auf dem die Tomato r105-Firmware von http://tomato.groov.pl/download/K26RT-N/ ausgeführt wird .

Kann ich mit tc einen QoS-Algorithmus einrichten, ohne den Kernel neu zu kompilieren, um die Bandbreite gleichmäßig zwischen den Computern im internen Netzwerk zu teilen?

Insbesondere möchte ich eine einzelne FIFO-Warteschlange für jede IP-Adresse im internen Netzwerk und die Round-Robin-Verarbeitung von Paketen aus diesen Warteschlangen (so dass nur ein Computer im Netzwerk 100% der Bandbreite nutzen kann) Wenn jedoch mehr Benutzer aktiv sind, kann kein Benutzer alle verwenden.

Wichtig ist, dass der Bandbreitenanteil jedes Benutzers eingehende und ausgehende Pakete umfasst.

Es sieht so aus, als wäre dies mit ESFQ möglich, aber ich würde mich über Hilfe freuen, wenn jemand weiß, wie dies erreicht werden kann.

Meyer Jacobs
quelle
2
Ich denke, Sie werden feststellen, dass dies nicht sehr gut funktioniert, egal was Sie tun. Ihr ISP entscheidet, welche Pakete an Sie gesendet werden. Was machen Sie, wenn Sie unfaire Pakete erhalten? Wenn Sie sie fallen lassen, werden sie nur ein zweites Mal über Ihre kostbare Internetverbindung übertragen. Die einzige Information, die Ihr ISP verwenden könnte, um Fairness zu gewährleisten, ist die interne IP-Adresse der Verbindung, und NAT verbirgt dies vor ihnen. Sie können jedoch ausgehenden Datenverkehr verwalten.
David Schwartz
Das ist ein guter Punkt. Ich habe nicht wirklich darüber nachgedacht, wo der Download-Engpass war. Selbst wenn ich die zu verarbeitenden Pakete so einrichte, wie ich es möchte, wird nur eine Warteschlange immer gefüllt und die anderen mehr oder weniger leer, wenn ein Benutzer eine große Datei oder etwas anderes herunterlädt vergleichbar?
Meyer Jacobs
1
Stimmt. Die einzige gute Möglichkeit, dieses Problem zu lösen, besteht darin, ausgehende UDP-Pakete auf derselben "Verbindung" zu löschen (oder zu verzögern), um eingehende UDP-Pakete zu drosseln und ausgehende TCP-Pakete zu "modifizieren" (um die Größe des angekündigten Fensters anzupassen), um eingehende TCP-Pakete zu drosseln Pakete. Soweit ich weiß, gibt es keine einfache Möglichkeit, Tomate dazu zu bringen. Es gibt alle Arten von "nicht schrecklichen" Lösungen, aber keine guten. Wenn Sie die Latenz beibehalten möchten, müssen Sie absichtlich etwa 10% Ihrer eingehenden Bandbreite verschwenden. Andernfalls können sie niemals handeln, bis es zu spät ist.
David Schwartz
Meyer Jacobs - Ich würde mich für jede Lösung interessieren, die Sie verfolgt haben könnten. 10% der verschwendeten eingehenden Bandbreite sind angesichts der von uns bereitgestellten Geschwindigkeit schmerzhaft, aber wenn ein Benutzer sogar eine lange Seite mit Bildern lädt, geschweige denn große Dateien herunterlädt, oder schlimmer noch, Torrents, ist es für alle anderen Benutzer schmerzhaft, eine einzelne einfache Webseite zu erstellen, um den Download abzuschließen .
user66001