SIGN IN YOUR ACCOUNT TO HAVE ACCESS TO DIFFERENT FEATURES

FORGOT YOUR PASSWORD?

FORGOT YOUR DETAILS?

AAH, WAIT, I REMEMBER NOW!
GET SOCIAL
  • BLOG
  • SECURITY ALERTS
  • CONTATO
  • PRIVACIDADE
  • SOBRE
  • LOGIN

Brainwork

  • Certificação
  • Cisco
  • Informação
  • Linux
  • Microsoft
  • Network
  • Security
  • UC
  • Virtualização
  • Wireless
  • Home
  • Cisco
  • QoS–Classificação, Marcação e Congestionamento (Parte 2)
13/05/2025

QoS–Classificação, Marcação e Congestionamento (Parte 2)

QoS–Classificação, Marcação e Congestionamento (Parte 2)

by André Ortega / terça-feira, 13 dezembro 2016 / Published in Cisco, Configuração, Network

(Mão na massa)

Vimos no post anterior as opções de marcações. Agora vamos ver como fazer e usar as marcações para dar tratamento diferenciado para o tráfego.

Topologia QoS

Classification

O primeiro passo é fazer a classificação (identificação) do tráfego, e para isso usamos o class-map.

No Cisco IOS usamos o MQC (composto por class-map, policy-map e service-policy) para configurar o QoS.

Como citado anteriormente, podemos especificar uma ACL ou olhar diretamente no pacote para fazer a classificação.

Exemplo de classificação usando class-map, onde identificaremos os seguintes tráfegos:

  • Tráfego que der match na ACL ipv6SSH (TCP porta 22)
  • Tráfego Telnet com marcação CS6
  • Tráfego ICMP e ICMPv6
QoS#conf t
QoS(config)#ipv6 access-list ipv6SSH
QoS(config-ipv6-acl)# permit tcp any any eq 22
QoS(config-ipv6-acl)# permit tcp any eq 22 any
QoS(config-ipv6-acl)#exit
QoS(config)#
QoS(config)#class-map match-all CLASSSSH
QoS(config-cmap)# match access-group name ipv6SSH
QoS(config-cmap)#class-map match-all CLASSTELNET
QoS(config-cmap)# match protocol telnet
QoS(config-cmap)# match dscp cs6
QoS(config-cmap)#class-map match-any CLASSICMP
QoS(config-cmap)# match protocol icmp
QoS(config-cmap)# match protocol ipv6-icmp
QoS(config-cmap)#end
QoS#

Note que temos dois tipos de class-map: match-all (padrão) e match-any. Quando temos a opção match-all, apenas se o pacote atender todas as especificações ele será selecionado.

No caso do match-any, como usado no class-map CLASSICMP, se o tráfego atender pelo menos um dos requisições ele já e classificado. Ou seja, se for icmp ou icmpv6 ele será classificado pelo CLASSICMP, enquanto que para ser classificado pelo CLASSTELNET o pacote precisar ser telnet e ter a marcação CS6.

Também é importante ressaltar que apesar de não ter sido configurado, temos a class-default, onde os demais pacotes serão enquadrados.

Marking

Agora que fizemos a classificação do nosso tráfego, precisamos tomar uma ação, e fazemos isso usando o comando policy-map.

As ações podem ser marcar o pacote, definir banda, escolher o tipo de fila, shape/policing,…. Mas por enquanto vamos fazer apenas a marcação.

Configurando o Policy-Map para:

  • Marcar o tráfego SSH com CS6
  • Marcar o ICMP com EF
  • Todo o resto com DSCP 0
QoS#conf t
QoS(config)#policy-map MARCA
QoS(config-pmap)# class CLASSSSH
QoS(config-pmap-c)#  set dscp cs6
QoS(config-pmap-c)# class CLASSICMP
QoS(config-pmap-c)#  set dscp ef
QoS(config-pmap-c)# class CLASSTELNET
QoS(config-pmap-c)# class class-default
QoS(config-pmap-c)#  set dscp default
QoS(config-pmap-c)#end
QoS#

Observe que inserimos a class CLASSTELNET mas não tomamos nenhuma ação (marcação). Neste caso o tráfego vai passar sem ser alterado.

