Visão geral do tamanho do buffer do agendador
Grandes explosões de tráfego de interfaces mais rápidas podem causar congestionamento e derrubar pacotes em interfaces mais lentas que têm pequenos buffers de atraso. Por exemplo, um dispositivo da Juniper Networks que opera na borda da rede pode soltar uma parte do tráfego estourado que recebe em uma interface T1/E1 canalizada de uma interface Ethernet rápida ou Gigabit Ethernet em um roteador no núcleo da rede. Nos dispositivos da Juniper Networks, grandes buffers de atraso podem ser configurados para interfaces T1/E1 canalizadas e T1/E1 não canalizadas.
Para garantir que o tráfego esteja enfileirado e transmitido corretamente em interfaces mais lentas, você pode configurar um tamanho de buffer maior do que o máximo padrão.
Esta seção contém os seguintes tópicos:
Tamanhos máximos de buffer de atraso disponíveis para interfaces T1/E1 canalizadas
Quando você habilita o grande recurso de buffer de atraso em interfaces, um buffer maior está disponível para alocação em filas de agendamento. O tamanho máximo do buffer de atraso disponível para uma interface depende do tempo máximo de buffer de atraso disponível e da velocidade da interface conforme mostrado na Tabela 1.
Os valores padrão são os seguintes:
Interface clear-channel — o tempo de buffer de atraso padrão é de 500.000 microssegundos (0,5 s).
Ninterface xDS0 — O tempo de buffer de atraso padrão é de 1.200.000 microssegundos (1,2 s).
Taxa de linha eficaz |
Tempo máximo de buffer de atraso disponível |
---|---|
< 4xDS0 |
4.000.000 microssegundos (4 s) |
< 8xDS0 |
2.000.000 microssegundos (2 s) |
< 16xDS0 |
1.000.000 microssegundos (1 s) |
<= 32xDS0 |
500.000 microssegundos (0,5 s) |
<= 10 mbps |
400.000 microssegundos (0,4 s) |
<= 20 mbps |
300.000 microssegundos (0,3 s) |
<= 30 mbps |
200.000 microssegundos (0,2 s) |
<= 40 mbps |
150.000 microssegundos (0,15 s) |
Você pode calcular o tamanho máximo do buffer de atraso disponível para uma interface, com a fórmula a seguir:
interface speed x maximum delay buffer time = maximum available delay buffer size
Por exemplo, os seguintes tamanhos máximos de buffer de atraso estão disponíveis para interfaces 1xDS0 e 2xDS0:
1xDS0 — 64 Kbps x 4 s = 256 Kb (32 KB)
2xDS0 — 128 Kbps x 4 s = 512 Kb (64 KB)
Se você configurar um tamanho de buffer de atraso maior que o máximo, o sistema permite que você comprometa a configuração, mas exibe uma mensagem de aviso de log do sistema e usa a configuração padrão do tamanho do buffer em vez da configuração máxima configurada.
Tamanho máximo de buffer de atraso para interfaces vSRX
Para uma máquina virtual vSRX, interfaces de 1 Gbps têm um tempo de buffer de atraso padrão de 1 segundo, um tempo máximo de buffer de 32 segundos e um tamanho máximo de buffer de 128 MB. Use o seguinte comando CLI para definir o tempo máximo de buffer de atraso para um agendador:
set class-of-service schedulers be-scheduler buffer-size temporal 32m
Em uma interface vSRX lógica, o tamanho do buffer de atraso para uma fila que não tem uma taxa de modelagem específica funciona como um tamanho de buffer mínimo garantido, e a fila pode crescer sem quedas de pacotes se o tamanho da fila for menor do que o tamanho do buffer garantido.
A soma dos tamanhos de buffer de atraso garantidos para todas as filas funciona como um pool que pode ser compartilhado entre as filas que não têm uma taxa de modelagem específica.
Os buffers de atraso são usados para controlar o tamanho das filas, mas não representam a memória real. O pool de buffer de pacotes contém a memória real usada para armazenar pacotes.
Os pacotes são descartados (100% de probabilidade) da fila se:
O limite total de buffer seria excedido.
O tamanho da fila excederia o tamanho total do buffer livre.
O pool de buffer de pacotes é menos de 25% gratuito e a fila excede o tamanho mínimo de buffer garantido.
O pool de buffer de pacotes é apenas 5% gratuito (ou menos).
Os pacotes também podem ser descartados por um perfil RED (RED-drop) se o tamanho da fila exceder o tamanho do buffer garantido. O tamanho da fila ficará restrito a ser menor ou igual aos buffers compartilhados gratuitos disponíveis.
O suporte para máquinas virtuais vSRX depende da versão do Junos OS em sua instalação.
Métodos de alocação do tamanho do buffer de atraso
Você pode especificar tamanhos de buffer de atraso para cada fila usando agendadores. O buffer de fila pode ser especificado como um período de tempo (microssegundos) ou como uma porcentagem do buffer total ou como o buffer restante. A Tabela 2 mostra métodos diferentes que você pode especificar para alocação de buffer em filas.
Método de alocação de tamanho de buffer |
Descrição |
---|---|
Porcentagem |
Uma porcentagem do buffer total. |
Temporal |
Um período de tempo, valor em microssegundos. Ao configurar um buffer temporal, você também deve configurar uma taxa de transmissão. O sistema calcula o tamanho do buffer da fila multiplicando a largura de banda disponível da interface vezes o valor temporal configurado e a taxa de transmissão. Quando você especifica um método temporal, o perfil de queda é atribuído a um buffer estático e o sistema começa a soltar pacotes assim que o tamanho do buffer da fila estiver cheio. Por padrão, os outros tipos de buffer são atribuídos buffers dinâmicos que usam largura de banda de transmissão excedente para absorver explosões de tráfego. |
Restante |
O buffer restante disponível. O restante é o buffer percentual que não é atribuído a outras filas. Por exemplo, se você atribuir 40% do buffer de atraso à fila 0, permitir que a fila 3 mantenha o loteamento padrão de 5% e atribua o restante à fila 7, então a fila 7 usa aproximadamente 55% do buffer de atraso. Opcionalmente, você pode especificar a porcentagem do restante a ser usado para alocar o tamanho do buffer do agendador de forma proporcional. Se o percentual restante não for especificado, o valor restante será compartilhado igualmente. |
Tamanhos de buffer de atraso para filas
Você especifica tamanhos de buffer de atraso para filas usando agendadores. O sistema calcula o tamanho do buffer de uma fila com base no método de alocação de buffer que você especifica para ele no agendador. Consulte a Tabela 2 para diferentes métodos de alocação de buffer e a Tabela 3 para cálculos de tamanho de buffer.
Método de alocação de tamanho de buffer |
Cálculo de buffer de fila |
Exemplo |
---|---|---|
Porcentagem |
available interface bandwidth x configured buffer size percentage maximum delay buffer time = queue buffer |
Suponha que você configure uma fila em uma interface 1xDS0 para usar 30 % do tamanho do buffer de atraso disponível. O sistema usa o tempo máximo de buffer de atraso disponível (4 segundos) e aloca os bytes da fila 9600 de buffer de atraso: 64 Kbps x 0,3 x 4 s=76,800 bits=9.600 bytes |
Temporal |
available interface bandwidth x configured transmit rate percentage configured temporal buffer size = queue buffer |
Suponha que você configure uma fila em uma interface 1xDS0 para usar 3.000.000 microssegundos (3 segundos) de buffer de atraso, e você configure a taxa de transmissão para 20 %. A fila recebe 4800 bytes de buffer de atraso: 64 Kbps x 0,2 x 3 s=38,400 bits=4.800 bytes Se você configurar um valor temporal que exceder o tempo máximo de buffer de atraso disponível, a fila será alocada no buffer restante após a alocação de buffers para as outras filas. Suponha que você configure um valor temporal de 6.000.000 microssegundos em uma interface 1xDS0. Como esse valor excede o valor máximo permitido de 4.000.000 microssegundos, a fila é alocada no buffer de atraso restante. |
Quando você especifica o tamanho do buffer como uma porcentagem, o sistema ignora a taxa de transmissão e calcula o tamanho do buffer com base apenas na porcentagem do tamanho do buffer.