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 ideia, 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á 10KB 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 • SlowStart – Inicia janela de congestionamento em 1 MSS – A cada ACK recebido, duplica a janela até alcançar o threshold (limiar da tentativa de crescimento exponencial da janela) – Entra em congestion avoidance congWindow Redes de Computadores I – Prof. Mateus Raeder TCP • SlowStart – A partir de então, incrementa linearmente em 1 MSS a cada ACK recebido congWindow Redes de Computadores I – Prof. Mateus Raeder