Configurando grandes buffers de atraso no CoS
Você pode configurar buffers de atraso muito grandes usando o comando buffer-size-temporal
combinado com o q-pic-large-buffer
comando. A buffer-size temporal
opção combinada com pode q-pic-large-buffer
criar alocações de buffer de atraso extra-grandes para uma ou várias filas em uma interface.
Se o tamanho do buffer configurado for muito baixo, o tamanho do buffer para a classe de encaminhamento padrão para 9192 e a seguinte mensagem de log for exibido: "fwdd_cos_set_delay_bandwidth:fila:16 tamanho do buffer de atraso (1414) muito baixo, configurando-se como padrão 9192."
Configuring Large Delay Buffers
A configuração a seguir se aplica aos exemplos a seguir:
Example: Simple Configuration Using Four Queues
Essa configuração aloca 12.500.000 bytes de buffer para cada uma das quatro filas. Para evitar exceder os limites do cálculo do buffer de atraso, este exemplo inicial não tem taxa de modelagem de interface, taxa de transmissão do agendador ou configuração de porcentagem do tamanho do buffer do agendador.
Especifique o buffer de atraso máximo de 4 segundos em cada uma das quatro filas:
[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 em
buffer-size temporal
algumas ou todas as filas usa percentagem de taxa de transmissão implícita (padrão) ou explícita como as porcentagens em tamanho de buffer dos valores temporais dessas filas. Como não há percentagem de taxa de transmissão explicitamente especificada, dividir 100 por cento pelo número de filas configuradas (filas com agendadores configurados no mapa do agendador) para obter as porcentagens implícitas (padrão) por fila de taxa de transmissão. Cada fila obtém uma taxa de transmissão implícita (padrão) de 100% / 4 = 25%.Neste exemplo, especificar o atraso máximo de 4 segundos em cada fila, sem taxa de modelagem na interface e taxas de transmissão implícitas (padrão) por fila de 25 por cento, o buffer total para todas as filas temporais de 4m em uma interface = 4 segundos * 100.000.000 bps de interface máxima / 8 bits/bytes = 4 segundos * 12.500.000 bytes = 50.000.000 bytes. Cada fila que especifica 4m temporais obtém 25% * 50.000.000 = 12.500.000 bytes.
Adicione uma taxa de modelagem de 4 Mbps à interface:
[edit]
set class-of-service interfaces ge-0/0/3 unit 201 shaping-rate 4m
O buffer total para todas as filas de 4m temporais em uma interface = 4 segundos * 4.000.000 bps modelagem-rate / 8 bits/byte = 4 segundos * 500.000 bytes = 2.000.000 bytes. Portanto, cada fila que especifica 4m temporais recebe 25% * 2.000.000 = 500.000 bytes.
Ao usar buffer-size temporal
em qualquer fila de interface, transmit-rate percent
se você também usar o comando ou buffer-size percent
o comando ou ambos os comandos, em qualquer uma das filas de interface, os cálculos de tamanho do buffer se tornam mais complexos e os limites da profundidade da fila disponível podem ser atingidos. Se a configuração tentar exceder a memória disponível, no momento de confirmação, duas mensagens de log /var/log/messages
do sistema aparecem no arquivo, a configuração da classe de serviço da interface é ignorada e a configuração da classe de serviço da interface volta para os padrões de duas filas:
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
Ao configurar junto buffer-size temporal
com transmit-rate percent
ou buffer-size percent
, ou ambos, você deve monitorar o log do sistema para ver se o limite de profundidade da fila disponível foi atingido.
Example: Using buffer-size temporal with Explicit transmit-rate percent Commands
Para adicionar taxas de transmissão explícitas a todas as quatro filas:
[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 exemplo, se uma interface tiver formato de 4 Mbps, a porcentagem de taxa de transmissão de 10 para uma fila significa que a parte da largura de banda da fila específica é de 0,4 Mbps. As filas são alocadas porções dos 2.000.000 bytes do buffer total disponível para filas temporais nesta interface, proporcionalmente às suas taxas de transmissão. As quatro filas tem 200.000, 500.000, 500.000 e 800.000 bytes de buffer de atraso, respectivamente.
Para evitar exceder os limites da profundidade da fila e acionar mensagens de log do sistema e o comportamento de configuração padrão, ao configurar filas buffer-size temporal
transmit rate percent
com e e outras filas buffer-size percent
(não temporais), a seguinte regra de configuração deve ser seguida: Quando uma ou mais filas em uma interface buffer-size temporal
estão configuradas com, a soma das filas temporais configuradas explicitamente percentagem da taxa de transmissão mais outras porcentagens de tamanho de buffer não temporais definidas explicitamente não devem exceder 1000 Por cento.
Se o total das filas temporais transmitir percentagem de taxa e as porcentagens de tamanho de buffer não temporais excederem 100 por cento, queue mem underflow
Failed to compute scheduler params
as mensagens de log e o log do sistema aparecem no log de mensagens, a configuração de clI CoS definida explicitamente para a interface é ignorada e a interface volta para uma configuração de CoS padrão de duas filas.
Quando buffer-size temporal
especificado em uma fila, transmit-rate percent
se também estiver configurado na mesma fila, transmit-rate percent
a profundidade da fila configurada é baseada na largura de banda fracionada da fila, conforme obtido pelo especificado .
Além dos tempos de atraso temporal especificados para uma ou mais filas usando o tamanho do buffer temporal, há outro tempo de atraso computado automaticamente para toda a interface. Esse tempo de atraso da interface é distribuído em todas as filas não temporais, proporcionalmente a suas porcentagens implícitas (padrão) ou de taxa de transmissão explícita. Caso q-pic-large-buffer
não seja ativado, o tempo de atraso da interface será de 100 ms. Como mostrado na Tabela 1, q-pic-large-buffer
quando está ativado, o tempo de atraso da interface é calculado de acordo com a taxa de modelagem configurada da interface. Como a taxa de modelagem configurada no exemplo acima era de 4 Mbps (> 2.048.000 bps), o tempo de atraso da interface para a configuração é de 100 msec.
Taxa de modelagem configurada (bps) |
Tempo de atraso da interface (msec) usado para filas não temporais com q-pic-large-buffer ativado |
Tempo de atraso padrão usado (msec) sem 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 |
Este exemplo calcula corretamente os limites de buffer de atraso em filas temporais e não temporais:
Substituir
buffer-size percent
nasbuffer-size temporal
filas 0 e 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
Isso elimina o requisito de 4 segundos de buffer especificado rígido e o substitui por um limite proporcional de 10 por cento (ou 25 por cento) do tempo total de atraso da interface para as filas não temporais. Em ambos os casos, a profundidade da fila é calculada com base na parte da largura de banda da interface para as filas específicas. Memória da fila não temporal total = taxa de modelagem * Tempo de atraso da interface (Tabela 1) = 4 Mbps * 0,1 segundos = 500.000 bytes por segundo * 0,1 segundo = 50.000 bytes, portanto, as filas 0 e 1 obterão 10% * 50.000 = 5.000 bytes e 25% * 50.000 = 12.500 bytes de buffer de atraso, respectivamente.
Configure
buffer-size temporal
nas filas 2 e 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
As filas 2 e 3 ainda receberão 500.000 e 800.000 bytes de buffer de atraso, respectivamente, conforme previamente calculado. Essa configuração obedece à regra de que a soma das porcentagens de taxa de transmissão das filas temporais (25% + 40% = 65%), mais as porcentagens de tamanho do buffer de filas não temporais (10% + 25% = 35%) não ultrapassam 100% (65% + 35% <= 100%).
O exemplo a seguir ultrapassa o limite de buffer de atraso, acionando as mensagens de log do sistema e o comportamento padrão de classe de serviço de duas filas.
Aumente a porcentagem de tamanho do buffer de 25% para 26 por cento para a fila não temporal 1:
[edit]
set class-of-service schedulers video-Scheduler1 buffer-size percent 26
Isso viola a regra de configuração de que a soma das porcentagens de tamanho de buffer não temporal (10% + 26% = 36%), mais as porcentagens de taxa de transmissão das filas temporais (25% + 40% = 65%) agora ultrapassam 100% (36% + 65% = 101%). Portanto, as duas mensagens de log do sistema a seguir aparecem no /var/log/messages
arquivo:
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
Quando os limites de buffer de atraso são ultrapassados, as configurações de classe de serviço configuradas por CLI não são usadas e a configuração de classe de serviço padrão (o mapa do agendador padrão) é atribuído à interface. Isso usa duas filas: a melhor equipe de encaminhamento (fila 0) tem taxa de transmissão de 95% e tamanho de buffer por cento 95 e o controle de rede de classe de encaminhamento (fila 3) tem a taxa de transmissão por cento 5 e o tamanho do buffer por cento 5.
queue 0: 1,187,500 Bytes queue 1: 9,192 Bytes queue 2: 9,192 Bytes queue 3: 62,500 Bytes