Vamos associar nosso policy-map à interface (no sentido inbound) e verificar a configuração.

QoS#conf t
QoS(config)#int et0/0
QoS(config-if)#service-policy input MARCA
QoS(config-if)#end
QoS#
QoS#show policy-map interface et0/0
 Ethernet0/0

  Service-policy input: MARCA

    Class-map: CLASSSSH (match-all)
      11941 packets, 922918 bytes
      30 second offered rate 0000 bps, drop rate 0000 bps
      Match: access-group name ipv6SSH
      QoS Set
        dscp cs6
          Packets marked 11941

    Class-map: CLASSICMP (match-any)
      4039 packets, 4059374 bytes
      30 second offered rate 0000 bps, drop rate 0000 bps
      Match: protocol icmp
        0 packets, 0 bytes
        30 second rate 0 bps
      Match: protocol ipv6-icmp
        4039 packets, 4059374 bytes
        30 second rate 0 bps
      QoS Set
        dscp ef
          Packets marked 4039

    Class-map: CLASSTELNET (match-all)
      2665 packets, 197384 bytes
      30 second offered rate 0000 bps
      Match: protocol telnet
      Match:  dscp cs6 (48)

    Class-map: class-default (match-any)
      4 packets, 304 bytes
      30 second offered rate 0000 bps, drop rate 0000 bps
      Match: any
      QoS Set
        dscp default
          Packets marked 4
QoS#

Idealmente a marcação é feita o mais perto possível da origem do tráfego (normalmente por um switch). Após a marcação os demais elementos da rede ficam encarregados de garantir o mesmo tratamento para o tráfego com a mesma marcação.

Também pode acontecer do dispositivo final (um telefone IP, por exemplo) fazer a marcação nos seus pacotes, mas é importante tomar medidas para evitar que alguém passe a enviar tráfego marcado e assim ser tratado com prioritário (um usuário poderia fazer com que sua máquina envie tráfego com marcação EF, e os roteadores passariam a priorizar este tráfego).

Assim a melhor opção é configurar a marcação nos switches, onde você define que tráfego receberá qual marcação (ou confiar apenas na marcação que vier de dispositivos confiáveis).

Congestion Management

O gerenciamento de congestionamento permite determinarmos a ordem em que pacotes são enviados por uma interface com base nas prioridades atribuídas a esses pacotes, e envolve a criação de filas, atribuição de pacotes a essas filas e agendamento para transmissão.

Resumindo… classificamos, marcamos e agora vamos dar o tratamento diferenciado com base na marcação.

Considera-se congestionamento quando as filas em hardware estão cheias

Por padrão, quando configuramos uma classe ela trabalha no modo FIFO – First In First Out. Ou seja, primeiro pacote que entra é o primeiro que sai, sendo que cada classe está sujeita ao limite de velocidade especificado para o momento de congestionamento. Podemos no entanto mudar o tipo de fila para WFQ – Weighted Fair Queueing (ou CBWFQ- Class Based Weighted Fair Queueing já que estamos usando o modelo de configuração usando classes).

O CBWFQ associa um peso (a conta leva em consideração o IPP) para cada flow, e os flows com pesos menores são encaminhados primeiro.

Vamos criar outro policy-map, onde:

  • ICMP deverá ter 128 Kbps, e ser colocado na fila prioritária (LLC)
  • SSH deverá ter 10% da banda
  • Telnet deverá ter 20% da banda
  • Configurar a class-default para usar WFQ
QoS#conf t
QoS(config)#policy-map QUEUES
QoS(config-pmap)# class CLASSICMP
QoS(config-pmap-c)#  priority 128
QoS(config-pmap-c)# class CLASSSSH
QoS(config-pmap-c)#  bandwidth percent 10
QoS(config-pmap-c)# class CLASSTELNET
QoS(config-pmap-c)#  bandwidth percent 20
QoS(config-pmap-c)# class class-default
QoS(config-pmap-c)#  fair-queue
QoS(config-pmap-c)#end
QoS#

