Derzeit arbeite ich an einer Traffic-Shaping-Lösung für ISP-Unternehmen und bin auf ein interessantes (philosophisches) Problem gestoßen.
Als ich mir die Anzahl der Endpunkte ansah, mit denen das System umgehen sollte (ca. 20.000), war ich ein wenig besorgt, was passieren würde, wenn ich den Datenverkehr von mehr Benutzern regeln / formen müsste. Da ich derzeit HFSC-Shaping-Tree (siehe tc-hfsc, meistens das Gleiche, aber das Coolere wie besser bekanntes HTB) für das gesamte Netzwerk verwende, müsste ich mehr ClassIDs verwenden (natürlich mindestens eine für jeden Benutzer im Netzwerk). Das Problem, das ich fand, war, dass TC ClassIDs ein bisschen begrenzt sind - es sind 16-Bit-Zahlen, was mir ein mögliches Maximum von 64.000 Benutzern gibt, die von dieser Lösung geprägt sind.
Ebenso muss ich in der Lage sein, einzelne Filtereinträge zu löschen oder zu ändern, wenn ich TC-Filter effizient verwalten möchte (z. B. nicht mit der Methode "Alle leeren"). (Ich verwende etwas Ähnliches wie eine Hash-Tabelle von LARTC [1]). Auch hier scheint die einzige Methode, die damit zu funktionieren scheint, darin zu bestehen, alle Filter mit individuellen Prioritäten zu nummerieren (tc filter add dev ... prio 1). Es gibt keinen anderen Parameter, der für diesen Zweck verwendet werden könnte, und bedauerlicherweise ist prio auch nur 16-Bit.
Meine Frage lautet wie folgt: Gibt es eine gute Methode zum Vergrößern des verfügbaren "Bezeichnerbereichs", z. B. den 32-Bit-Befehl "clsid's for tc class" und 32-Bit-Prioritäten (oder andere Änderungshandles) für "tc filter"? Befehl?
Vielen Dank,
-mk
(Übrigens hoffe ich, dass dies nicht für das Szenario "64.000 Benutzer sollten für alle reichen" gilt ...)