Camada de transporte
TCP
Controle de congestionamento
Gerenciamento da conexão
n
n
n
O lado cliente envia um segmento TCP
especial ao lado servidor. Este segmento não
contém dados. O bit SYN é ajustado para 1.
O cliente escolhe aleatoriamente um número
de sequência. (client_isn) e coloca-o no
campo “número de sequência”.
O segmento é encapsulado em um
datagrama IP e enviado ao servidor
Gerenciamento da conexão
n
n
n
n
n
Assim que o datagrama IP chega ao
servidor, este extrai o segmento TCPSYN,
aloca buffers e variáveis.
Este segmento também não contém dados.
O bit SYN está com valor 1
O campo de reconhecimento está ajustado
para clint_isn+1.
O servidor escolhe o seu próprio número de
sequência.
Gerenciamento da conexão
n
n
n
Ao receber o segmento SYNACK o cliente
também reserva buffers e variáveis para a
conexão.
Reconhece o segmento de confirmação
colocando o valor de client_isn+1 no campo
de reconhecimento.
O bit SYN é ajustado para 0, já que a
conexão está estabelecida.
Relembrando algumas variáveis
n
RTT
q
n
n
Tempo de viagem de ida e volta da conexão
RcvWindow
q
Janela de recepção
q
(RcvWindow – RcvBuffer – [LastByteRcvd – LastByteRead]
MSS (Tamanho de Segmento Máximo)
q
q
Limita a quantidade de dados que a entidade que o TCP
irá enviar num único datagrama IP.
Valores para MSS são trocados nos pacotes SYN
(requisição de conexão) que abrem a conexão TCP.
Tráfego de dados
n
Taxa média de dados
q
n
n
n
Quantidade de bits enviados dividida pelo
intervalo de tempo decorrido durante a
transmissão.
Taxa constante de bits (CBR)
Taxa variável de bits (VBR)
Rajada de dados
Causas do congestionamento
n
Por que ocorrem congestionamentos?
n
Qual a solução?
Congestionamento
n
n
O congestionamento pode ocorrer se a carga
(quantidade de pacotes enviados para a
rede) superar a capacidade da rede
(quantidade de pacotes que uma rede
consegue controlar).
O congestionamento ocorre em sistemas que
envolvem algum tipo de espera.
Soluções
n
n
n
A solução é diminuir a taxa de transmissão
dos dados.
A idéia é não incluir um novo pacote na rede
até que o anterior a tenha deixado.
O TCP tenta alcançar esse objetivo
manipulando dinamicamente o tamanho da
janela.
Detectando o congestionamento
n
O primeiro passo é detectar o
congestionamento
q
q
q
Pacotes perdidos devido a ruídos na rede.
Esgotamento de buffers nos roteadores.
Atualmente todos os algorítmos TCP que atuam
na Internet presumem que os timeouts são
provocados por congestionamentos.
Atrasos em uma rede
n
n
n
De empacotamento
De processamento
De propagação
Mecanismos de controle de
congestionamento
n
Fim-a-fim
q
q
n
A camada de rede não oferece nenhum suporte
explícito à camada de transporte
A perda de segmentos TCP é tomada como uma
indicação de congestionamento.
Assistido pela rede
q
A rede informa sobre o congestionamento
n
n
Roteador envia ao remetente um pacote de
congestionamento (choke packet).
Roteador marca um campo em um pacote indicando o
congestionamento.
Controle de congestionamento em malha
aberta
n
Evitam o congestionamento antes que ele
ocorra.
q
q
q
q
q
Política de retransmissão
Política de janelas
Política de confirmação imposta pelo receptor
Política de descarte de pacotes
Política de admissão (qualidade de serviço)
Reação do TCP à congestionamentos
n
n
n
Estabelece-se a conexão. Neste momento o
tamanho da janela é escolhido.
O receptor especifica o tamanho da janela de
acordo com o espaço livre em seu buffer.
Se o transmissor se mantiver dentro do
tamanho da janela, não haverá problemas
causados por sobrecargas nos buffers do
receptor.
Causas dos congestionamentos
n
Causas internas da rede.
Múltiplas conexões.
n
Dois problemas potenciais:
n
q
A capacidade da rede
A capacidade do receptor
q
Duas soluções:
q
n
n
A janela de recepção
A janela de congestionamento (CongWin)
NOTA: O número de bytes que o transmissor irá enviar será o
mínimo das duas janelas.
Janela de congestionamento
n
n
n
n
É uma variável denominada CongWin.
Impõe uma limitação à taxa à qual um
remetente TCP pode enviar tráfego para
dentro da rede.
A quantidade de dados não reconhecidos em
um hospedeiro não pode exceder o mínimo
de CongWin e Rcvindow.
LastByteSent – LastByteAcked < ou =
min{CongWin, RcvWindow}
Janela Efetiva
n
É o mínimo que transmissor e receptor
consideram viáveis.
q
q
q
Se o receptor informar 10Kb como tamanho da
janela (neste caso o receptor estará dizendo:
Envie 10 Kb!)...
Mas o tamanho da Janela de Congestionamento
do transmissor informar que rajadas acima de
5Kb irão congestionar a rede...
Neste caso o transmissor enviará apenas 5Kb.
Janela Efetiva
n
Agora o contrário.
q
q
q
O receptor informa: Envie 20Kb...
O transmissor percebe que 40Kb passam pela
rede sem problemas...
Neste caso, o transmissor enviará apenas 20Kb.
Controle de congestionamento em malha
fechada
n
Alivia um congestionamento após ele ter
ocorrido.
q
q
q
Partida lenta (Slow start)
Aumento aditivo, diminuição multiplicativa
(additive increase, Multiplicative decrease)
Threshold
Partida lenta (SlowStart)
q
q
q
q
Quando ocorre a conexão o transmissor ajusta a Janela de
Congestionamento ao tamanho máximo do segmento em
uso pela conexão (MSS).
Caso o segmento seja confirmado antes do timeout, o
transmissor adiciona o número de bytes de um segmento à
Janela de Congestionamento, que passará a ter o tamanho
de dois segmentos.
A medida que novas confirmações cheguem, a janela vai
sendo ampliada exponencialmente, até que ocorra um
timeout ou a janela do receptor seja alcançada.
Quando isto ocorre, a Janela de Congestionamento é
mantida com o tamanho anterior ao timeout.
Partida lenta (SlowStart)
n
Exemplo:
q
q
q
O tramissor enviou rajadas de 1024, 2048, 4096
bytes que obtiveram confirmações.
Ao enviar uma rajada de 8192 bytes ocorreu um
timeout.
A Janela de Congestionamento será mantida com
o tamanho de 4096 bytes.
n
n
Nenhuma rajada superior a isso será enviada.
Não importando qual seja o tamanho da janela do
receptor.
Aumento aditivo, diminuição multiplicativa
(additive increase, Multiplicative decrease)
n
A questão é:
q
O quanto o transmissor deve diminuir ou
aumentar o tamanho de sua janela.
n
Diminuição:
q
q
q
Após um evento de perda, a janela é alterada para a
metade do valor corrente de CongWin.
Se outro evento ocorrer a janela será novamente cortada
pela metade.
Não é permitido ao tamanho da janela ser inferior ao de um
MSS.
Aumento aditivo, diminuição multiplicativa
(additive increase, Multiplicative decrease)
n
Aumento:
q
q
q
A medida que os ACKs vão chegando, a Janela de
Congestionamento é aumentada em um MSS a cada RTT.
O TCP aumenta lentamente a sua janela.
Exemplo:
n
n
n
Se o MSS for de 1460 bytes e CongWin for de 14600, então
dez segmentos estarão sendo enviados dentro de um RTT.
Cada ACK que chegar aumentará o tamanhode CongWin em
1/10 MSS.
Após a chegada dos dez ACKs, a Janela de
Congestionamento será aumentada em um MSS.
Threshold
n
n
n
n
n
Além dos dois parâmetros (janelas de recepção e de
congestionamento), um terceiro parâmetro é limitante: O
threshold.
Em princípio ele é de 64Kb.
Quando ocorre um timeout o threshold é atribuído a metade da
janela de Congestionamento atual... E a janela de
Congestionamento é reinicializada para um tamanho de
segmento máximo.
Em seguida a partida lenta é usada para determinar o que a
rede é capaz de gerenciar, mas o crescimento exponencial será
interrompido quando alcançar o valor do threshold.
A partir daí, as transmissões confirmadas proporcionarão um
crescimento linear.
Download

04 controles tcp