250 likes | 327 Views
Redes de Computadores I. Prof. Mateus Raeder. Universidade do Vale do Rio dos Sinos - São Leopoldo -. TCP – Controle de congestionamento. Quando ocorre um congestionamento? Quando a carga enviada para a rede é maior que sua capacidade
E N D
Redes de Computadores I Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos- São Leopoldo -
TCP – Controle de congestionamento • Quando ocorre um congestionamento? • Quando a carga enviada para a rede é maior que sua capacidade • A idéia, então, é não enviar um novo pacote até que um antigo tenha saído da rede • A tentativa de evitar congestionamentos é manipulando dinamicamente o tamanho da janela • O primeiro passo para gerenciar congestionamento é detectá-lo Redes de Computadores I – Prof. Mateus Raeder
TCP – Controle de congestionamento • Antigamente, detectar congestionamentos era mais difícil • Timeouts eram causados ou por ruído na rede ou descarte por um roteador congestionado • Difícil saber a diferença entre os dois casos • Hoje em dia, a perda de pacotes devido a erros de transmissão é rara • Maioria dos timeouts da Internet é devido a congestionamentos Redes de Computadores I – Prof. Mateus Raeder
TCP – Controle de congestionamento • Como o TCP evita congestionamentos? • Na conexão, deve-se escolher um tamanho de janela adequado • O remetente evita congestionamentos enviando pacotes dentro do tamanho da janela do receptor • Entretanto, ainda podem ocorrer devido a congestionamentos internos da rede • A solução é entender que existem estes dois tipos de congestionamentos (capacidade da rede e capacidade do receptor) Redes de Computadores I – Prof. Mateus Raeder
TCP – Controle de congestionamento • Cada remetente possui 2 janelas • A do receptor • A de congestionamento • Cada uma delas indica o número de bytes que o remetente pode enviar • O número de bytes que podem ser transmitidos é o mínimo entre as duas janelas • Se receptor pedir 10KB e o remetente sabe que com mais de 6KB congestiona a rede, ele enviará 6KB • Se o remetente souber que até 32KB não congestiona a rede, enviará 8KB para não saturar o receptor Redes de Computadores I – Prof. Mateus Raeder
TCP – Controle de congestionamento • Quando a conexão é estabelecida, janela de congestionamento é ajustada ao tamanho máximo do segmento em uso na conexão • Envia um segmento máximo • Se o segmento for confirmado antes do timeout • Coloca na janela de congestionamento mais um tamanho máximo de segmento • Assim, a janela de congestionamento agora possui capacidade equivalente a dois segmentos máximos • Em seguida, envia 2 segmentos Redes de Computadores I – Prof. Mateus Raeder
TCP – Controle de congestionamento • Quando a janela de congestionamento chegar em n segmentos • se todos os n segmentos forem confirmados a tempo, a janela de congestionamento será aumentada em n segmentos • Assim sendo, cada rajada confirmada duplica a janela de congestionamento • O crescimento é exponencial, até que ocorra um timeout ou que a janela do receptor seja alcançada • Para evitar congestionamentos, então, quando ocorre um timeout a janela anterior é a que prevalece Redes de Computadores I – Prof. Mateus Raeder
TCP – Controle de congestionamento • Inicialização lenta • É utilizada para determinar o que a rede é capaz de gerenciar • Quando um timeout ocorre, a janela fica com a metade do último tamanho (o que gerou timeout) • A partir de então, cada rajada (tentativa de envio) não é mais exponencial (dobro), mas sim linear (um MSS) • Ou seja, a janela cresce exponencialmente até quando pode, e segue crescendo linearmente depois Redes de Computadores I – Prof. Mateus Raeder
TCP – Gerenciamento de timers • Dos vários timers que utiliza, o mais importante é o de retransmissão • Quando um segmento é enviado, um timer de transmissão é ativado • Se a confirmação do segmento chegar antes to final do timer, ele será interrompido • Senão, o segmento será retransmitido (mais um timer) • Obviamente surge a pergunta: • Qual deve ser o intervalo do timer? Redes de Computadores I – Prof. Mateus Raeder
TCP – Gerenciamento de timers • Não é fácil e é crítico • Se for muito pequeno: retransmissões desnecessárias • Se for muito grande: quando o pacote se perde demora-se muito a saber (retardo de retransmissão) • Solução: algoritmo altamente dinâmico, que ajusta os intervalos de timeout com base na avaliação contínua da rede • Descrito por Jacobson Redes de Computadores I – Prof. Mateus Raeder
TCP – Gerenciamento de timers • Algoritmo de Jacobson • Para cada conexão, guarda-se um valor RTT (melhor estimativa no momento para a ida e volta de 1 segmento) • O timer é disparado transmissão • Se voltar o ACK antes do timer, o TCP mede o tempo necessário, que será M • Assim, de acordo com a fórmula RTT = αRTT + (1 –α)M • onde αé um fator de suavização que determina o peso dado ao antigo valor Redes de Computadores I – Prof. Mateus Raeder
TCP – Gerenciamento de timers • O que fazer quando um pacote é retransmitido? • Pois não necessariamente a confirmação é do último pacote • Phil Karn sugeriu o seguinte: • Não atualizar o RTT em qualquer segmento enviado • Ao invés disso, duplica-se o timeout a cada falha ocorrida, até chegarem no destino pela primeira vez Redes de Computadores I – Prof. Mateus Raeder
TCP – Gerenciamento de timers • Existe ainda o timer de persistência • Receptor envia janela 0 • Remetente para de enviar (timer) • Receptor atualiza a janela para continuar recebendo (envia mensagem) • Mensagem do receptor se perde • Ambas as extremidades aguardando a outra fazer alguma coisa • Quando o timer de persistência expirar, envia teste ao receptor. A resposta fornece o tamanho da janela. Redes de Computadores I – Prof. Mateus Raeder
TCP – Máquina de estados • A conexão e desconexão podem ser representadas por uma máquina de estados finito com 11 estados • A cada estado, eventos podem ocorrer e gerar determinadas ações • TCP possui estados, UDP não Redes de Computadores I – Prof. Mateus Raeder
TCP – Máquina de estados • Estados e significados Redes de Computadores I – Prof. Mateus Raeder
TCP – Máquina de estados Redes de Computadores I – Prof. Mateus Raeder Fonte: slides Prof. Luiz Arthur
TCP x UDP • UDP • Entrega não confiável • Não ordenada • Sem controle nenhum sobre os dados • Erro, fluxo, congestionamento, retransmissão, etc. • TCP • Entrega confiável • Ordenada • Controle de fluxo, congestionamento, retransmissão de pacotes, controle de erros Redes de Computadores I – Prof. Mateus Raeder
Mas por que existe o UDP? • Elimina retardos de conexão • Não mantém estado entre o transmissor e receptor • Cabeçalho muito mais simples • Como não controla congestionamento, transfere o mais rápido possível • Utilizado para aplicações com a idéia de continuidade (vídeo, áudio) • Quem deve controlar a confiabilidade no UDP? • A própria aplicação! Redes de Computadores I – Prof. Mateus Raeder
Questão para discussão • Por que foram criadas camadas de protocolos? • Independência entre as camadas • Cada uma com suas funções • Cite um aspecto da Camada de Transporte que rompe este objetivo. • Checksum • PseudoHeader (informações da camada de rede) Redes de Computadores I – Prof. Mateus Raeder
Exemplo de checksum • Transmissor • Coloca checksum em 0 • Soma com complemento de 1 todos os campos • Coloca complemento de 1 no campo checksum • Envia • Receptor • Calcula checksum • Verifica se é zero • Se SIM, pacote correto; se NÃO, erro detectado Redes de Computadores I – Prof. Mateus Raeder
Exemplo de checksum • Exemplo: Três palavras de 16 bits enviadas: 0011000110101101 0100111011100101 0000010110100110 Somando as duas primeiras: Redes de Computadores I – Prof. Mateus Raeder
Lembrando somas de bits • Soma de bits utilizada nos protocolos: 0 + 0 = 0 = 00 (“vai zero”) 1 + 0 = 1 = 01 (“vai zero”) 0 + 1 = 1 = 01 (“vai zero”) 0 + 1 = 1 = 01 (“vai zero”) 1 + 1 = 2 = 10 (“vai um”) 1 + 1 + 1 = 3 = 11 (“vai um”) 0¹0¹1¹1¹0¹0¹0¹1 0 1 0 1 1 1 1 1 --------------- 1 0 0 1 0 0 0 0 Redes de Computadores I – Prof. Mateus Raeder
Lembrando carry • Quando ocorre carry, a o bit é adicionado ao resultado: 0 0 0 0 1 0 1 0 1 1 1 1 1 1 0 0 --------------- 1 0 0 0 0 0 1 1 0 1 --------------- 0 0 0 0 0 1 1 1 + + Redes de Computadores I – Prof. Mateus Raeder
Voltando... Exemplo de checksum • Exemplo: Três palavras de 16 bits enviadas: 0011000110101101 0100111011100101 0000010110100110 Somando as duas primeiras: 0011000110101101 0100111011100101 ---------------- 1000000010010010 1000000010010010 0000010110100110 ---------------- 1000011000111000 Somando com a última: checksum 0111100111000111 Complemento de 1: inverter bits Redes de Computadores I – Prof. Mateus Raeder
Exemplo de checksum • No receptor, todos os campos são somados, inclusive o checksum • Se não houver erros, a soma deve resultar em 1111111111111111 • O complemento de 1 será 0000000000000000 Redes de Computadores I – Prof. Mateus Raeder