Importante notar que:

  • quando colocamos bandwidth percent estamos reservando uma porcentagem com base no comando bandwitdth que foi aplicado na interface, e não na velocidade da porta (neste exemplo a interface et0/1 do roteador QoS foi configurada com o comando bandwitdh 256 Bkps).
  • Se primeiro configuramos as classes com o comando bandwidth e depois mudamos o bandwidth na interface, as políticas não são atualizadas.
  • Se não houver nenhuma configuração de bandwidth na interface, é considerado o valor real/físico.
  • Podemos especificar o valor em Kbps (ao invés de percent) quando usamos a opção bandwidth, assim como fizemos com o comando priority.
  • Além das opções priority e bandwidth ainda temos o comando bandwidth remain percent, que reserva a porcentagem especificada desconsiderando os valores já alocados para outras classes.
  • Todas as classes configuradas com bandwidth precisam ser configuradas no mesmo padrão. Ou usamos todas com bandwidth Kbps, ou com bandwidth percent ou com bandwidth remaining percent. Mas podemos usar um classe com priority Kbps e outra com priority percent.
  • Podemos ter mais de uma class configurada como LLC, mas os pacotes serão colocados em uma única fila prioritária.
  • Quando a class-default não tem banda configurada ela recebe a banda não usada.
  • Por padrão a class-default tem 1% da banda.
  • A soma das velocidades configuradas não pode exceder 100%.

Neste modelo o tráfego tem sua banda garantida quando ocorre a concorrência (congestionamento), e até por isso o nome Congestion Management. No entanto o ICMP (neste exemplo) pode usar a banda total caso as outras aplicações não estejam consumindo o link. O mesmo serve para o Telnet, SSH e os demais tráfegos que estão usando a class default.

Também é bom ressaltar que o comando priority habilita o Low Latency Queuing, e os pacotes que estão nesta fila tem prioridade (são tirados da fila em software e colocados na fila em hardware antes dos pacotes que estão nas demais classes).

Congestion Avoidance

Tudo muito bem, tudo muito bom, mas…

Mesmo marcando, classificando e definindo banda por classe (fila) em dado momento o tráfego pode ser maior do que o permitido (ou maior do que a interface suporta). E aqui entra o Congestion Avoidance.

Temos duas técnicas para “evitar” congestionamento.

  • Tail Drop: Trata todo o tráfego igualmente e não diferencia entre classes de serviço. Quando a fila de saída está cheia os pacotes são descartados até que o congestionamento seja eliminado e a fila não esteja mais cheia.
  • WRED – Weighted Random Early Detection: Opção bem mais evoluída, que descarta pacotes antes da fila encher. Pacotes com menor prioridade começam a ser descartados antes, enquanto pacotes prioritários só são dropados posteriormente.

Além de considerar a prioridade dos pacotes, foi comprovado que dropar alguns pacotes antes da fila encher traz um resultado melhor do que dropar mais pacotes quando a fila já está cheia.

Este comportamento é explicado pela forma que o TCP trabalha. Quando ocorre perda de pacotes o TCP diminui a velocidade dos dados enviados (TCP congestion window, slow start), e quando ocorre uma grande perda de pacotes, que é o caso quando usamos o Tail Drop, o TCP diminui ainda mais a velocidade.

Com o WRED podemos definir limites para cada classe, e pacotes menos prioritários começam a ser dropados antes.

Lembram da marcação AF que falamos no post anterior? Então, por padrão o IOS já tem um profile para drop de pacotes com base na marcação AF.

WRED

Usando o profile pré definido, os pacotes AFx1 começam a ser descartados quando tivermos 33 pacotes na fila, enquanto que o roteador só descartará pacotes EF quando tiver 37 pacotes na fila.

Também é possível mudar o padrão e definir níveis diferentes para o drop por marcação. E bom lembrar que após atingir o threshould máximo todos os pacotes são dropados, agindo como o Tail Drop.

Complementando nossa configuração, vamos habilitar o WRED class default.

QoS#conf t
QoS(config)#policy-map QUEUES
QoS(config-pmap-c)#random-detect dscp-based
QoS(config-pmap-c)#end
QoS#

E usando o comando show policy-map interface et0/1 podemos ver o efeito da configuração.

