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 demorase 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: Somando com a última: 0011000110101101 0100111011100101 ---------------1000000010010010 1000000010010010 0000010110100110 ---------------1000011000111000 0111100111000111 checksum 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