CAPÍTULO 5 E STUDO DE UM C ASO - F ORNECEDOR DE S ERVIÇO I NTERNET
5.2 A PLICAÇÃO DO M ODELO - A RQUITECTURA
5.2.4 Nível Equipamento
5.2.4.2 Gestão do Descarte de Pacotes
Quando se atinge uma situação de congestão é necessário descartar pacotes. O mecanismo mais simples consiste em descartar pacotes quando a fila de espera transborda. Este mecanismo pode ser melhorado definindo limiares de descarte diferentes consoante a prioridade dos pacotes. Desta forma, os pacotes de menor prioridade (fora do perfil negociado, ou das classes menos importantes) serão descartados primeiro.
Um outro problema advém da utilização do protocolo TCP, que aumenta o ritmo de transmissão até haver descarte de pacotes, caso em que diminui a janela de transmissão, reduzindo o ritmo. No pior caso, todas as fontes aumentam
transbordar, resultando no descarte de pacotes para quase todas as fontes, e a consequente redução do ritmo simultaneamente nas várias fontes. Isto pode causar um efeito de sincronização global que faz com que a carga oscile entre as situações de congestão num extremo, e uma situação de carga reduzida no outro extremo.
O mecanismo de Detecção Antecipada Aleatória (Random Early Detection, ou RED [Floyd 93]) foi desenvolvido para operar com o protocolo TCP para detectar antecipadamente situações de congestão, e tentar preveni-las. Este mecanismo funciona começando a descartar alguns pacotes antes de a fila de espera transbordar, na esperança que o protocolo TCP, ao detectar perda de pacotes, reduza o ritmo de transmissão, evitando que a fila de espera realmente transborde, e prevenindo assim a congestão.
Adicionalmente, pretende-se limitar o comprimento médio da fila de espera de forma a reduzir os atrasos, e ainda evitar o problema de sincronização global.
O mecanismo RED ajusta a probabilidade de descarte de pacotes consoante o valor actual do tamanho médio da fila de espera conforme ilustrado na figura 5.9. Caso o tamanho médio da fila de espera se encontre abaixo de um limiar mínimo, a probabilidade de descarte é nula. À medida que ele cresce entre o limiar mínimo e máximo, também a probabilidade de descarte vai crescendo linearmente até um valor Pmáx, tornando-se 1 para valores do tamanho médio da fila de espera superiores ao limiar máximo.
Probabilidade de Descarte
Tamanho Médio da Fila de Espera 1.0
0.0
máx mín
Pmáx
Figura 5.9: Probabilidade de descarte de pacotes no mecanismo de Detecção Antecipada Aleatória (RED).
Com o objectivo de permitir algumas rajadas de dados, o tamanho médio da fila de espera é calculado utilizando um filtro passa-baixo com uma média móvel de peso exponencial (EWMA), dada pela equação 5.1:
média ← ( 1 - wq ) . média + wq . q (5.1) O peso wq corresponde ao peso do comprimento actual da fila de espera (q) na média. Se wq for muito baixo, a média responde muito devagar a variações no comprimento da fila de espera. Se wq for muito elevado, haverá descarte de pacotes quando houver uma rajada de dados.
Na figura 5.10 ilustra-se o funcionamento do filtro passa-baixo. Esta figura corresponde a um exemplo simulado de funcionamento de uma fila de espera com tráfego AF durante 20 segundos gerado por fontes TCP. O comprimento da fila é de 120 pacotes, o peso para calcular o comprimento médio é wq=0.01. Os limiares do RED são mín=30, máx=60, Pmáx=1/50.
Comprimento da Fila de Espera
0 15 30 45 60 75 90
10 15 20 25 30
tempo [segundos]
Comprimento Médio Fila Comprimento Fila
Figura 5.10: Variação do tamanho médio da fila de espera.
Da análise desta figura, verifica-se que o comprimento médio da fila de espera segue as variações do comprimento da fila, filtrando as variações bruscas, permitindo assim algumas rajadas de dados, tal como se pretendia. Nota-se ainda o efeito de o comprimento médio da fila ultrapassar o limiar de 60 pacotes, em que todo o tráfego que chega à fila de espera passa a ser descartado, pelo que o comprimento da fila é rapidamente reduzido. Quando o comprimento médio da fila ultrapassa o limiar de 30 pacotes, começa a haver algum descarte de pacotes, com probabilidade crescente. À medida que começa a haver descarte de pacotes, as fontes TCP onde houve descarte
reagem reduzindo o ritmo de transmissão, pelo que o efeito de o comprimento médio da fila ultrapassar o limiar de 30 pacotes causa uma redução do comprimento da fila, pouco perceptível na figura.
Desta análise podem-se tirar algumas conclusões para auxiliar o dimensionamento dos diversos parâmetros. O limiar máximo define um limite para o comprimento médio da fila, que deve ser escolhido de acordo com o atraso máximo pretendido para os pacotes. Quanto maior for o tamanho médio da fila de espera, maiores são os atrasos sofridos pelos pacotes.
A dimensão da fila de espera deve ser suficiente para que não transborde sem o comprimento médio atingir primeiro o limiar máximo, por forma a que o mecanismo RED tenha um funcionamento efectivo.
A equação 5.2 [Floyd 93] permite obter um limite para o peso wq de forma a permitir rajadas3 de dimensão L pacotes sem descartes:
w mín L w
q L
q − <
+ − +
+ 1
) 1 1 (
1
(5.2)
Se, por exemplo, o limiar mínimo for mín=30 e o tamanho máximo da rajada for L=50, será necessário escolher wq ≤ 0.043.
Como regra prática, o limiar máximo deve ser pelo menos o dobro do limiar mínimo [Floyd 93]. Para o comprimento máximo da fila de espera pode-se usar como regra prática o valor de duas vezes o limiar máximo.
Uma vez que numa classe de serviço assegurado de DiffServ estão previstos três níveis de probabilidade de descarte, será lógico utilizar três conjuntos de parâmetros para o RED, a aplicar ao tráfego de cada um dos diferentes níveis de probabilidade de descarte [RFC 2698]. Neste caso, o comprimento médio utilizado pode ser calculado de diferentes formas [Goyal 99]. Pode ter-se apenas uma única média, calculada pelo número total de pacotes, independentemente das suas marcações. Uma segunda forma é ter tantas médias quantos os níveis de probabilidade de descarte, calculando-se cada uma com os pacotes da respectiva probabilidade de descarte e das probabilidades de descarte mais baixas. Uma terceira forma é continuar a ter tantas médias quantos os
3 Assume-se que a fila de espera está inicialmente vazia, com um comprimento médio nulo, e que a fila cresce de 0 a L pacotes, correspondendo a L chegadas de pacotes e nenhuma partida.
níveis de probabilidade de descarte, mas utilizar em cada média apenas os pacotes da sua probabilidade de descarte.
A figura 5.11 ilustra os três conjuntos de limiares para a segunda forma de calcular a média. Os limiares mais elevados são aplicados ao comprimento médio da fila de espera calculado apenas com os pacotes do nível mais prioritário (AFx1), controlando o respectivo descarte de pacotes. Os limiares seguintes são aplicados ao comprimento médio calculado com o conjunto dos pacotes dos dois níveis mais prioritários, e controlam o descarte dos pacotes do nível de probabilidade de descarte intermédio (AFx2). Os limiares mais baixos são aplicados ao comprimento médio calculado com o conjunto de todos os pacotes independentemente do nível de probabilidade de descarte, e controlam o descarte dos pacotes do nível de probabilidade de descarte mais baixo (AFx3).
Probabilidade de Descarte
Tamanho Médio da Fila de Espera 1.0
0.0 máx
Vermelho AFx1+
AFx2+
AFx3
AFx1+
AFx2+
AFx1
Amarelomáx máx
Verde
Figura 5.11: Limiares RED para uma marcação com três cores.
O descarte de pacotes para os níveis de probabilidade de descarte maior é mais agressivo de três maneiras. Em primeiro lugar, o limiar mínimo é menor, começando-se a descartar pacotes mais cedo. Em segundo lugar, a probabilidade de descarte Pmáx é maior, descartando-se mais pacotes. Finalmente em terceiro lugar, o limiar máximo é menor, descartando-se todo o tráfego de menor prioridade antes do de maior prioridade.
A configuração destes parâmetros permite controlar quanto tráfego fora de perfil é que se deixa passar, podendo-se recorrer a políticas activas de gestão para ajustar
Uma versão simplificada deste mecanismo de descarte de pacotes corresponde a utilizar apenas dois conjuntos de parâmetros a aplicar ao tráfego dentro e fora de perfil, chamando-se o mecanismo RIO: RED com bit in/out, pois neste caso basta um bit para distinguir a marcação dentro de perfil da fora de perfil.
Para concluir esta secção, deve-se ainda referir que na classe de serviço melhor esforço utiliza-se apenas um conjunto de parâmetros para o RED visto que não há definição de perfil. Na classe de serviço expedito pretende-se simular um circuito virtual, pelo que é preferível não utilizar o mecanismo RED, havendo descarte apenas quando a fila transborda, o que não deve acontecer se as reservas forem bem feitas e respeitadas.