750 likes | 901 Views
Prevenção e Controlo de Congestão. Sistemas Telemáticos Licenciatura em Engenharia de Sistemas e Informática Departamento de Informática Universidade do Minho. Materias utilizados. Internet Congestion Control with Active Queue Management (AQM) , Seungwan Ryu (sryu@eng.buffalo.edu).
E N D
Prevenção e Controlo de Congestão Sistemas Telemáticos Licenciatura em Engenharia de Sistemas e Informática Departamento de Informática Universidade do Minho
Materias utilizados • Internet Congestion Control with Active Queue Management (AQM), Seungwan Ryu (sryu@eng.buffalo.edu)
Sumário • Introdução • Controlo de Congestão no TCP • Gestão Activa de Filas • Notificação Explícita de Congestão
Congestão (1) • As redes de comutação de pacotes têm recursos limitados • Largura de banda das linhas que interligam os encaminhadores • Comprimento finito das filas em que são armazenados os pacotes à espera de transmissão • Os recursos da rede devem ser partilhados entre as diversas conexões suportadas
Congestão(2) • Quando muitos pacotes têm que ser enviados através da mesma linha • As filas ultrapassam o seu limite máximo • Alguns pacotes são descartados • Se o descarte é muito frequente...a rede fica congestionada
Congestão(3) • Transformou-se num problema sério • Aumento da utilidade e uso das redes de computadores • Mistura de diferentes tecnologias • Exemplo: Pares entraçados e fibras ópticas • Fibras permitem grandes larguras de banda • Desadaptação entre diferentes débitos
O que é a congestão? • O que é a congestão ? • A necessidade agregada de largura de banda excede a capacidade disponibilizada pela linha. • O que acontece ? • Degragação de desempenho • Perdas múltiplas de pacotes • Baixa utilização da ligação • Tempos de atraso altos • Colapso de congestão
Métricas de detecção • Podem ser usadas vários métricas para detectar se uma rede está congestionada • Percentagem de pacotes descartados por falta de espaço de armazenamento • Tamanho médio das filas • Número de pacotes que disparam o temporizador e são retransmitidos • Tempo médio de atraso dos pacotes • Desvio padrão para o atraso dos pacotes • Em qualquer dos casos o aumento nos números significa aumento da congestão
As razões da congestão • Inundação de tráfego destinado à mesma linha de saída • As filas enchem e os pacotes são descartados • O problema pode não ser resolvido única e simplesmente com aumento de memória • Processadores lentos ou software de encaminhamento pouco eficiente. • Desadaptação entre partes do sistema (várias linhas rápidas e uma lenta) • A congestão tem tendência a alimentar-se a si própria e piorar a situação.
Congestão vs. Controlo de Fluxo • O controlo de congestão têm que se certificar que a rede é capaz de transportar o tráfego • A congestão é um problema global, envolve todos os sistemas finais e encaminhadores • O controlo de fluxo lida com tráfego ponto-a-ponto entre uma fonte e um destino (por exemplo um supercomputador a descarregar para um PC através duma fibra)
Congestão • As redes mais modernas têm que ter algum mecanismo para controlar a congestão • Essas técnicas estão estreitamente relacionadas com a forma como os recursos limitados são alocados às várias conexões activas na rede • Dois paradigmas alternativos: • Alocação de Recursos em tempo de estabelecimento de conexão como forma de prevenir a congestão • A fonte detectar a congestão e a ajudar na sua redução ou eliminação quando ela ocorre.
Congestão • Uma alternativa é a rede ter um papel activo na alocação de recursos • Embora isto possa evitar a congestão, a conexão pode ser rejeitada se houver recursos disponíveis insuficientes • É contudo uma tarefa difícil uma vez que essas alocações devem ocorrer em todos os encaminhadores e linhas da rede. • Adicionalmente, esta abordagem pode potenciar a sub-utilização dos recursos que são limitados. • Outra alternativa é permitir às fontes enviarem os dados que quiserem para rede, e forcá-la a recuperar de situações de congestão. • Uma abordagem mais simples, mas a congestão pode demorar algum tempo a ser dissipada (com a perda de pacotes a persistir).
Fluxos numa rede não orientada à conexão • O conceito de fluxo é essencial para o processo de alocação de recursos • É feita pela rede uma expedição independente de cada datagrama entre e endereço IP fonte e o IP destino. • Contudo, na prática, é suposto que uma sequência de pacotes siga a mesma rota na rede entre a fonte e o IP destino • Esta sequência de pacotes constitui um fluxo
Fluxos numa rede não orientada à conexão • Na prática o fluxo não é estabelecido • Geralmente um encaminhador reconhece os fluxos pela análise de cadeia de pacotes que passam por ele. • Basta analisar a fonte e o destino dos pacotes IP • O encaminhador pode manter informação a respeito de cada fluxo que passa por ele para efeitos de alocação de recursos • Chamada muitas vezes informação de estado ligeira (soft state)
Mecanismos de alocação de recursos • Existem inúmeras formas das redes realizarem na prática as operações de alocação de recursos • Contudo, iremos analisar três critérios de classificação para os mecanismos de alocação de recursos • Centrado no encaminhador ou no sistema final • Baseado em reserva ou em realimentação • Baseado em janela ou em débito
Centrado na rede ou na fonte • As fontes IP e os os encaminhadores estão envolvidos na alocação de recursos • Classificação que localiza as responsabilidades • Centrado na rede: • Encaminhadores têm a a responsabilidade de decidir quando os pacotes são expedidos ou descartados; • Informam as fontes IP de quanta informação estão autorizados a enviar • As fontes devem respeitar estas mensagens de conselho • Centrado na fonte: • Fontes monitorizam a rede e ajustam o seu comportamento em conformidade • Encaminhadores sob congestão descartam os pacotes
Reserva vs realimentação • Numa abordagem baseada em reserva: • A fonte requisita explicitamente recursos (buffer e/ou capacidade nas linhas) dos encaminhadores (portanto centrado na rede) quando o fluxo é estabelecido • Cada encaminhador aloca os recursos requisitados, se isso não ultrapassar a sua capacidade limitada. • Numa abordagem baseada em realimentação • Não há o processo de reserva • As fontes IP ajustam o seu débito de acordo com a informação de realimentação, que pode ser: • Explícita: Mensagens de Controlo de Congestão(centrada na rede) • Implicita:Como resultado da medição do comportamento da rede (centrada na fonte)
Baseada em janela ou débito • Como é que o nó fonte IP é informado da quantidade dos dados que pode enviar? • Este critério classifica os mecanismos de controlo de congestão na forma de relato usado para indicar à fonte quantos dados pode enviar • Como um tamanho de janela aconselhada pelos encaminhadores usados por um fluxo. • Como um débito (i.e. Entidades por unidade de tempo que a fonte pode transmitir para a rede).
Avaliação da alocação de recursos • Um mecanismo de alocação de recursos pode ser avaliado em termos tanto da sua eficácia como equidade(fairness). • A eficácia pode ser avaliada com: • Throughput e atraso são parâmetros que competem – forçar mais dados para a rede aumenta o tamanho das filas e portanto aumenta o atraso
Equidade da alocação de recursos • A equidade dum algoritmo de alocação de recursos é uma quantidade mais difícil de medir. • Para uma dada linha entre dois encaminhadores, há maior equidade quando todos fluxos recebem uma parte equitativa da largura de banda? • Uma métrica comum para a equidade é o índice de Jain.
Índice de equidade de Jain • Para um dado conjunto de fluxos x1, x2, …. xN, o índice de equidade é dado por: • O índice de equidade varia entre 0 e 1 (1 é o maior valor)
Prevenção e Controlo de Congestão • Duas abordagens para lidar com a congestão • Controlo de Congestão (Reactiva) • Actua depois da rede estar sobrecarregada • Prevenção de Congestão (Proactiva) • Actua antesda rede estar sobrecarregada
Algoritmos de Controlo de Congestão • São conhecidos muitos algoritmos de controlo de congestão • Foi desenvolvida uma taxonomia para os organizar • A taxonomia começa por dividí-los em algoritmos em anel aberto e em anel fechado • As soluções em anel aberto são divididas entre aquelas que actuam na fonte e as que actuam no destino
Categorias em anel fechado • Divididas em duas sub-categorias • Realimentação explícita • São enviados pacotes de aviso dos pontos de congestão para a fonte • Realimentação implícita • As fontes deduzem a existência de congestão pelas suas próprias observações
Controlo de Congestão Controlo de congestão • Em anel aberto • usado principalmente em redes de comutação de circuitos (GMPLS) • Em anel fechado • usado principalmente em redes de comutação de pacotes • usa informação de realimentação: global & local • Controlo de Realimentação implícito • End-to-end congestion control • Exemplos: • TCP Tahoe, TCP Reno, TCP Vegas, etc. • Controlo de realimentação explícito • controlo de congestão assistido pela rede • Exemplos: • IBM SNA, DECbit, ATM ABR, ICMP source quench, RED, ECN
Anel Aberto: Calibração de TráfegoTraffic shaping • Uma das principais causas de congestão é a o tráfego são as rajadas (bursty) de tráfego. • A calibração de tráfego é um método em anel aberto que tenta gerir a congestão forçando que os pacotes sejam transmitidos a um débito previsível • O seu objectivo é regular o débito médio (e rajada) na transmissão dos dados • Quando se estabelece a ligação a calibração é acordada entre o utilizador e o transportador.
Algoritmo do balde vazanteLeaky Bucket Algorithm • O que se pretende é disponibilizar um fluxo consistente e regular de tráfego • Imagine um balde com um buraco em baixo ou uma torneira com o fluxo de saída é constante, independente da água que entra ou que existe. • É essa a ideia de suporte a este algoritmo
Algoritmo do Balde vazante O fluxo de saída tem um débito constante , quando há agua no balde e é zero qunado o balde está vazio
Algoritmo do Balde vazante Concretização • Um balde vazante não é mais que um sistema de fila com um único servidor com um tempo de serviço constante • Os pacotes podem chegar a qualquer instante, mas o host só está autorizado a colocar um pacote na rede por cada tique do relógio. • Se os pacotes forem de diferentes tamanhos é melhor usar um número fixo de bytes por tique em vez de um pacote. • Quando a fila enche, os novos pacotes são descartados
Algoritmo do Balde com CréditosToken Bucket Algorithm • O balde vazante força um padrão de saída rígido • O algoritmo do balde com créditos permite acelerações na saída quando chegam muitos pacotes (rajadas) • Aqui cada balde mantém créditos que são gerados por um relógio à velocidade de um crédito em cada T segundos • Para transmitir precisa de um crédito • Os hosts que ficam períodos em silêncio, podem enviar rajadas mais tarde.
Realimentação Implícita vs Explícita • Controlo de Congestão com Realimentação Implícita • A rede descarta pacotes quando a congestão ocorre • A fonte infere a congestão implicitamente • Disparo de temporizadores, confirmações duplicadas, etc. • Examplo: Controlo de Congestão fim-a-fim do TCP • Fácil de concretizar mas imprecisa • Concretizada apenas na camada de transporte (TCP)
Realimentação Implícita vs Explícita • Controlo de Congestão com realimentação explícita • O encaminhador indica explicitamente a congestão às fontes • Marcação de pacotes • Exemplos: DECbit, ECN, etc. • Disponibiliza informação mais precisa às fontes • Mais complicado de concretizar • É preciso mudar algoritmos dos elementos da rede e de das fontes • É necessária a cooperação entre as fontes e os componentes da rede
Controlo de Congestão no TCP • Ideia • Assumir rede melhor- esforço (encaminhadores FIFO ou FQ) em que cada fonte determina a capacidade da rede por si só • Usa realimentação implícita • As confirmações fazem aumentar as transmissões (auto-relógio) • Desafio • Determinar em primeiro lugar a capacidade disponível • Ajuste a mudanças na capacidade disponível
Controlo de Congestão no TCP • Usa controlo de congestão fim-a-fim • Usa realimentação implícita • i.e., time-out, ACKs triplos duplicados, etc. • Usa controlo de fluxo baseado em janela • cwnd = min (pipe size, rwnd) • Auto-relógio (self-clocking) • Arranque lento e prevenção de congestão • Exemplos: • TCP Tahoe, TCP Reno, TCP Vegas, etc.
cwnd Arranque lento W* 4 2 1 Time RTT Controlo de Congestão no TCP • Arranque lento e prevenção de congestão Prevenção de Congestão W+1 W W*/2 RTT
Arranque lento no TCP • Quando pensamos num algoritmo de controlo de fluxo baseado em janela deslizante • Assumimos que a fonte pode enviar segmentos até ao tamanho da janela • Isto funciona bem para dois computadores ligados à mesma LAN… • mas pode causar problemas se houver encaminhadores e linhas mais lentas no percusros entre os dois • O TCP precisa de suportar um algoritmo chamado de arranque lento…
Arranque lento no TCP • O arranque lento adiciona uma outra janela para a emissor TCP: a janela de congestão • Quando se estabelece uma nova conexão, a janela de congestão é inicializada a 1 segmento. • Cada vez que se recebe uma confirmação, a janela de congestão é aumentada de 1 • O emissor pode enviar até um número de segmentos que é o mínimo entre a janela de congestão e a janela de controlo de fluxo
Arranque lento no TCP 1 tempo 0 tempo 4 1 1 tempo 1 tempo 5 1 1 tempo 2 tempo 6 1 1 tempo 3 tempo 7 1
Arranque lento no TCP 2 tempo 8 tempo 13 2 3 3 2 tempo 9 tempo 14 2 3 3 2 tempo 10 tempo 15 2 3 3 2 tempo 11 4 tempo 16 3 3 tempo 12 5 4 2 tempo 17
Arranque lento no TCP 6 5 4 tempo 18 tempo 23 4 5 6 7 7 6 5 4 8 tempo 19 tempo 24 5 6 7 7 6 5 tempo 20 9 8 4 tempo 25 6 7 7 6 tempo 21 10 9 8 4 5 tempo 26 7 7 tempo 22 11 10 9 8 4 5 2 tempo 27
Arranque lento no TCP 12 11 10 9 tempo 28 8 13 12 11 10 tempo 29 8 9 14 13 12 11 tempo 30 8 9 10 15 14 13 12 tempo 31 8 9 10 11
Arranque lento no TCP • A janela de congestão é o controlo de fluxo imposto pelo emissor, enquanto a outra janela é o controlo de fluxo do receptor • A capacidade da Internet pode ser atingida a qualquer instante, e um encaminhador intermediário começar a decartar pacotes… • Isso indica ao emissor que a janela de congestão está muito grande
Que tamanho deve ter a janela? • No exemplo apresentdo a janela atingiu os 8 segmentos. • A capacidade do pipe ou o produto atraso e largura de banda pode ser dada por • capacidade(bits) = largura de banda (bps) x tempo-de-ida-e-volta(seg) • Exemplos • T1 (1.54mbps), através dos EUA (60ms RTT) dá 11,580bytes (max tamanho de janela TCP é 64K) • T3 (45mbps), dá 337,500bytes!!
Duas “fases” Arranque lento Prevenção de congestão Variáveis importantes: Congwin threshold: define a fronteira entre as duas fases “probing” da largura de banda utilizável: Idealmente: transmitiro mais rápido possível (Congwin o maior possível) sem perdas Aumentar Congwin até haver perdas l(congestão) Perdas: diminuir a Congwin, e então recomeçar o probing (aumento) novamente. Controlo de Congestão no TCP
Controlo de Congestão no TCP Prevenção de Congestão /*arranque lento terminado*/ /* Congwin > threshold */ Until (loss event) { every w segments ACKed: Congwin++ } threshold = Congwin/2 Congwin = 1 Executar arranque lento
Controlo de Congestão no TCP • TCP Tahoe • Usa arranque lento/prevenção da congestão • Uma melhoria: rápida retransmissão • Detectar pacotes (segmentos) descartados por três ACKs duplicados • W = W/2, e começa a prevenção da congestão • TCP Reno (recuperação rápida) • Depois de receber três ACKs duplicados • ssthresh = W/2, e retransmitir pacotes em falta • W = ssthresh +3 • Depois de receber a confirmação (ACK): W = ssthresh • Permitir ao tamanho da janela crescer depressa para manter cheio o pipeline
Controlo de Congestão no TCPTCP SACK (Selected Acknowledgement) • O emissor TCP (Thaoe) pode apenas saber duma única perda por tempo-de-ida-e-volta ( RTT) • A opção SACK disponibiliza uma melhor recuperação de uma situação de múltiplas perdas • O emissor pode transmitir todos os pacotes perdidos • Mas esses pacotes podem já ter sido recebidod • Operação • Adicionar a opção SACK ao cabeçalho TCP • O receptor envia um SACK ao emissor para o informar da recepção do pacote • Então, o emissor pode retransmitir apenas o pacote em falta
Gestão Activa de FilasActive Queue Management (AQM) • Degradação de desempenho no Controlo de Congestão do TCP • Múltiplas perdas de pacotes • Baixa utilização das linhas • Colapso de congestão • O papel dos encaminhadores torna-se importante • Controlo eficiente da congestão nas redes • Alocação apropriada da largura de banda
Técnicas de Gestão de Filas • Um dos aspectos mais básicos da alocação de recursos é como os pacotes são colocados nas filas quando aguardam a sua transmissão • As duas técnicas mais comuns são: • Filas FIFO • Filas com Equidade (Fair queuing)