Controle de
Congestionamento
Referência:
Redes de Computadores. L. L. Peterson e B. S. Davie. Ed. Campus, 2004. Seções: 6.1, 6.3, 6.4
Alocação de Recursos da Rede
• Cenário: diversas aplicações disputam simultaneamente os recursos da rede (para que seus pacotes cheguem aos destinos).
• Recursos da rede (principais): largura de banda dos enlaces e espaço de buffer em roteadores e switches.
• Preocupação 1- congestionamento da rede:
- a rede não consegue atender à demanda total apresentada,
devido ao esgotamento de seus recursos internos.
• Preocupação 2 - Qualidade de Serviço (QoS) da rede: - quais níveis de atendimento a requisitos específicos das
Congestionamento
• Congestionamento: ocorre quando o número de pacotes que atravessa uma rede se aproxima da capacidade máxima dessa rede. Ocorre então uma perda significativa de desempenho, tendendo ao colapso total de funcionamento da rede.
Host de Origem 1 Roteador Host de Enlace E1 de 2 Mbps Host de Origem 2 Destino
Congestionamento
• Projetistas de rede precisam se preocupar com o que está acontecendo
quando o sistema está operando sob carga extremamente pesada.
Congestionamento
Potência da rede
Carga Ideal
Carga
• Nem sempre o aumento do throughput implica em redução do retardo
• Aumento nas filas dos roteadores;
Controle de Congestionamento
- Centrado no roteador versus centrado no host:
• roteador: controle dos recursos (buffers e linhas de saída; política de descarte)
• host: observação da rede; controle da injeção de tráfego
• papéis complementares
- Baseado em reserva versus baseado em feedback:
• reserva: pré-aloca recursos (buffers; parcela do BW)
• feedback: feedback (explícito ou implícito) regula dinamicamente o volume de envio dos hosts
• obs: o feedback pode ser apenas binário ou mais elaborado - Baseado em janela versus baseado em taxa:
• janela: um feedback de créditos regula dinamicamente o volume de envio dos hosts
• taxa: um feedback de taxa (em bps) regula dinamicamente o volume de envio dos hosts
Controle de
Congestionamento no
TCP
Controle de congestionamento - TCP
• Princípios:
- assume uma rede subjacente tipo “melhor esforço”; - cada origem tenta determinar a capacidade da rede; - usa feedback implícito;
- ACKs controlam ritmo da transmissão (autoclocking).
• Desafios:
- determinar, de início, a capacidade disponível da rede:
• técnica: partida lenta (slow start);
- ajustar-se às mudanças nesta capacidade disponível:
Aumento aditivo/diminuição multiplicativa
• Additive Increase/Multiplicative Decrease (AIMD):
- objetivo: ajustar-se às mudanças na capacidade disponível da rede.
• Nova variável de estado por conexão:
CongestionWindow
limita quantos dados a origem tem em trânsito:
MaxWin = MIN(CongestionWindow, AdvertisedWindow)
EffWin = MaxWin - (LastByteSent - LastByteAcked)
• Idéia:
- aumentar CongestionWindow quando o congestion. diminuir; - diminuir CongestionWindow quando o congestion. aumentar; - usar timeout como sinal de congestionamento:
• um timeout sinaliza uma perda de pacote;
• pacotes raramente são perdidos por erro de transmissão;
AIMD (cont.)
• Algoritmo AIMD:
- incremente CongestionWindow em um
pacote por RTT (aumento linear)
- divida CongestionWindow por dois
sempre que houver um timeout (diminuição multiplicativa)
• Na prática: incrementa “um pouco” para cada ACK Increment = (MSS * MSS)/CongestionWindow
CongestionWindow += Increment
• Rastreamento: comportamento “dente de serra’”:
70 Janela de Congestionamento Origem Destino 60 50 40 30 20 10 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 Tempo (segundos)
Partida lenta (slow start)
• •
• •
Objetivo: determinar, no início, a capacidade disponível da rede.
Idéia:
- comece com CongestionWindow = 1 pacote; - duplique CongestionWindow a cada RTT
(incremente em 1 pacote para cada ACK). O crescimento é exponencial, porém é melhor do que começar injetando um “pico” na rede.
Usada…
- quando se inicia a conexão;
- quando a conexão termina esperando por
timeout.
Origem Destino
• Rastreamento:
Timeout Tx de pacotes Perda de pacote
70 60 50 40 30 20 10 Janela de Congestionamento 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 Time (seconds)
Retransmissão rápida e recuperação rápida
• Problema: timeouts espaçados no TCP levam a períodos de ociosidade.
• Retransmissão rápida: usa ACKs
duplicados para disparar retransmissão.
• Recuperação rápida:
- pula a fase de partida lenta;
- vai diretamente para metade do
último CongestionWindow (ssthresh) bem sucedido.
• Rastreamento: 70 60 50 40 30 20 10 Emissor Pacote 1 Pacote 2 Pacote 3 Pacote 4 Pacote 5 Pacote 6 Retransmitir pacote 3 Janela de Congestionamento Receptor ACK 1 ACK 2 ACK 2 ACK 2 ACK 2 ACK 6 1.0 2.0 3.0 4.0 5.0 6.0 7.0 Time (seconds)
Prevenindo o
Prevenção de congestionamento
• Estratégia do TCP:
- controle o congestionamento quando ele acontecer;
- aumente a carga repetidamente em um esforço para encontrar
o ponto em que o congestionamento ocorre, e depois recue.
• Estratégia alternativa:
- preveja quando o congestionamento está para acontecer; - reduza a velocidade antes que os pacotes comecem a ser
descartados;
- chame isso de prevenção de congestionamento, em vez de
controle de congestionamento.
• Duas possibilidades:
- centrada no roteador: DECbit e RED; - centrada no host: TCP Vegas.
DECbit
• Inclua um bit de congestionamento em cada cabeçalho de pacote.
• Roteador: monitora o tamanho médio da fila durante último ciclo ocupado+ocioso e marca o bit de congestionamento se o tamanho médio da fila > 1. Tamanho da fila Hora atual Tempo Ciclo Ciclo anterior atual Intervalo médio
• Destino ecoa o bit de volta para a origem, que registra quantos pacotes chegaram com o bit marcado:
- se menos de 50% do tamanho da última janela
aumente CongestionWindow em 1 pacote;
- se 50% ou mais da última janela com bit marcado
Random Early Detection (RED)
• Random Early Detection - RED: descarte aleatório antecipado:
- em vez de esperar que a fila se encha, descarte cada pacote que
chega com uma probabilidade de descarte, sempre que o tamanho da fila ultrapassar determinado nível de descarte.
• A notificação é implícita:
- apenas descarta o pacote (TCP esgotará tempo limite); - poderia se tornar explícita marcando o pacote.
• Cálculo do tamanho médio da fila:
TamanhoMédio = (1 - Peso) * TamanhoMédio + Peso * TamanhoAmostra
onde 0 < Peso < 1 (normalmente 0,002)
Random Early Detection (RED)
• Algoritmo:
if TamanhoMédio <= LimiteMínimo then coloca o pacote em fila if LimiteMínimo < TamanhoMédio < LimiteMáximo then
calcula probabilidade P
descarta pacote que chega com probabilidade P
if LimiteMáximo <= TamanhoMédio then descarta pacote que chega
RED (cont.)
• Curva da probabilidade de descarte:
P(descarte)
1.0
MaxP
TamanhoMédio
LimiteMínimo LimieMáximo
- a probabilidade de descarte dos pacotes de um fluxo é proporcional à fatia da largura de banda que o fluxo está obtendo atualmente;
- MaxP normalmente é definido como 0,02, significando que, quando o tamanho médio da fila está a meio caminho entre os dois limites, o roteador descarta cerca de um a cada 50 pacotes;
- se o tráfego for em rajadas, então LimiteMínimo deverá ser suficientemente grande
para permitir que a utilização do enlace seja mantida em um nível aceitavelmente alto;
- a definição de LimiteMáximo com o dobro de LimiteMínimo é razoável para o tráfego
RED - Problemas
• Fluxos não responsivos:
• Sinais enviados pelos roteadores para reduzir seu tráfego são ignorados;
• Hosts usariam mais que sua “fatia justa” dos recursos da rede e
poderiam causar colapso de congestionamento se houvessem muitos deles.
• Possíveis soluções:
• Variante do RED que descarta mais intensamente a partir de fluxos que não são responsivos às dicas iniciais que ele envia;
• Isolar certas classes de tráfego das outras;
TCP Vegas
• Idéia: origem observa algum sinal de que a fila do roteador está aumentando e que o congestionamento ocorrerá, por exemplo:
- RTT cresce;
- taxa de envio nivela.
• Algoritmo:
- Se não se estiver estourando a conexão, então:
TaxaEsperada = JanelaCongestionamento/RTTBase
onde RTTBase é o menor de todos os RTTs medidos.
- Origem calcula taxa de envio (TaxaReal) uma vez por RTT e compara com TaxaEsperada:
Dif = TaxaEsperada - TaxaReal if Dif <
aumenta JanelaCongestionamento linearmente else if Dif >
diminui JanelaCongestionamento linearmente else
TCP Vegas
Janela de congestionamento Throughput Tam. fila RoteadorTCP Vegas (cont.)
• Parâmetros = 1 pacote = 3 pacotes Janela de Congestionamento 70 60 50 40 30 20 10 0.5 1.0 1.5 2.0 Throughput 240 200 160 120 2.5 3.0 3.5 4.0 4.5 5.0 Tempo (seg) throughput esperado 5.5 6.0 6.5 7.0 7.5 8.0 throughput real 80 região entre e 40 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 Tempo (seg)• Retransmissão ainda mais rápida
- mantém timbres de hora espaçados para cada pacote; - verifica tempo limite no primeiro ACK duplicado.
Quanto + longe throghput esperatdo estiver do real, há congestionamento e tx transm. deve ser reduzida.
CC, corre perigo da conexão não utilizar a
largura de banda disponível e aumenta tx