QoS#show policy-map interface et0/1
 Ethernet0/1

  Service-policy output: QUEUES

    queue stats for all priority classes:
      Queueing
      queue limit 64 packets
      (queue depth/total drops/no-buffer drops) 0/0/0
      (pkts output/bytes output) 4087/4064650

    Class-map: CLASSICMP (match-any)
      4087 packets, 4063502 bytes
      30 second offered rate 0000 bps, drop rate 0000 bps
      Match: protocol icmp
        0 packets, 0 bytes
        30 second rate 0 bps
      Match: protocol ipv6-icmp
        4087 packets, 4063502 bytes
        30 second rate 0 bps
      Priority: 128 kbps, burst bytes 3200, b/w exceed drops: 0

    Class-map: CLASSSSH (match-all)
      11941 packets, 922918 bytes
      30 second offered rate 0000 bps, drop rate 0000 bps
      Match: access-group name ipv6SSH
      Queueing
      queue limit 64 packets
      (queue depth/total drops/no-buffer drops) 0/0/0
      (pkts output/bytes output) 11941/922918
      bandwidth 10% (25 kbps)

    Class-map: CLASSTELNET (match-all)
      2665 packets, 197384 bytes
      30 second offered rate 0000 bps, drop rate 0000 bps
      Match: protocol telnet
      Match:  dscp cs6 (48)
      Queueing
      queue limit 64 packets
      (queue depth/total drops/no-buffer drops) 0/0/0
      (pkts output/bytes output) 2665/197384
      bandwidth 20% (51 kbps)

    Class-map: class-default (match-any)
      716 packets, 81297 bytes
      30 second offered rate 0000 bps, drop rate 0000 bps
      Match: any
      Queueing
      queue limit 64 packets
      (queue depth/total drops/no-buffer drops/flowdrops) 0/0/0/0
      (pkts output/bytes output) 716/81297
      Fair-queue: per-flow queue limit 16 packets
        Exp-weight-constant: 9 (1/512)
        Mean queue depth: 0 packets
        dscp       Transmitted      Random drop      Tail/Flow drop Minimum Maximum Mark
                    pkts/bytes       pkts/bytes      pkts/bytes   thresh  thresh  prob

        default      716/81297           0/0              0/0                 20            40  1/10
QoS#

Não tivemos tráfego suficiente para gerar drops, mas veja que na class-default estamos usando fair-queue, de acordo com o que foi configurado.

Também podemos usar o comando sem a opção dscp-based, mas neste caso o descarte é feito com base no IPP.

Referências:

  • CCIE Routing and Switching v5.0, Volume 2
  • Congestion Management Configuration Guide
  • Congestion Avoidance Configuration Guide

Até a próxima.

Relacionado

Tagged under: CBWFQ, class-map, MQC, policy-map, QoS, Tail Drop, WRED

About André Ortega

Formando em Processamento de Dados e Ciência da Computação. Especialista Cisco (CCNP Enterprise e CCNP Security). Dezenove anos de experiência com redes e segurança.

What you can read next

Novo roteador 819
Gerando CSR e importando certificado na Cisco WLC
Restaurando o access-point

POSTS RECENTES

  • Cisco Talos: Tendências em Cibersegurança em 2024
    Cisco Talos: Tendências em Cibersegurança em 2024
    12/05/2025
  • Campanha de Spam no Brasil Abusa de Ferramentas RMM: Como Proteger Sua Empresa
    Campanha de Spam no Brasil Abusa de Ferramentas RMM: Como Proteger Sua Empresa
    09/05/2025
  • Vulnerabilidade CVE-2025-20188 no Cisco IOS XE Wireless LAN Controller: Como se Proteger
    Vulnerabilidade CVE-2025-20188 no Cisco IOS XE Wireless LAN Controller: Como se Proteger
    09/05/2025
  • LockBit Hackeado: Novo Ataque ao Grupo de Ransomware
    LockBit Hackeado: Novo Ataque ao Grupo de Ransomware
    07/05/2025
  • Protegendo a Tecnologia Operacional: Mitigações Primárias Contra Ameaças Cibernéticas
    Protegendo a Tecnologia Operacional: Mitigações Primárias Contra Ameaças Cibernéticas
    07/05/2025

