Olá pessoal,
Conforme nosso último post, no qual foi mencionado sobre a marcação de pacotes dentro do cabeçalho IP ( ToS ), portanto hoje iremos trazer mais informações sobre QoS, mencionando sobre o método de filas que o equipamento utiliza para encaminhar seus pacotes.
Quando foi explicado sobre a marcação de pacotes e propriamente mencionado sobre as categorias de filas, ou seja, todo esse trabalho exerce uma funcionalidade para que no momento de recebimento desse pacote os equipamentos ( roteadores/swiches ) possam interpretar essa marcação ( preferência ) do pacote, sobre determinadas características em um plano de hardware queueing e software queueing.
Para um melhor entendimento segue um fluxograma de como funciona o tratamento de pacotes:
Para o propósito de hardware queueing:
-
Esse é o tipo de enfileiramento conhecido como TxQ (fila de transmissão), no qual ele usa o hardware e SEMPRE usa o mecanismo FIFO (First In First Out) e apenas quando essa fila fica cheia o software queueing será acionado. Nesta categoria estamos referenciando-se ao Tx Ring/ TX queue, fazendo dessa forma o enfileiramento quando a fila está cheia, e por sua vez o IOS habilita “queue” nesta interface.
Aqui podemos fazer uma analogia de como os pacotes chegam para uma determinada interface física de um equipamento. 😉
Quando tratamos do assunto de software queueing, teremos 6 categorias para classificar essas informações:
-
PQ – Priority Queue = Possui 4 filas FIFO, que são unidirecionais, e um pacote da fila em espera só entra em ação quando sua superior é esvaziada. Vantagens: Fornece prioridade restrita para um tráfego na classe. Desvantagem: pode sofrer de um fênomeno chamado: starvation (morte por insuficiência de alimentação).
-
CQ – Custom Queue = Possui 16 filas FIFO, que são unidirecionais, e um pacote da fila em espera só entra em ação quando sua superior é esvaziada.Vantagens: garante banda para aplicações menos críticas. Desvantagem: precisa criar uma política dentro da interface.
-
WFQ – Weighted Fair Queueing = Enfileiramento justo baseado em peso, ele atua de forma justa eliminando o fenômeno stavartion, ou seja, o primeiro da coluna de cada fila é expedido para o DEQUEUE e todos os pacotes da segunda coluna são expedidos e assim sucessivamente. Desvantagem: ideal para links até 2MBps, caso contrário muitos ciclos de CPU serão executados e não possui uma fila única de prioridade.
-
CBWFQ – Class-Based Weighted Fair Queue = Possui 64 filas FIFO, que são unidirecionais, e um pacote da fila em espera só entra em ação quando sua superior é esvaziada. Vantagem: recordista do número de classes, suporta até 64 para realizar controle de banda. Desvantagem: sem fila exclusiva de prioridade.
-
LLQ – Low Latency Queue = Conhecido por PQCBWFQ, devido a possuir uma fila PQ e um grupo em CBWFQ. Infelizmente isso é uma “sopa de letrinhas” 😀 Vantagens: ótimo para arquitetura AVVID da Cisco, excelente para aplicações real-time, garante banda e propicia a menor latência, não apenas para portas UDP/RTP mas qualquer outro tipo de porta. O seu único problema diz respeito a sua classificação não ser feita de modo automatizado, havendo a necessidade de configuração. Esse é o nosso método mais utilizado, porém se as classes não estiverem bem ajustadas conforme a realidade, podemos ter alguns problemas, que daí para frente teremos que realizar alguns troubleshootings!
-
IP RTP Priority = Conhecido por PQWFQ, por ser composto por uma fila PQ e o grupo de WFQ.Vantagens: ótimo para arquitetura AVVID da Cisco, garante banda e propicia a menor latência, não apenas para portas.
Abaixo segue uma tabela comparativa com as filas mais usuais que encontramos no nosso dia-a-dia:
Por padrão o FIFO é habilitado nas interfaces com a bandwidth acima de 2mbps e também por padrão o WFQ é habilitado nas interfaces com a bandwidth abaixo de 2Mbps
Baseado nessas informações temos mais um conceito que é obtido em nossas vídeo aulas, para qual tratamos de métodos para evitar o congestionamento. Na Cisco nós trabalhamos com três métodos, no qual chamamos de Tail DROP, WRED ( Weighted Randon Early Drop ) e CBWRED. Não vamos entrar muito em detalhes para não ficar extenso nosso post, mas podemos explicar rapidamente cada método:
-
Tail DROP = Descarte de pacotes baseado em hardware e software quando a fila está cheia, ou seja, novos pacotes que chegam na interface são dropados.
-
WRED = Característica do IOS utilizada para previnir que uma fila seja preenchida pela capacidade descartar o tráfego mais agressivamente quando a fila começa a se preencher. O descarte é feito baseado na prioridade de marcação, onde os pacotes de menor prioriodade terão maior chances de serem descartados. Dentro dessa características podemos chamar de ( minimum threshold, maximum threshold e mark probability denominator).
-
CBWRED = Mesma funcionalidade do WRED, porém podemos utilizar baseado por classe.
Como demos uma prévia sobre o conceito segue os comandos que podemos utilizar para fazer esse tipo de configuração.
Router(config-if)# class-map c1
Router(config-cmap)# match access-group 101
Router(config-if)# policy-map p1
Router(config-pmap)# class c1
Router(config-pmap-c)# bandwidth 48
Router(config-pmap-c)# random-detect dscp-based
Router(config-pmap-c)# random-detect dscp 8 24 40
Router(config-if)# service-policy output p1
Espero que vocês tenham gostado e aguardo comentários. 😛
Fonte:
Cisco Page – WRED
Cisco Page – Avoidance
2 comentários
Muito bom cara, muito bem explicado.
@Igor Assis Obrigado Igor. Mais post sobre QoS serão publicados.