A programação de saída garante que o tráfego importante não reduzirá no caso de um excesso de assinaturas na saída de uma interface. Este documento discute todas as técnicas e algoritmos que estão envolvidos na programação de saída no Cisco Catalyst 3550 Switch. Este documento também se concentra em como configurar e verificar a operação de programação de saída nos switches Catalyst 3550.
Não existem requisitos específicos para este documento.
As informações neste documento são baseadas no Catalyst 3550 que executa o Cisco IOS® Software Release 12.1(12c)EA1.
The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. If your network is live, make sure that you understand the potential impact of any command.
Consulte as Convenções de Dicas Técnicas da Cisco para obter mais informações sobre convenções de documentos.
Há dois tipos de portas em switches 3550:
Portas Gigabit
Portas não-Gigabit (porta de 10/100 Mbps)
Essas duas portas têm capacidades distintas. O restante desta seção resume esses recursos. As outras seções deste documento explicam os recursos em mais detalhes.
Cada porta no 3550 possui quatro filas de saída diferentes. Você pode configurar uma dessas filas como uma fila de prioridade estrita. Cada uma das filas restantes é configurada como filas de prioridade não rígidas e é atendida com o uso de rodízio ponderado (WRR). Em todas as portas, o pacote é atribuído a uma das quatro filas possíveis com base na classe de serviço (CoS).
As portas de gigabit também oferecem suporte a um mecanismo de gerenciamento de fila em cada fila. Você pode configurar cada fila para usar a detecção antecipada aleatória ponderada (WRED - Weighted Random Early Detection) ou a queda traseira com dois limiares. Além disso, você pode ajustar o tamanho de cada fila (o buffer atribuído a cada fila).
As portas não-Gigabit não têm nenhum mecanismo de enfileiramento, como WRED ou queda traseira com dois limiares. Somente o enfileiramento FIFO em uma porta de 10/100 Mbps é suportado. Você não pode alterar o tamanho de cada uma das quatro filas nessas portas. No entanto, você pode atribuir um tamanho de reserva mínimo (mínimo) por fila.
Esta seção discute como o 3550 decide colocar cada pacote em uma fila. O pacote é colocado na fila com base no CoS. Cada um dos oito valores de CoS possíveis é mapeado para uma das quatro filas possíveis com o uso do comando de interface de mapa de CoS para fila que este exemplo mostra:
(config-if)#wrr-queue cos-map queue-id cos1... cos8
Aqui está um exemplo:
3550(config-if)#wrr-queue cos-map 1 0 1 3550(config-if)#wrr-queue cos-map 2 2 3 3550(config-if)#wrr-queue cos-map 3 4 5 3550(config-if)#wrr-queue cos-map 4 6 7
Este exemplo coloca:
CoS 0 e 1 na fila 1 (Q1)
CoS 2 e 3 no 2º trimestre
CoS 4 e 5 no 3º trimestre
CoS 6 e 7 no 4º trimestre
Você pode emitir este comando para verificar o mapeamento de CoS para fila de uma porta:
cat3550#show mls qos interface gigabitethernet0/1 queueing GigabitEthernet0/1 ...Cos-queue map: cos-qid 0 - 1 1 - 1 2 - 2 3 - 2 4 - 3 5 - 3 6 - 4 7 - 4...
Uma fila de prioridade estrita sempre é esvaziada primeiro. Assim, assim que houver um pacote na fila de prioridade estrita, o pacote será encaminhado. Após cada pacote ser encaminhado de uma das filas WRR, a fila de prioridade estrita é verificada e esvaziada, se necessário.
Uma fila de prioridade estrita é especialmente projetada para tráfego sensível a retardo/jitter, como voz. Uma fila de prioridade máxima pode eventualmente causar inanição das outras filas. Os pacotes colocados nas três outras filas WRR nunca serão encaminhados se um pacote aguardar na fila de prioridade estrita.
Para evitar o esgotamento das outras filas, preste atenção especial ao tráfego que é colocado na fila de prioridade. Essa fila é normalmente usada para tráfego de voz, cujo volume normalmente não é muito alto. No entanto, se alguém for capaz de enviar tráfego de alto volume com prioridade de CoS para a fila de prioridade estrita (como transferência de arquivos grandes ou backup), pode ocorrer a indisponibilidade de outro tráfego. Para evitar esse problema, é necessário colocar tráfego especial na classificação/admissão e na marcação do tráfego na rede. Por exemplo, você pode tomar estas precauções:
Usar o status de QoS da porta não confiável para todas as portas de origem não confiáveis.
Use o recurso de limite confiável para a porta do telefone IP da Cisco para garantir que não seja usado no estado confiável configurado para um telefone IP para outro aplicativo.
Vigia o tráfego que vai para a fila de prioridade estrita. Defina um limite para policiar o tráfego com um CoS de 5 (ponto de código de serviços diferenciados [DSCP] 46) para 100 MB em uma porta Gigabit.
Para obter mais informações sobre esses tópicos, consulte estes documentos:
Como compreender as políticas de QoS e a marcação no Catalyst 3550
Configurando um limite confiável para garantir a segurança de porta seção de Configuração de QoS (Catalyst 3500)
No 3550, você pode configurar uma fila para ser a fila prioritária (que é sempre o Q4). Use este comando no modo de interface:
3550(config-if)#priority-queue out
Se a fila de prioridade não estiver configurada em uma interface, o Q4 será considerado como uma fila WRR padrão. A seção Rodízio Ponderado no Catalyst 3550 deste documento fornece mais detalhes. Você pode verificar se a fila de prioridade estrita está configurada em uma interface se emitir o mesmo comando Cisco IOS:
NifNif#show mls qos interface gigabitethernet0/1 queueing GigabitEthernet0/1 Egress expedite queue: ena
WRR é um mecanismo usado na programação de saída no 3550. O WRR funciona entre três ou quatro filas (se não houver uma fila de prioridade máxima). As filas que são usadas no WRR são esvaziadas de forma round-robin e você pode configurar o peso para cada fila.
Por exemplo, você pode configurar pesos para que as filas sejam atendidas de forma diferente, como mostra esta lista:
Servidor WRR Q1: 10% do tempo
Servidor WRR Q2: 20% do tempo
Servidor WRR Q3: 60% do tempo
Servidor WRR 4º trimestre: 10% do tempo
Para cada fila, você pode emitir estes comandos no modo de interface para configurar os quatro pesos (com um associado a cada fila):
(config-f)#wrr-queue bandwidth weight1 weight2 weight3 weight4
Aqui está um exemplo:
3550(config)#interface gigabitethernet 0/1
3550(config-if)#wrr-queue bandwidth 1 2 3 4
Nota: Os pesos são relativos. Esses valores são usados:
Q1 = peso 1 / (peso1 + peso2 + peso3 + peso4) = 1 / (1+2+3+4) = 1/10
Q2 = 2/10
Q3 = 3/10
Q4 = 4/10
O WRR pode ser implementado destas duas maneiras:
WRR por largura de banda: Cada peso representa uma largura de banda específica que pode ser enviada. O peso do Q1 pode ter aproximadamente 10% da largura de banda, o Q2 recebe 20% da largura de banda e assim por diante. Esse esquema só é implementado na série Catalyst 6500/6000 neste momento.
WRR por pacote: Esse é o algoritmo que é implementado no switch 3550. Cada peso representa um determinado número de pacotes a serem enviados, independentemente do seu tamanho.
Como o 3550 implementa WRR por pacote, esse comportamento se aplica à configuração nesta seção:
Q1 transmite 1 pacote de 10
Q2 transmite 2 pacotes de 10
O Q3 transmite 3 pacotes de 10
O quarto trimestre transmite 4 pacotes de 10
Os pacotes a serem transmitidos podem ter o mesmo tamanho. Você ainda alcança um compartilhamento esperado de largura de banda entre as quatro filas. No entanto, se o tamanho médio do pacote for diferente entre as filas, haverá um grande impacto no que é transmitido e descartado em caso de congestionamento.
Por exemplo, suponha que haja apenas dois fluxos presentes no Switch. Hipoteticamente, suponha também que essas condições estejam em vigor:
Um Gbps de pequeno tráfego de aplicativos interativos (quadros de 80 bytes [B]) com um CoS de 3 é colocado no segundo trimestre.
Um Gbps de tráfego de transferência de arquivos grandes (quadros 1518-B) com um CoS de 0 é colocado no primeiro trimestre.
Duas filas no switch são enviadas com 1 Gbps de dados.
Ambos os fluxos devem compartilhar a mesma porta Gigabit de saída. Suponha que o peso igual esteja configurado entre o primeiro e o segundo trimestres. O WRR é aplicado por pacote e a quantidade de dados que são transmitidos de cada fila difere entre as duas filas. O mesmo número de pacotes é encaminhado de cada fila, mas o switch realmente envia essa quantidade de dados:
77700 pacotes por segundo (pps) do Q2 = (77700 x 8 x 64) bits por segundo (bps) (aproximadamente 52 Mbps)
77700 pps do T1 = (77700 x 8 x 1500) bps (aproximadamente 948 Mbps)
Se você quiser permitir acesso justo para cada fila à rede, leve em conta o tamanho médio de cada pacote. Espera-se que cada pacote seja colocado em uma fila e que o peso seja modificado de forma adequada. Por exemplo, se você quiser dar acesso igual a cada uma das quatro filas, de modo que cada fila obtenha 1/4 da largura de banda, o tráfego é o seguinte:
No 1º trimestre: Tráfego Internet de melhor esforço. Suponha que o tráfego tenha um tamanho médio de pacote de 256 B.
Em Q2: Backup composto de transferência de arquivos, com um pacote principalmente de 1500 B.
Na Q3: Fluxos de vídeo, que são feitos em pacotes de 192 B.
Em Q4 : Aplicativo interativo composto principalmente de um pacote de 64 B.
Isso cria as seguintes condições:
O Q1 consome 4 vezes mais largura de banda do que o Q4.
O Q2 consome 24 vezes a largura de banda do Q4.
Q3 consome três vezes mais de largura de banda do que Q4.
Para ter acesso de largura de banda igual à rede, configure:
Q1 com peso de 6
Q2 com um peso de 1
Q3 com peso de 8
Q4 com peso de 24
Se você atribuir esses pesos, obterá um compartilhamento de largura de banda igual entre as quatro filas em caso de congestionamento.
Se a fila de prioridade estrita estiver habilitada, os pesos de WRR são redistribuídos entre as três filas restantes. Se a fila de prioridade estrita estiver habilitada e o Q4 não estiver configurado, o primeiro exemplo com pesos de 1, 2, 3 e 4 será:
Q1 = 1 / (1+2+3) = 1 pacote de 6
Q2 = 2 pacotes de 6
Q3 = 3 pacotes de 6
Você pode executar este comando show do Cisco IOS Software para verificar o peso da fila:
NifNif#show mls qos interface gigabitethernet0/1 queueing GigabitEthernet0/1 QoS is disabled. Only one queue is used When QoS is enabled, following settings will be applied Egress expedite queue: dis wrr bandwidth weights: qid-weights 1 - 25 2 - 25 3 - 25 4 - 25
Se a fila de prioridade de expedição estiver habilitada, o peso do Q4 só será usado se a fila de expedição for desativada. Aqui está um exemplo:
NifNif#show mls qos interface gigabitethernet0/1 queueing GigabitEthernet0/1 Egress expedite queue: ena wrr bandwidth weights: qid-weights 1 - 25 2 - 25 3 - 25 4 - 25 !--- The expedite queue is disabled.
O WRED só está disponível em portas Gigabit nos 3550 Series Switches. WRED é uma modificação da detecção precoce aleatória (RED - Random Early Detection), usada para evitar congestionamento. O RED tem estes parâmetros definidos:
Limite mínimo: Representa um limiar dentro de uma fila. Nenhum pacote é descartado abaixo desse limite.
Limite máximo (máximo): Representa outro limite dentro de uma fila. Todos os pacotes são descartados acima do limite máximo.
Inclinação: Probabilidade de descartar o pacote entre o mínimo e o máximo. A probabilidade de queda aumenta linearmente (com um certo declive) com o tamanho da fila.
Este gráfico mostra a probabilidade de queda de um pacote na fila RED:
Observação: todos os switches Catalyst que implementam RED permitem ajustar o declive.
Em WRED, serviços diferentes são ponderados. Você pode definir um serviço padrão e um premium. Cada serviço recebe um conjunto diferente de limites. Somente os pacotes atribuídos ao serviço padrão são descartados quando o limite mínimo 1 é atingido. Somente pacotes de serviços premium começam a ser descartados quando o limite mínimo 2 é atingido. Se o limiar mínimo 2 for superior ao limiar mínimo 1, mais pacotes do serviço padrão serão descartados do que os pacotes dos serviços premium. Este gráfico mostra um exemplo da probabilidade de queda para cada serviço com WRED:
Observação: o switch 3550 não permite que você ajuste o limite mínimo, mas apenas o limite máximo. O limiar mínimo é sempre definido como 0. Isso dá uma probabilidade de queda que representa o que está implementado atualmente no 3550.
Qualquer fila habilitada para WRED no 3550 sempre tem uma probabilidade de queda diferente de zero e sempre descarta pacotes. Esse é o caso porque o limite mínimo é sempre 0. Se você precisar evitar a queda de pacotes no máximo, use a queda traseira ponderada, que a seção queda traseira nos Switches Catalyst 3550 descreve.
Dica: a ID de bug da Cisco CSCdz73556 (somente clientes registrados) documenta uma solicitação de aprimoramento para a configuração do limite mínimo.
Para obter mais informações sobre RED e WRED, consulte Congestion Avoidance Overview (Visão geral da prevenção de congestionamento).
No 3550, você pode configurar o WRED com dois limiares máximos diferentes para fornecer dois serviços diferentes. Tipos diferentes de tráfego são atribuídos a qualquer limiar, o que depende apenas dos DSCPs internos. Isso difere da atribuição da fila, que depende apenas do CoS do pacote. Um mapeamento de tabela de DSCP para limiar decide a que limiar cada um dos 64 DSCPs vai. Você pode emitir este comando para ver e modificar esta tabela:
(config-if)#wrr-queue dscp-map threshold_number DSCP_1 DSCP_2 DSCP_8
Por exemplo, este comando atribui DSCP 26 ao limiar 2:
NifNif(config-if)#wrr-queue dscp-map 2 26 NifNif#show mls qos interface gigabitethernet0/1 queueing GigabitEthernet0/1 Dscp-threshold map: d1 : d2 0 1 2 3 4 5 6 7 8 9 --------------------------------------- 0 : 01 01 01 01 01 01 01 01 01 01 1 : 01 01 01 01 01 01 02 01 01 01 2 : 01 01 01 01 02 01 02 01 01 01 3 : 01 01 01 01 01 01 01 01 01 01 4 : 02 01 01 01 01 01 02 01 01 01 5 : 01 01 01 01 01 01 01 01 01 01 6 : 01 01 01 01
Após a definição do mapa DSCP-to-threshold, o WRED é ativado na fila de sua escolha. Emita este comando:
(config-if)#wrr-queue random-detect max-threshold queue_id threshold_1 threshold_2
Este exemplo configura:
Q1 com limiar 1 = 50% e limiar 2 = 100%
Q2 com limiar 1 = 70% e limiar 2 = 100%
3550(config)#interface gigabitethernet 0/1 3550(config-if)#wrr-queue random-detect max-threshold 1 50 100 3550(config-if)#wrr-queue random-detect max-threshold 2 70 100 3550(config-if)#wrr-queue random-detect max-threshold 3 50 100 3550(config-if)#wrr-queue random-detect max-threshold 4 70 100
Você pode emitir este comando para verificar o tipo de enfileiramento (WRED ou não) em cada fila:
nifnif#show mls qos interface gigabitethernet0/1 buffers GigabitEthernet0/1 .. qid WRED thresh1 thresh2 1 dis 10 100 2 dis 10 100 3 ena 10 100 4 dis 100 100
O ena significa habilitar e a fila usa WRED. O disco significa desabilitar e a fila usa queda traseira.
Você também pode monitorar o número de pacotes que são descartados para cada limiar. Emita este comando:
show mls qos interface gigabitethernetx/x statistics
WRED drop counts:
qid thresh1 thresh2 FreeQ
1 : 327186552 8 1024
2 : 0 0 1024
3 : 37896030 0 1024
4 : 0 0 1024
A queda da parte traseira é o mecanismo padrão do 3550 nas portas de Gigabit. Cada porta Gigabit pode ter dois limiares de queda traseira. Um conjunto de DSCPs é atribuído a cada um dos limiares de queda traseira com o uso do mesmo mapa de limites de DSCP que a seção WRED em Catalyst 3550 Switches deste documento define. Quando um limite é atingido, todos os pacotes com um DSCP atribuído a esse limite são descartados. Você pode emitir este comando para configurar limiares de queda traseira:
(config-if)#wrr-queue threshold queue-id threshold-percentage1 threshold-percentage2
Este exemplo configura:
Q1 com limite de queda traseira 1 = 50% e limite 2 = 100%
Q2 com limiar 1 = 70% e limiar 2 = 100%
Switch(config-if)#wrr-queue threshold 1 50 100 Switch(config-if)#wrr-queue threshold 2 70 100 Switch(config-if)#wrr-queue threshold 3 60 100 Switch(config-if)#wrr-queue threshold 4 80 100
O switch 3550 usa buffer central. Isso significa que não há tamanhos fixos de buffer por porta. No entanto, há um número fixo de pacotes em uma porta Gigabit que pode ser enfileirada. Esse número fixo é 4096. Por padrão, cada fila em uma porta Gigabit pode ter até 1024 pacotes, independentemente do tamanho do pacote. No entanto, você pode modificar a forma como esses pacotes 4096 são divididos entre as quatro filas. Emita este comando:
wrr-queue queue-limit Q_size1 Q_size2 Q_size3 Q_size4
Aqui está um exemplo:
3550(config)#interface gigabitethernet 0/1 3550(config-if)#wrr-queue queue-limit 4 3 2 1
Esses parâmetros de tamanho da fila são relativos. Este exemplo mostra que:
Q1 é quatro vezes maior que Q4.
O 2º trimestre é três vezes maior que o 4º trimestre.
O 3º trimestre é duas vezes maior que o 4º trimestre.
Os pacotes 4096 são redistribuídos desta forma:
Q1 = [4 /(1+2+3+4) ] * 4096 = 1639 pacotes
Q2 = 0,3 * 4096 = 1229 pacotes
Q3 = 0,2 * 4096 = 819 pacotes
Q4 = 0,1 * 4096 = 409 pacotes
Esse comando permite ver os pesos relativos dos buffers divididos entre as quatro filas:
cat3550#show mls qos interface buffers GigabitEthernet0/1 Notify Q depth: qid-size 1 - 4 2 - 3 3 - 2 4 - 1 ...
Você também pode emitir este comando para ver quantos pacotes livres cada fila ainda pode conter:
(config-if)#show mls qos interface gigabitethernetx/x statistics
WRED drop counts:
qid thresh1 thresh2 FreeQ
1 : 0 0 1639
2 : 0 0 1229
3 : 0 0 819
4 : 0 0 409
O parâmetro de contagem FreeQ é dinâmico. O contador FreeQ fornece o tamanho máximo da fila menos o número de pacotes que estão atualmente na fila. Por exemplo, se há atualmente 39 pacotes no primeiro trimestre, 1600 pacotes estão livres na contagem FreeQ. Aqui está um exemplo:
(config-if)#show mls qos interface gigabitethernetx/x statistics
WRED drop counts:
qid thresh1 thresh2 FreeQ
1 : 0 0 1600
2 : 0 0 1229
3 : 0 0 819
4 : 0 0 409
Não há esquema de gerenciamento de fila disponível em portas de 10/100 Mbps (sem WRED ou queda traseira com dois limiares). Todas as quatro filas são filas FIFO. Também não há um tamanho máximo de fila que reserva 4096 pacotes para cada porta Gigabit. As portas de 10/100 Mbps armazenam pacotes em cada fila até que estejam cheias devido à falta de recursos. Você pode reservar um número mínimo de pacotes por fila. O mínimo é definido em 100 pacotes por fila por padrão. Você pode modificar esse valor mínimo de reserva para cada fila se definir valores de reserva mínima diferentes e atribuir um dos valores a cada fila.
Conclua estes passos para fazer esta modificação:
Atribua um tamanho de buffer para cada valor de reserva mínima global.
Você pode configurar um máximo de oito valores de reserva mínima diferentes. Emita este comando:
(Config)# mls qos min-reserve min-reserve-level min-reserve-buffersize
Esses valores de reserva mínimos são globais para o switch. Por padrão, todos os valores de reserva mínima são definidos como 100 pacotes.
Por exemplo, para configurar um nível mínimo de reserva 1 de 150 pacotes e um nível mínimo de reserva 2 de 50 pacotes, emita estes comandos:
nifnif(config)#mls qos min-reserve ? <1-8> Configure min-reserve level nifnif(config)#mls qos min-reserve 1 ? <10-170> Configure min-reserve buffers nifnif(config)#mls qos min-reserve 1 150 nifnif(config)#mls qos min-reserve 2 50
Atribua um dos valores de reserva mínima a cada uma das filas.
Você deve atribuir cada uma das filas a um dos valores de reserva principais para saber quantos buffers estão garantidos para essa fila. Por padrão, essas condições se aplicam:
Q1 está atribuído ao nível mínimo de reserva 1.
O 2º trimestre é atribuído ao nível de reserva mínimo 2.
Q3 é atribuído ao nível mínimo de reserva 3.
O quarto trimestre é atribuído ao nível mínimo de reserva 4.
Por padrão, todos os valores de reserva mín. são 100.
Você pode emitir este comando de interface para atribuir um valor de reserva mínima diferente por fila:
(config-if)#wrr-queue min-reserve queue-id min-reserve-level
Por exemplo, para atribuir ao Q1 uma reserva mínima de 2 e ao Q2 uma reserva mínima de 1, emita este comando:
nifnif(config)#interface fastethernet 0/1 nifnif(config-if)#wrr-queue min-reserve ? <1-4> queue id nifnif(config-if)#wrr-queue min-reserve 1 ? <1-8> min-reserve level nifnif(config-if)#wrr-queue min-reserve 1 2 nifnif(config-if)#wrr-queue min-reserve 2 1
Você pode emitir este comando para verificar a atribuição de reserva principal que resulta em:
nifnif#show mls qos interface fastethernet0/1 buffers FastEthernet0/1 Minimum reserve buffer size: 150 50 100 100 100 100 100 100 !--- This shows the value of all eight min reserve levels. Minimum reserve buffer level select: 2 1 3 4 !--- This shows the min reserve level that is assigned to !--- each queue (from Q1 to Q4).
O enfileiramento e o agendamento em uma porta no 3550 envolvem estas etapas:
Atribua cada CoS a uma das filas.
Habilite filas de prioridade estrita, se necessário.
Atribua o peso do WRR e leve em conta o tamanho esperado do pacote na fila.
Modificar o tamanho da fila (somente portas Gigabit).
Habilite um mecanismo de gerenciamento de fila (queda traseira ou WRED, somente em portas Gigabit).
O enfileiramento e o agendamento adequados podem reduzir o retardo/instabilidade do tráfego de voz/vídeo e evitar a perda do tráfego de missão crítica. Siga estas diretrizes para obter o máximo de desempenho de agendamento:
Classifique o tráfego presente na rede em diferentes classes, com marcação confiável ou específica.
Tráfego policial em excesso.