Tags

#Broadcom 2324 #Multicloud 2015 2017 2022 2023 2024 2350 200-301 25 anos 2560C 2960C 2960X 2975 350-050 3560-X 2009 2010 200-125 100-101 #VMwareTransformation 1 ano 1.1.1.100 10 anos 10 Gbps 100 empresas 200-120 100 Gigabit 1905 1921 1925 1941 2.0 200-101 3750-X 1900 2800 2900 2013 2011 1800 2960 3750 2960S

Arquivo

Login

  • Acessar
  • Feed de posts
  • Feed de comentários
  • WordPress.org

Acesse Também

  • Blog LabCisco
  • Café com Redes
  • Cisco IOS hints and tricks
  • Cisco Redes
  • Cisco Support Community
  • Coruja de TI
  • Homelaber Brasil
  • Internetwork Expert´s
  • Netfinders Brasil
  • Rota Default
  • TechRebels
  • The Cisco Learning Network

X

Blog: Verificando MD5 (hash) de um arquivo no Windows e Linux brainwork.com.br/2023/05/11/v… #Checksum #CiscoChampion #Hash

Hahahahah Muito bom twitter.com/TracketPacer/s…

Blog: Trocar ícone (favicon) da página guest no Cisco ISE brainwork.com.br/2023/04/24/t… #Cisco_Champion #Customização #Favicon

Blog: Cisco Champion 2023 brainwork.com.br/2023/04/10/c… #CiscoChampion

Blog: RFC 2324 (HTCPCP), conhece? brainwork.com.br/2023/04/01/r… #2324 #CiscoChampion #HTCPCP

Seguir @brainworkblog
  1. ./fernando em Aprenda Python e ganhe pontos para renovar as certificações CCNA, CCNP e CCIE
  2. André Ortega em Reset Cisco FTD (zerar FTD sem reinstalar)
  3. ALEX LIRA CAMACHO em Reset Cisco FTD (zerar FTD sem reinstalar)
  4. André Ortega em Atualizando Cisco 9300 (Install Mode)
  5. Dominique em Atualizando Cisco 9300 (Install Mode)

Entre em contato:

  • Web: www.brainwork.com.br
  • Facebook: fb.com/brainworkblog
  • Twitter: twitter.com/brainworkblog
  • Youtube: youtube.com/brainworkblog
  • Instagram: instagram.com/brainwork.blog
  • GET SOCIAL
Brainwork

© 2008 - 2022 Brainwork. Todos os direitos reservados.
Customização da página por Brainwork.

TOP
Gerenciar o consentimento
Para fornecer as melhores experiências, usamos tecnologias como cookies para armazenar e/ou acessar informações do dispositivo. O consentimento para essas tecnologias nos permitirá processar dados como comportamento de navegação ou IDs exclusivos neste site. Não consentir ou retirar o consentimento pode afetar negativamente certos recursos e funções.
Funcional Sempre ativo
O armazenamento ou acesso técnico é estritamente necessário para a finalidade legítima de permitir a utilização de um serviço específico explicitamente solicitado pelo assinante ou utilizador, ou com a finalidade exclusiva de efetuar a transmissão de uma comunicação através de uma rede de comunicações eletrónicas.
Preferências
O armazenamento ou acesso técnico é necessário para o propósito legítimo de armazenar preferências que não são solicitadas pelo assinante ou usuário.
Estatísticas
O armazenamento ou acesso técnico que é usado exclusivamente para fins estatísticos. O armazenamento técnico ou acesso que é usado exclusivamente para fins estatísticos anônimos. Sem uma intimação, conformidade voluntária por parte de seu provedor de serviços de Internet ou registros adicionais de terceiros, as informações armazenadas ou recuperadas apenas para esse fim geralmente não podem ser usadas para identificá-lo.
Marketing
O armazenamento ou acesso técnico é necessário para criar perfis de usuário para enviar publicidade ou para rastrear o usuário em um site ou em vários sites para fins de marketing semelhantes.
Gerenciar opções Gerenciar serviços Manage {vendor_count} vendors Leia mais sobre esses propósitos
Ver preferências
{title} {title} {title}