Você está na página 1de 9

2.

Mecanismos de QoS
Nesta seção, serão examinados vários mecanismos que são usados para fornecer
garantias de QoS às aplicações de rede.

2.1. Mecanismos de enfileiramento


Pacotes pertencentes a vários fluxos de rede são multiplexados em conjunto e
enfileirados para transmissão no buffers de saída associados a um enlace. Vamos agora
examinar alguns mecanismos de enfileiramento e escalonamento.

2.1.1. FIFO (First-in, First-out)


Uma fila FIFO é um mecanismo de armazenamento e repasse (store and forward)
que não implementa nenhum tipo de classificação.
A ordem de chegada dos pacotes é que determina a alocação da banda, e o que
chega primeiro é logo atendido. É o tratamento default da fila nos roteadores, já que não
requer nenhuma configuração. O problema ocorre em tráfego de rajada, que pode causar
longos atrasos em aplicações sensíveis ao tempo. Por isso, filas FIFO não servem para
aplicações que requerem QoS.

2.1.2. FQ (Fair Queuing)


No algoritmo de Enfileiramento Fair Queueing (enfileiramento justo), as
mensagens são ordenadas em sessões, e, para cada sesssão, é alocado um canal. A ordem
na fila é realizada através do último bit que atravessa o canal. Essa operação provê uma
alocação mais justa da banda entre os fluxos de dados.

1
2.1.3. WFQ (Weighted Fair Queuing)
Este algoritmo permite diferenciar um fluxo do outro, através de um peso
atribuído a cada fluxo. Ao fluxo de maior peso será atribuído um percentual maior da
banda.
O WFQ permite tratar um fluxo específico ou um conjunto de fluxos agregados
em uma classe de serviço (quando às vezes é denominado de CBWFQ - Class Based
Weighted Fair Queueing). A cada fluxo (ou a classe de serviço) é atribuído um peso, que
será utilizado para determinar a fração de largura de banda alocada ao fluxo.

Numa aplicação em que desejamos diferenciar apenas o tráfego de voz do tráfego


de dados, podemos definir apenas duas classes de fluxos: fluxo de voz e fluxo de dados.
Ao fluxo de voz seria atribuído um peso maior (5 para voz e 1 para dados), de modo a
oferecer um tratamento preferencial no que diz respeito à transmissão dos pacotes,
enquanto os fluxos de dados compartilhariam a banda restante de forma justa. Deve-se
observar que, para que se garanta a banda mínima para o tráfego de voz, o peso atribuído

2
a este tipo de tráfego deve se ajustar dinamicamente com o perfil do tráfego da rede. Por
exemplo, se o número de fluxo de dados cresce, em um dado instante, é preciso que se
aumente o peso do tráfego de voz (ou diminua o peso do tráfego de dados) para que se
mantenha a distribuição de banda anterior.

2.1.4. PQ (Priority Queuing)


O tráfego de entrada é classificado em quatro níveis de prioridade: alta, média,
normal e baixa. Existem filas distintas para cada diferentes classes de prioridades,
conforme ilustra a figura a seguir.

Há várias opções de classificação de tráfego numa fila PQ. A classificação pode


ser por protocolo (IP, IPX, DecNet, SNA, etc), por interface de entrada ou por lista de
acesso.
Os pacotes, uma vez classificados, são encaminhados para a fila com nível de
prioridade correspondente. Durante a transmissão, o algoritmo de despacho dá tratamento
preferencial absoluto à fila de maior prioridade, em detrimento das filas de menor
prioridade. Ou seja, no momento da transmissão o algoritmo sempre busca um pacote na
fila de alta prioridade; caso não haja pacote nesta fila, um pacote da fila de média
prioridade é buscado, e assim sucessivamente até se chegar à fila de baixa prioridade.
Um volume de tráfego elevado de maior prioridade pode reter os tráfegos de
menor prioridade por um tempo inaceitavelmente elevado. No pior caso, devido ao

3
grande volume de tráfego de alta prioridade, por exemplo, o tráfego de baixa prioridade
pode nunca ser transmitido.Para se evitar está situação, pode-se utilizar ferramentas de
formatação de tráfego, de modo a restringir a taxa de chegada de tráfego de alta
prioridade.
Está técnica apresenta melhor resultado quando o tráfego de mais alta prioridade
consome um menor percentual de banda, ou seja, possui menor volume.

