Desde la página de manual, la única restricción burst
es que debe ser lo suficientemente alta como para permitir su velocidad configurada: debe ser al menos velocidad / HZ. HZ es un parámetro de configuración del núcleo; puede averiguar qué es en su sistema verificando la configuración de su núcleo. Por ejemplo, en Debian, puedes:
$ egrep '^CONFIG_HZ_[0-9]+' /boot/config-`uname -r`
CONFIG_HZ_250=y
entonces HZ en mi sistema es 250. Para alcanzar una velocidad de 10mbps, necesitaría burst
por lo menos 10,000,000 bits / seg ÷ 250 Hz = 40,000 bits = 5000 bytes. (Tenga en cuenta que el valor más alto en la página de manual es de cuando HZ = 100 era el valor predeterminado).
Pero más allá de esto, burst
también es una herramienta política. Configura hasta qué punto puede usar menos ancho de banda ahora para "guardarlo" para uso futuro. Una cosa común aquí es que es posible que desee permitir que las descargas pequeñas (por ejemplo, una página web) vayan muy rápido, al tiempo que aceleran las descargas grandes. Para ello, aumenta burst
al tamaño que considera una descarga pequeña. (Sin embargo, a menudo cambia a un qdisc con clase como htb, por lo que puede segmentar los diferentes tipos de tráfico).
Entonces: configura la ráfaga para que sea al menos lo suficientemente grande como para lograr lo deseado rate
. Más allá de eso, puede aumentarlo aún más, dependiendo de lo que esté tratando de lograr.
Modelo conceptual de un filtro de cubo de fichas
Un "cubo" es un objeto metafórico. Sus propiedades clave son que puede contener tokens y que la cantidad de tokens que puede contener es limitada: si intenta agregar más, se "desborda" y se pierden los tokens adicionales (al igual que tratar de poner demasiada agua en un cubo real). Se llama el tamaño del cubo burst
.
Para transmitir realmente un paquete a la red, ese paquete debe obtener tokens iguales a su tamaño en bytes o mpu
(el que sea mayor).
Hay (o puede haber) una línea (cola) de paquetes esperando tokens. Esto ocurre cuando el depósito está vacío o, alternativamente, tiene menos tokens que el tamaño del paquete. Solo hay mucho espacio en la acera frente al cubo, y la cantidad de espacio (en bytes) se establece directamente por limit
. Alternativamente, se puede establecer indirectamente con latency
(en un mundo ideal, el cálculo sería rate
× latency
).
Cuando el núcleo quiere enviar un paquete desde la interfaz filtrada, intenta colocar el paquete al final de la línea. Si no hay espacio en la acera, es desafortunado para el paquete, porque al final de la acera hay un pozo sin fondo, y el grano deja caer el paquete.
La pieza final es una máquina de hacer fichas que agrega rate
/ HZ
fichas al cubo cada vez que se marca. (Esta es la razón por la cual su cubo debe ser al menos tan grande, de lo contrario, algunas de las fichas recién acuñadas se descartarán inmediatamente).
tbf
está claro: es parte del marco de control de tráfico de Linux.man tbf
oman tc-tbf
debería traer documentación.