Il est assez facile d'utiliser tc
avec Stochastic Fairness Queuing (SFQ) pour configurer un partage équitable de la bande passante entre les flux , mais une application peut ouvrir plusieurs flux et obtenir une part inéquitable de la bande passante. Est-il possible de configurer un partage équitable de la bande passante entre les applications à la place ?
Regrouper chaque application dans un groupe de contrôle semble être une première étape évidente. Si SFQ supportait le hachage sur l'ID de classe, il serait facile d'utiliser tc filter
pour attribuer à chaque groupe de contrôle un ID de classe. Malheureusement, SFQ ne semble pas prendre en charge cela. Une autre approche prometteuse consiste à utiliser CBQ, qui effectue un Round Robin pondéré dans toutes les classes. Malheureusement, rendre les pondérations toutes égales ne semble pas fonctionner.
Existe-t-il un autre moyen de partager équitablement la bande passante entre les cgroups ?
Réponse acceptée :
Découvrez le contrôleur de groupe de contrôle net_cls. Il attache essentiellement une balise spéciale (définie dans /mntpoint/net_cls.classid
à chaque paquet provenant du socket associé à une application dans ce groupe de contrôle. Vous pourrez ensuite utiliser cette "balise" comme classid
dans le filtre attaché au gestionnaire de mise en file d'attente pour transmettre le trafic à différentes classes en fonction du groupe de contrôle d'où provient le trafic.
La seule documentation que j'ai trouvée sur ce sujet sont des diapositives Red Hat [HTML via Google].