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
Download

Prof. Mateus Raeder