2.1.5. CQ (Custom Queuing)


O algoritmo da fila CQ (Custom Queueing) permite especificar uma percentagem
da banda para uma determinada aplicação (alocação absoluta da banda). A banda
reservada é compartilhada proporcionalmente, no percentual pré-definido, entre as
aplicações e os usuários. O restante da banda é compartilhado entre os outros tipos de
tráfego.

O algoritmo CQ controla o tráfego alocando uma determinada parte da fila para


cada fluxo classificado. As filas são ordenadas ciclicamente num esquema round-robin,
onde, para cada fila, é enviada a quantidade de pacotes referente à parte da banda alocada
antes de passar para a fila seguinte. Associado a cada fila, há um contador configurável
que estabelece quantos bytes devem ser enviados antes da passar para a próxima fila.

4
2.2. Condicionamento do Tráfego
O condicionamento de tráfego está relacionado com o policiamento realizado para
garantir que o tráfego entre usuário e provedor esteja dentro de perfis definidos em um
contrato de serviço. O condicionamento envolve a classificação dos pacotes, medição do
tráfego e uma subseqüente ação, que pode ser a suavização ou descarte, para os pacotes
que não estão dentro do perfil de tráfego contratado. A classificação geralmente é
realizada através da inspeção dos campos de cabeçalho do pacote ou quadro. Estando o
tráfego classificado, ele deve ser medido de acordo com níveis pré-definidos em termos
de largura de banda e rajada permitida.
O condicionamento do tráfego fornece um mecanismo para controlar o montante e
o volume de tráfego que é enviado para a rede e a taxa em que este está sendo enviado.
Ele pode também ser necessário para identificar fluxos de tráfego no ponto em que o
tráfego entra na rede, com uma granularidade que permita ao método utilizado separar o
tráfego em fluxos individuais e moldá-los diferentemente. Alguns métodos
predominantes para condicionamento de tráfego nas redes de pacotes são descritos
abaixo:

2.2.1. Método do Balde Furado (Leaky Bucket) - Este algoritmo tem como base um
balde com um pequeno furo embaixo. A velocidade com que a água entra no balde não
tem influência no fluxo de saída, que fica em uma taxa constante, e quando o balde
estiver cheio, a água que entrar nele irá escorrer pelos lados e será perdida. O mesmo
pensamento pode ser utilizado com os pacotes. Cada host é conectado à rede por uma
interface que contém um balde furado (fila interna finita). Se um pacote chegar e a fila
estiver cheia, ele será descartado. O host pode inserir um pacote a cada pulso de relógio
na rede, transformando um fluxo de pacotes irregular dos processos de usuário dentro do
host em um fluxo de pacotes regular para a rede, suavizando rajadas e reduzindo muito as
chances de ocorrência de um congestionamento. O tamanho do balde e a taxa de
transmissão geralmente são configuráveis pelo usuário e medidos em bytes. O algoritmo
do balde furado força um padrão de saída constante, independentemente da irregularidade
do tráfego.

5
2.2.2. Método do Balde de Fichas (Token Bucket) - O algoritmo do balde de fichas,
onde o balde retém fichas, possui três componentes: o comprimento de rajadas que
especifica máxima rajada de bits; taxa média que especifica quantos bits podem ser
enviados por unidade de tempo em média; e por fim, o intervalo de tempo que define o
comprimento de rajadas e a taxa média. O algoritmo gera com ajuda de um clock, uma
ficha a cada t segundos. Para que um pacote seja transmitido, ele deve capturar e destruir
uma ficha. O algoritmo do balde de fichas joga fichas fora quando o balde enche, mas
nunca descarta pacotes. Caso um pacote chegue ao roteador e não haja mais fichas no
balde, o algoritmo pode determinar o descarte do pacote, ou então pode atrasá-lo até que
o balde seja carregado com o número de fichas suficientes.

6
2.2.3 Policiamento

O CAR (Committed Access Rate) é o método para policiamento e controle de


