Es bastante fácil de usar tc
con Stochastic Fairness Queuing (SFQ) para configurar el intercambio justo de ancho de banda entre flujos , pero una aplicación puede abrir múltiples flujos y obtener una parte injusta del ancho de banda. ¿Es posible configurar un uso compartido equitativo del ancho de banda entre aplicaciones? en su lugar?
Agrupar cada aplicación en un cgroup parece un primer paso claro. Si SFQ admitiera hash en el ID de clase, sería fácil usar tc filter
para asignar a cada cgroup un ID de clase. Desafortunadamente, SFQ no parece admitir esto. Otro enfoque prometedor es usar CBQ, que hace un Round Robin ponderado en todas las clases. Desafortunadamente, hacer que todos los pesos sean iguales no parece funcionar.
¿Hay otra forma de compartir el ancho de banda de manera justa entre cgroups?
Respuesta aceptada:
Echa un vistazo al controlador net_cls cgroup. Básicamente adjunta una etiqueta especial (definida en /mntpoint/net_cls.classid
a cada paquete que se origina en el socket asociado con una aplicación en ese cgroup. Más tarde puede usar esta 'etiqueta' como classid
en el filtro adjunto a la qdisc para pasar el tráfico a diferentes clases según el cgroup del que proviene el tráfico.
La única documentación que he encontrado sobre este tema son algunas diapositivas de Red Hat [HTML a través de Google].