4 de mai de 2010

Queueing

Boa noite pessoal.

Demorei mas estou de volta com mais um tutorial. Dessa vez sobre queueing. Não é algo completo, mas dá pra ter uma boa noção de cada tipo de queueing.
========================================


O que é Queueing? Basicamente consiste em separar o tráfego que entra ou sai de uma interface baseado em alguns métodos.




FIFO (First-in-First-out) é o padrão pra conexões E1 ou maiores (> 2048 Mbps). Nesse modo, como diz o nome, o primeiro pacote a chegar na fila, é enviado. O problema é que quando temos tráfego intercalado por exemplo, telnet (64 bytes) and FTP (1500 bytes), o tráfego de telnet pode sofrer jitter e/ou latência.




RR (Round-Robin) é o método em que basicamente são intercaladas quais mensagens em cada fila serão enviadas. Se temos quatro filas, o primeiro pacote sairá da primeira fila, o segundo da segunda fila, e assim por diante.



WRR (Weighted Round-Robin) consiste em determinar pesos às filas, em que as que têm mais peso, transmitem mais pacotes, mas ainda utilizando o método round-robin.




WFQ (Weighted-Fair-Queueing) é o padrão pra conexões E1 ou menores. Nesse método de queueing, os fluxos menores têm preferência aos maiores. Mesmo usando o algoritmo min-max fair-share, uma coisa diferente dele é que utiliza o valor de ip precedence do cabeçalho do pacote IP. É atribuido um peso à relação tamanho de pacote com o valor de ip precedence.




Existem dois tipos de fluxos (fluxo é a combinação de origem e destino, porta tcp e udp, número de protocolo, ou valor de ToS). fluxo ativo é a comunicação que está pra ser transmitida. fluxo inativo é comunicação que ainda não foi estabelecida, ou em estado idle.




A todo fluxo novo é arredondado um tamanho de pacote médio. A combinação do tamanho do pacote, o tamanho médido do fluxo, e o ip precedence são usados pra gerar um número de sequência. Os números de sequência menores são transmitidos primeiro.




Para habilitar o WFQ: switch(config-if)# fair-queue [limite de pacotes nas filas - padrão é 64] [núm. de filas dinâmicas - padrão é 256] [filas reservadas - usado com RSVP]




O comando "show queueing interface " mostra informações das filas, tamanho, drops, etc.




CBWFQ (Class-Based Weighted Fair Queueing) consiste em criar classes de tráfego, onde cada classe será associada a uma fila, que terá uma banda determinada. É possível criar 64 filas, e trabalham e FIFO, mas pode ser usado WRED. O tráfego default vai para a fila class-default.




Priority Queue tem quatro filas. As de baixa (80 pacotes máx), normal (60 pacotes máx - default), média (40 pacotes máx) e alta (20 pacotes máx) prioridades. Resumidamente, quando existem pacotes nas filas de mais alta prioridade, são processados primeiros até que esvazie para assim ser enviados pacotes de filas de prioridade menor. Portanto, cuidado ao determinar o tipo de tráfego a ser priorizado, pois se for um tráfego constante, pode eliminar a comunicação de tráfego nas filas com menor prioridade. Isso é conhecido como queue/packet starvation.




Priority Queue pode ser usado pra separar o tráfego das seguintes maneiras: tipo de protocolo, interface, tamanho de pacote, fragmentação, acl. Abaixo está um exemplo de configuração usando acl para a fila de alta prioridade: switch(config)# priority-list 1 protocol ip high list ACL_HIGH.




Para configurar a fila default: switch(config-if)# priority-list default (high|medium|normal|low).




Para configurar o tamanho máximo de pacotes em todas as filas: switch(config)# priority-list queue-limit




Depois de configurar a priority-list, é necessário aplicar na interface: switch(config-if)# priority-group .
Para verificar a configuração de uma priority-list: switch# show queueing priority



CQ (Custom Queueing), como diz o nome, é customizado de acordo com as suas necessidades.


Primeiro é necessário criar ACLs de tráfego de interesse com o tipo de tráfego que deseja que vá para cada fila. Depois, associe a ACL com uma fila: switch(config)# queue-list protocol ip list . Esse comando associa todo o tráfego da ACL com uma fila. É necessário fazer isso para cada fila.


Para definir qual fila será a default: switch(config)# queue-list default


Agora é possível definir o limite, tanto de número de pacotes, como tamanho em bytes. O exemplo a seguir coloca o máximo da fila 1 para 5000 bytes: switch(config)# queue-list 1 queue 1 byte-count 5000.


Agora somente é necessário aplicar as configurações para uma interface: switch(config-if)# custom-queue-list
Para verificar as configurações: switch# show queueing custom

Um comentário:

Adilson Florentino disse...

Muito Bom Bruno !

Configurar o método de "Queueing" ou Enfileiramento é uma das principais maneiras de se efetuar o Controle de Congestionamento e prover QoS a Rede.

Outros métodos como a Compressão de dados e cabeçalho, controle de descarte (WRED) e algoritmos para prover eficiência do link como Traffic Shapping, Traffic Policy, Fragmentação e Intercalação também seriam muito bem-vindos !!!

Estes tópicos são cobrados na Prova de ONT (642-845)e na de QoS (642-642). Acho que posts sobre estes temas enriquecem muito o Netfinders !

Abs,

LinkWithin

Related Posts with Thumbnails