Es ist ziemlich einfach, tc
zu verwenden mit Stochastic Fairness Queuing (SFQ), um eine faire Bandbreitenteilung zwischen Flows zu konfigurieren , aber eine Anwendung kann mehrere Flows öffnen und einen unfairen Anteil an Bandbreite erhalten. Ist es möglich, eine faire Aufteilung der Bandbreite zwischen Anwendungen zu konfigurieren? stattdessen?
Das Gruppieren jeder Anwendung in einer Kontrollgruppe scheint ein klarer erster Schritt zu sein. Wenn SFQ Hashing auf der Klassen-ID unterstützen würde, wäre es einfach, tc filter
zu verwenden um jeder Kontrollgruppe eine Klassen-ID zuzuweisen. Leider scheint SFQ dies nicht zu unterstützen. Ein weiterer vielversprechender Ansatz ist die Verwendung von CBQ, das klassenübergreifendes Weighted Round Robin durchführt. Leider scheint es nicht zu funktionieren, alle Gewichte gleich zu machen.
Gibt es eine andere Möglichkeit, die Bandbreite fair zwischen Cgroups aufzuteilen?
Akzeptierte Antwort:
Schauen Sie sich den net_cls cgroup-Controller an. Es hängt grundsätzlich ein spezielles Tag an (definiert in /mntpoint/net_cls.classid
an jedes Paket, das von einem Socket stammt, der einer Anwendung in dieser Kontrollgruppe zugeordnet ist. Dieses „Tag“ können Sie später als classid
verwenden in dem an die qdisc angehängten Filter, um den Datenverkehr basierend auf der Kontrollgruppe, aus der der Datenverkehr kommt, an verschiedene Klassen weiterzuleiten.
Die einzige Dokumentation, die ich zu diesem Thema gefunden habe, sind einige Red Hat-Folien [HTML via Google].