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
Download

Slide 1 - Unisinos