Configuración de búferes de retraso de gran tamaño en CoS
Puede configurar búferes de retraso de gran tamaño mediante el buffer-size-temporal
comando combinado con el q-pic-large-buffer
comando. La buffer-size temporal
opción en combinación con q-pic-large-buffer
puede crear asignación de búfer de retraso extra grande para una o varias colas en una interfaz.
Si el tamaño del búfer configurado es demasiado bajo, el tamaño del búfer para la clase de reenvío es predeterminado a 9192 y se muestra el siguiente mensaje de registro: "fwdd_cos_set_delay_bandwidth:queue:16 delay buffer size (1414) demasiado bajo, configuración predeterminada 9192".
Configuring Large Delay Buffers
La siguiente configuración se aplica a los ejemplos siguientes:
Example: Simple Configuration Using Four Queues
Esta configuración asigna 12 500 000 bytes de búfer para cada una de las cuatro colas. Para evitar exceder los límites del cálculo del búfer de retraso, este ejemplo inicial no tiene ninguna velocidad de configuración de interfaz, velocidad de transmisión del programador o porcentaje de porcentaje de tamaño de búfer del programador.
Especifique el búfer de retraso máximo de 4 segundos en cada una de las cuatro colas:
[edit]
set class-of-service schedulers be-Scheduler0 buffer-size temporal 4m
set class-of-service schedulers video-Scheduler1 buffer-size temporal 4m
set class-of-service schedulers voice-Scheduler2 buffer-size temporal 4m
set class-of-service schedulers nc-Scheduler3 buffer-size temporal 4m
Especificar
buffer-size temporal
en algunas o todas las colas usa porcentajes de velocidad de transmisión implícitos (predeterminados) o explícitos como porcentajes de tamaño de búfer de los valores temporales de esas colas. Dado que no hay porcentajes de velocidad de transmisión especificados explícitamente, divida el 100 % entre la cantidad de colas configuradas (colas con programadores configurados en la asignación del programador) para obtener los porcentajes implícitos (predeterminados) de velocidad de transmisión por cola. Cada cola obtiene una velocidad de transmisión implícita (predeterminada) de 100% / 4 = 25%.En este ejemplo, se especifica el retraso máximo de 4 segundos en cada cola, sin velocidad de modelado en la interfaz y tasas de transmisión implícitas (predeterminadas) por cola del 25 por ciento, el búfer total para todas las colas temporales de 4 m en una interfaz = 4 segundos * 100 000 000 000 bps máximo de interfaz / 8 bits/bytes = 4 segundos * 12 500 000 bytes = 50 000 000 bytes. Cada cola que especifica 4m temporales obtiene 25% * 50.000.000 = 12.500.000 bytes.
Agregue una velocidad de modelado de 4 Mbps a la interfaz:
[edit]
set class-of-service interfaces ge-0/0/3 unit 201 shaping-rate 4m
El búfer total para todas las colas temporales de 4 m en una interfaz = 4 seg * 4.000.000 bps model-rate / 8 bits/byte = 4 seg * 500.000 bytes = 2.000.000 bytes. Por lo tanto, cada cola que especifica 4m temporales recibe 25% * 2.000.000 = 500.000 bytes.
Cuando se utiliza buffer-size temporal
en cualquier cola de interfaz, si también se utiliza el transmit-rate percent
comando, el comando, o buffer-size percent
ambos comandos, en cualquiera de las colas de interfaz, los cálculos del tamaño del búfer se vuelven más complejos y es posible que se alcancen los límites de la profundidad de la cola disponible. Si la configuración intenta superar la memoria disponible, al tiempo de confirmación aparecen dos mensajes de registro del sistema en el /var/log/messages
archivo, la configuración de clase de servicio de interfaz se ignora y la configuración de clase de servicio de interfaz revierte a los valores predeterminados de dos colas:
Mar 11 11:02:10.239 elma-n4 elma-n4 COSMAN_FWDD: queue mem underflow for ge-0/0/3 Mar 11 11:02:10.240 elma-n4 elma-n4 cosman_compute_install_sched_params: Failed to compute scheduler params for ge-0/0/3.Hence retaining defaults
Al configurar buffer-size temporal
junto con transmit-rate percent
o buffer-size percent
, o ambos, debe supervisar el registro del sistema para ver si se alcanzó el límite de profundidad de cola disponible.
Example: Using buffer-size temporal with Explicit transmit-rate percent Commands
Para agregar velocidades de transmisión explícitas a las cuatro colas:
[edit]set class-of-service schedulers be-Scheduler0 transmit-rate percent 10
set class-of-service schedulers video-Scheduler1 transmit-rate percent 25
set class-of-service schedulers voice-Scheduler2 transmit-rate percent 25
set class-of-service schedulers nc-Scheduler3 transmit-rate percent 40
Por ejemplo, si una interfaz tiene una forma de 4 Mbps, el porcentaje de velocidad de transmisión de 10 para una cola significa que el recurso compartido de ancho de banda para la cola específica es de 0,4 Mbps. Las colas se asignan porciones de los 2.000.000 bytes de memoria intermedia total disponibles para las colas temporales en esta interfaz, proporcionalmente a sus velocidades de transmisión. Las cuatro colas obtienen 200 000, 500 000, 500 000 y 800 000 bytes de búfer de retraso, respectivamente.
Para evitar superar los límites de profundidad de colas y activar mensajes de registro del sistema y comportamiento de configuración predeterminado, al configurar colas con buffer-size temporal
y transmit rate percent
otras colas (no temporales) con buffer-size percent
, se debe seguir la siguiente regla de configuración: Cuando una o más colas en una interfaz están configuradas con buffer-size temporal
, la suma de las colas temporales explícitamente configurados porcentajes de velocidad de transmisión más otras colas no temporales configurados explícitamente porcentajes de tamaño de búfer no debe superar los 100 Por ciento.
Si el total de los porcentajes de velocidad de transmisión de las colas temporales y los porcentajes de tamaño de búfer de colas no temporales superan el 100 %, los queue mem underflow
mensajes de registro y Failed to compute scheduler params
del sistema aparecen en el registro de mensajes, la configuración de COS de CLI explícitamente configurada para la interfaz se ignora y la interfaz revierte a una configuración de CoS predeterminada de dos colas.
Cuando buffer-size temporal
se especifica en una cola, si transmit-rate percent
también está configurada en la misma cola, la profundidad de la cola configurada se basa en el ancho de banda fraccionado para la cola como lo obtuvo el .transmit-rate percent
Además de los tiempos de retraso temporal especificados para una o más colas mediante el tamaño temporal del búfer, hay otro tiempo de retraso calculado automáticamente para toda la interfaz. El tiempo de retraso de esta interfaz se distribuye en todas las colas no temporales, de manera proporcional a sus porcentajes de velocidad de transmisión implícitos (predeterminados) o explícitos. Si q-pic-large-buffer
no está habilitado, el tiempo de retraso de la interfaz es predeterminado de 100 ms. Como se muestra en la tabla 1, cuando q-pic-large-buffer
está habilitado, el tiempo de retraso de la interfaz se calcula según la velocidad de modelado configurada para la interfaz. Dado que la velocidad de formación configurada en el ejemplo anterior era de 4 Mbps (> 2.048.000 bps), el tiempo de retraso de la interfaz para la configuración es de 100 msec.
Velocidad de formación configurada (bps) |
Tiempo de retraso de interfaz (msec) utilizado para colas no temporales con q-pic-large-buffer habilitado |
Tiempo de retraso predeterminado utilizado (msec) sin q-pic-large-buffer |
---|---|---|
64,000-255,999 |
4000 |
100 |
256,000 - 511,999 |
2000 |
100 |
512,000 - 102,3999 |
1000 |
100 |
1,024,000 - 2,047,999 |
500 |
100 |
>= 2.048.000 |
100 |
100 |
En este ejemplo, se calculan correctamente los límites del búfer de retraso en colas temporales y no temporales:
Sustituto
buffer-size percent
debuffer-size temporal
las colas 0 y 1:[edit]
delete class-of-service schedulers be-Scheduler0 buffer-size temporal 4m
delete class-of-service schedulers video-Scheduler1 buffer-size temporal 4m
set class-of-service schedulers be-Scheduler0 buffer-size percent 10
set class-of-service schedulers video-Scheduler1 buffer-size percent 25
Esto elimina el requisito de 4 segundos de búfer especificados y lo reemplaza con un límite proporcional del 10 % (o 25 %) del tiempo de retraso total de la interfaz para las colas no temporales. En ambos casos, la profundidad de la cola se calcula en función del recurso compartido del ancho de banda de la interfaz para las colas específicas. Total interfaz Memoria de cola no temporal = velocidad de formación * Tiempo de retraso de la interfaz (Tabla 1) = 4 Mbps * 0,1 segundos = 500 000 bytes por segundo * 0,1 segundos = 50 000 bytes, por lo tanto, las colas 0 y 1 obtienen 10% * 50.000 = 5000 bytes y 25% * 50.000 = 12.500 bytes de búfer de retraso, respectivamente.
Configure
buffer-size temporal
en las colas 2 y 3:[edit]
set class-of-service schedulers voice-Scheduler2 buffer-size temporal 4m
set class-of-service schedulers voice-Scheduler2 transmit-rate percent 25
set class-of-service schedulers nc-Scheduler3 buffer-size temporal 4m
set class-of-service schedulers nc-Scheduler3 transmit-rate percent 40
Las colas 2 y 3 aún obtienen 500 000 y 800 000 bytes de búfer de retraso, respectivamente, como se calculó anteriormente. Esta configuración obedece a la regla de que la suma de las colas temporales transmite porcentajes de velocidad (25% + 40% = 65%), más los porcentajes de tamaño de búfer de colas no temporales (10% + 25% = 35%) no superan el 100% (65% + 35% <= 100%).
En el siguiente ejemplo se supera el límite del búfer de retraso, lo que activa los mensajes de registro del sistema y el comportamiento predeterminado de dos colas de clase de servicio.
Aumente el porcentaje de tamaño de búfer del 25 % al 26 % para la cola no temporal 1:
[edit]
set class-of-service schedulers video-Scheduler1 buffer-size percent 26
Esto viola la regla de configuración de que la suma de los porcentajes de tamaño de búfer de colas no temporales (10% + 26% = 36%), más los porcentajes de velocidad de transmisión de las colas temporales (25% + 40% = 65%) ahora superan el 100% (36% + 65% = 101%). Por lo tanto, aparecen los dos mensajes de registro del sistema siguientes en el /var/log/messages
archivo:
Mar 23 18:08:23 elma-n4 elma-n4 COSMAN_FWDD: %PFE-3: queue mem underflow for ge-0/0/3 q_num(3) Mar 23 18:08:23 elma-n4 elma-n4 cosman_compute_install_sched_params: %PFE-3: Failed to compute scheduler params for ge-0/0/3.Hence retaining defaults
Cuando se superan los límites del búfer de retraso, no se utilizan los valores de clase de servicio configurados por cli y la configuración predeterminada de clase de servicio (el mapa predeterminado del programador) se asigna a la interfaz. Esto usa dos colas: el mejor esfuerzo de clase de reenvío (cola 0) tiene una tasa de transmisión porcentaje de 95 y un porcentaje de tamaño de memoria intermedia de 95 y el control de red de clase de reenvío (cola 3) tiene el porcentaje de velocidad de transmisión 5 y el porcentaje de tamaño de búfer 5.
queue 0: 1,187,500 Bytes queue 1: 9,192 Bytes queue 2: 9,192 Bytes queue 3: 62,500 Bytes