tráfego IP que realiza, basicamente, duas funções para qualidade de serviço:
Gerenciamento de banda com limitação de taxa de acesso (policing) - permite controlar a
taxa máxima de transmissão ou recepção de dados de uma determinada interface. O
tráfego conformante é transmitido ou recebido, enquanto os pacotes que excedem os
limites pré-definidos, ou são descartados, ou são reclassificados com outra prioridade
para retransmissão; Classificação de pacotes através de precedência IP ou de grupos de
QoS permite particionar a rede em múltiplas classes de serviços ou níveis de priorização.
Para isso, utilizando também o mecanismo token bucket, o CAR examina o tráfego
recebido na interface ou parte do tráfego selecionado pelos critérios das listas de acesso,
compara a taxa de tráfego com a do token bucket e, de acordo com o resultado, toma uma
ou várias ações. Ou seja, pode transmitir o pacote, descartá-lo ou reclassificá-lo com
outro nível de prioridade, etc.

Os tokens são inseridos no balde na mesma taxa CIR. A profundidade do balde é o


tamanho da rajada (burst size). Se houver tokens suficientes quando o tráfego chega ao

7
balde, então o tráfego é dito estar em conformidade e a quantidade correspondente de
tokens é removida. Se não houver tokens suficientes, então o tráfego é dito excessivo.

Os critérios de seleção de tráfego podem ser baseados em todo tráfego IP, em


precedência IP, em listas de acesso (padrão ou estendida), em endereço MAC ou, ainda,
em grupos de QoS. O endereço MAC e a precedência IP podem ser definidos através de
listas de acesso rate-limit.

Com o CAR, pode-se limitar o tráfego por aplicação (Web, FTP, etc.), por
interface, por endereço MAC (p. ex., controle de tráfego em PTT - Pontos de Troca de
Tráfego), ou pode-se classificar ou reclassificar todo o tráfego de entrada num backbone
a partir dos roteadores de borda, para tratamento diferenciado em termos de qualidade de
serviços.

2.3. Método RED (Random Early Detection) - O algoritmo para o gerenciamento RED
permite que o controle de congestionamento do protocolo TCP adapte as fontes de
tráfego evitando que haja um grande congestionamento. Uma fonte de tráfego quando
detecta que um de seus pacotes foi perdido, automaticamente reduz a sua taxa de
transmissão para evitar mais perdas no futuro. Da mesma forma, quando nenhum pacote
é perdido, ela aumenta sua taxa de transmissão para usar de forma mais eficiente os
recursos da rede. O mecanismo RED monitora as filas dos roteadores e em caso de
congestionamento eminente, ele gera um descarte de pacote. Esse descarte deve ser
interpretado pela fonte como um aviso para diminuir a sua taxa de transmissão. O
mecanismo RED descarta pacotes mais cedo do que os roteadores convencionais na
esperança que as fontes reduzam suas taxas de transmissão para minimizar um descarte
maior caso a fila fique completamente cheia. Neste caso, vários pacotes seriam perdidos
em seqüência. Existem outras evoluções do RED, como o RED adaptativo, WRED.
O mecanismo RED opera baseado no tamanho médio da fila (avglen) que é
calculado utilizando-se uma média ponderada por uma variável qweight. O tamanho
instantâneo da fila é representado pela variável curq. A variável qweight determina a
tolerância do roteador RED às rajadas de longa duração. Ou seja, quanto maior for o

8
qweight, maior será o peso do tamanho instantâneo da fila no cálculo do novo valor do
avglen.

O tamanho médio da fila irá determinar com que probabilidade um pacote será
descartado. A probabilidade de descarte aumenta de 0 até uma probabilidade máxima de
descarte (Pmax_), assim como o tamanho médio da fila aumenta de um limite mínimo
(min_) até um limite máximo (max_). Enquanto o tamanho médio da fila (avglen)
permanecer abaixo de min_, todos os pacotes que chegam ao roteador são aceitos na fila.
Quando avglen está entre min_ e max_, há uma probabilidade p do novo pacote ser
descartado, onde p é uma função de avglen e do tempo decorrido desde o descarte do
último pacote. Se o tamanho médio da fila ultrapassar max_, todos os pacotes serão
descartados até que a média de ocupação seja reduzida. Este funcionamento é descrito na
abaixo.

WRED, ou Weighted RED, é uma implementação da Cisco que combina as


funcionalidades do RED com a classificação de pacotes por precedência IP. Baseado
nessa classificação, o WRED descarta pacotes seletivamente, descartando inicialmente os
pacotes de menor prioridade, com diferentes pesos para cada classe.