
digamos que tengo una jerarquía htb simple (Verman 8 tc-htb
) configurar dónde se especifica el ancho de banda total para las clases htb secundariasexcedeel ancho de banda total especificado para la clase htb raíz:
tc class add dev eth0 parent 1: classid 1:1 htb rate 100kbps
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 70kbps
tc class add dev eth0 parent 1:1 classid 1:11 htb rate 70kbps
tc class add dev eth0 parent 1:1 classid 1:12 htb rate 70kbps
Aquí el máximo para la clase htb raíz es 100 kbps, pero el máximo colectivo para las clases htb secundarias es 160 kbps.
¿Cómo manejaría el núcleo que los tres hijos generaran tráfico a sus tasas máximas? ¿Puedo utilizar un sfq intermediario para garantizar un tratamiento justo del tráfico agregado en este caso?
Más importante aún, ¿cómo decide el núcleo qué tráfico dejar pasar si el tráfico total generado excede el ancho de banda de la interfaz de hardware?
Respuesta1
La recomendación general con HTB es asegurarse de que "la suma de las tarifas de la clase secundaria es igual o menor que la tarifa de la clase principal".
Si las clases secundarias permiten velocidades más altas, entonces HTB excedería el límite de ancho de banda. El límite en el padre no se aplica, simplemente se utiliza para cálculos de "ancho de banda prestado" (según la tasa máxima). La limitación real del ancho de banda solo la aplica la clase secundaria (hoja).
O al menos así se explicaba en las listas de correo, hace años y años:
Si el techo de la clase principal es menor que la suma del techo de los hijos, entonces los hijos pueden consumir más ancho de banda del que la clase principal parece permitir. ¡Esto ocurre porque la clase principal nunca se verifica! La clase de padres solo se verifica si el niño ha excedido la tasa y desea pedir prestado a los padres.
https://www.spinics.net/lists/lartc/msg08619.html
Esta es una documentación muy antigua, pero aún debería aplicarse hoy.