You are on page 1of 8

TCP: Viso geral RFCs: 793, 1122, 1323, 2018, 2581

TCP: estrutura do segmento


32 bits URG: dados urgentes (pouco usados) ACK: no. ACK vlido PSH: envia dados j (pouco usado) RST, SYN, FIN: gesto de conexo (comandos de

ponto a ponto:

transmisso full duplex:

no. porta origem no. porta dest nmero de seqncia


tam. sem UA P R S F cab. uso

1 remetente, 1 receptor

fluxo de bytes, ordenados, confivel:

no estruturado em msgs tam. da janela ajustado por controle de fluxo e congestionamento do TCP
application reads data TCP receive buffer
segment

dutado:

fluxo de dados bidirecional na mesma conexo MSS: tamanho mximo de segmento handshaking (troca de msgs de controle) inicia estado de remetente, receptor antes de trocar dados receptor no ser afogado
3: Camada de Transporte 3b-1

nmero de reconhecimento
janela receptor ptr dados urg. checksum

contagem de dados por bytes (no segmentos!) no. bytes rcpt quer aceitar

orientado a conexo:

Opes (tam. varivel) dados da aplicao (tam. varivel)

socket door

buffers de envio e recepo


application writes data TCP send buffer socket door

estabelecimento, liberao)
checksum Internet (como UDP)

fluxo controlado:

3: Camada de Transporte

3b-2

TCP: nos. de seq. e ACKs


Nos. de seq.: nmero dentro do fluxo de bytes do primeiro byte de dados do segmento ACKs: no. de seq do prx. byte esperado do outro lado ACK cumulativo P: como receptor trata segmentos fora da ordem? R: espec do TCP omissa - deixado ao implementador
Estao A
Usurio tecla C
Seq=4 2

TCP: Tempo de Resposta (RTT) e Temporizao


Estao B
ta = C

, A CK =79, d a

Seq=

B reconhece chegada de = C C, ecoa data , 3 4 CK= C de volta 79, A

P: como escolher valor do temporizador TCP?


maior que o RTT

P: como estimar RTT?


RTTamostra: tempo medido

A reconhece chegada do C ecoado

Seq=4 3

, ACK =80

cenrio simples de telnet


3: Camada de Transporte

tempo

note: RTT pode variar muito curto: temporizao prematura retransmisses so desnecessrias muito longo: reao demorada perda de segmentos

entre a transmisso do segmento e o recebimento do ACK correspondente ignora retransmisses, segmentos com ACKs cumulativos RTTamostra vai variar, queremos amaciador de RTT estimado usa vrias medies recentes, no apenas o valor corrente (RTTamostra)

3b-3

3: Camada de Transporte

3b-4

TCP: cenrios de retransmisso


Estao A Estao B
Seq=9 2 , 8 by tes de

TCP: cenrios de retransmisso (cont)


Host B Host A
Seq=9 2

Host A
Seq=9 2

Host B
, 8 by tes da

T. p/ Seq=100 Temp.p/ Seq=92

temporizao

dados

timeout

perda
Seq=9 2 , 8 by tes de dados

=100 A CK

, 8 by tes de dados Seq= 100, 20 by tes d e dad os


0 10 K= 120 AC ACK=

ta

Seq=1 0

loss
AC K =120

=100 A CK 0, 20 bytes data

Seq=9 2

, 8 by tes de

Temp.p/ Seq=92

dados

SendBase = 120

=100 AC K

AC

2 K=1

tempo

cenrio do ACK perdido

tempo

temporizao prematura,
3: Camada de Transporte 3b-5

time

ACKs cumulativos
3: Camada de Transporte 3b-6

TCP gerao de ACKs [RFCs 1122, 2581]


Evento
chegada de segmento em ordem sem lacunas, anteriores j reconhecidos chegada de segmento em ordem sem lacunas, um ACK retardado pendente chegada de segmento fora de ordem, com no. de seq. maior que esperado -> lacuna chegada de segmento que preenche a lacuna parcial ou completamente

TCP: Tempo de Resposta (RTT) e Temporizao


RTT_estimado = (1-x)* RTT_estimado + x*RTT_amostra
mdia corrente exponencialmente ponderada influncia de cada amostra diminui exponencialmente

Ao do receptor TCP
ACK retardado. Espera at 500ms p/ prx. segmento. Se no chegar segmento, envia ACK envia imediatamente um nico ACK cumulativo envia ACK duplicado, indicando no. de seq.do prximo byte esperado ACK imediato se segmento no incio da lacuna
3: Camada de Transporte 3b-7

com o tempo
valor tpico de x: 0.125

Para quanto deve-se ajustar o intervalo de temporizao ?

3: Camada de Transporte

3b-8

Exemplo de estimativa de RTT:


RTT: gaia.cs.umass.edu to fantasia.eurecom.fr
350

TCP: Tempo de Resposta (RTT) e Temporizao


Escolhendo o intervalo de temporizao
RTT_estimado mais uma margem de segurana variao grande em RTT_estimado

300

RTT (milliseconds)

250

-> margem de segurana maior Temporizao = RTT_estimado + 4*Desvio Desvio = (1-y)* Desvio + y*|RTT_amostra - RTT_estimado| (tipicamente, y = 0.25) Logo o intervalo de temporizao (timeout):
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106 time (seconnds) SampleRTT Estimated RTT

200

150

100

TimeoutInterval = EstimatedRTT + 4*DevRTT


3: Camada de Transporte 3b-9 3: Camada de Transporte 3b-10

TCP: Controle de Fluxo


controle de fluxo
remetente no esgotaria buffers do receptor por transmitir muito, ou muito rpidamente
RcvBuffer = tamanho do Buffer de recepo RcvWindow = espao vazio no Buffer

receptor: explicitamente avisa o remetente da quantidade de espao livre disponvel (muda dinamicamente) campo RcvWindow no segmento TCP remetente: mantm a quantidade de dados transmitidos, porm ainda no reconhecidos, menor que o valor mais recente de RcvWindow

Princpios de Controle de Congestionamento


Congestionamento:
informalmente: muitas fontes enviando muitos dados muito rapidamente para a rede poder tratar diferente de controle de fluxo! manifestaes: perda de pacotes (esgotamento de buffers em roteadores) longos atrasos (enfileiramento nos buffers dos roteadores) um dos 10 problemas mais importantes em redes!

3: Camada de Transporte 3b-12

buffering pelo receptor


3: Camada de Transporte 3b-11

Abordagens de controle de congestionamento


Duas abordagens amplas para controle de congestionamento: Controle de Controle de congestionamento congestionamento com apoio da rede: fim a fim :
no tem realimentao

TCP: Controle de Congestionamento


controle fim a fim (sem apoio da rede) taxa de transmisso limitada pela tamanho da janela de congestionamento, Congwin:

explcita pela rede congestionamento inferido das perdas, retardo observados pelo sistema terminal abordagem usada por TCP

roteadores realimentam as

estaes bit nico indicando congestionamento (SNA, DECbit, TCP/IP ECN, ATM) taxa explcita p/ envio pelo remetente

Congwin LastByteSent-LastByteAcked mim{CongWin, RcvWindow}

w segmentos, cada um c/ MSS bytes, enviados por RTT:


throughput = w * MSS Bytes/sec RTT
3: Camada de Transporte 3b-14

3: Camada de Transporte 3b-13

TCP: Controle de Congestionamento

TCP: Controle de Congestionamento


Como o emissor percebe o congestionamento?

sondagem para banda utilizvel:

duas fases

idealmente: transmitir o mais rpido possvel (Congwin o mximo possvel) sem perder pacotes. aumentar Congwin at sinais de congestionamento. Qdo TCP detecta congestionamento diminui Congwin, depois volta sondagem (aumento) novamente.

partida lenta evitar congestionamento

Evento de perda = timeout ou 3 acks repetidos O emissor TCP reduz a taxa (CongWin) aps um evento de perda.

variveis importantes:

Congwin threshold: define limiar entre fases de partida lenta, controle de congestionamento

Trs mecanismos de controle:


AADM (Aumento Aditivo, Decremento Multiplicativo) Partida lenta (slow start) Comportamento conservador aps eventos de timeout
3: Camada de Transporte 3b-16

3: Camada de Transporte 3b-15

TCP AADM
Aumento aditivo:

TCP: Partida lenta


Decremento multiplicativo:

aumenta janela em 1 em cada RTT sem perda


congestion window 24 Kbytes

diminui janela por fator de 2 aps um evento de perda

Quando a conexo comea, CongWin = 1 MSS


Exemplo: MSS = 500 bytes & RTT = 200 msec Taxa inicial = 20 kbps

16 Kbytes

Banda disponvel deve ser >> MSS/RTT

Desejvel aumentar essa taxa rapidamente.

8 Kbytes

Aumenta exponencialmente o tamanho da


time

Conexo TCP de longa durao


3: Camada de Transporte 3b-17

janela a cada RTT sem perda.


3: Camada de Transporte 3b-18

TCP: Partida lenta


Algoritmo Partida Lenta initializa: Congwin = 1 for (cada segmento c/ ACK) Congwin++ until (evento de perda OR CongWin > threshold)
RTT

Refinamento
Estao A Estao B
um segmen to

dois segm

entos

quqtro segm entos

Resumo: Taxa inicial lenta, mas cresce exponencialmente.

tempo

3: Camada de Transporte 3b-19

Aps 3 ACKs repetidos: CongWin cortada pela metade Em seguida, a janela cresce linearmente. Porm aps evento de timeout: CongWin ajustada para 1 MSS; A janela ento cresce exponencialmente At um valor limite (threshold), depois cresce linearmente.

Filosofia:

3 ACKs repetidos indicam capacidade da rede em entregar segmentos timeout antes de 3 ACKs repetidos mais alarmante

3: Camada de Transporte 3b-20

Refinamento (mais)
P:

Refinamento (mais)
14 congestion window size 12 (segments) 10 8 6 4 2 0 1

Quando o crescimento da janela deve passar de exponencial para linear?

Implementao:

Threshold varivel Na ocorrncia de evento de perda, Threshold ajustada para 1/2 de valor de CongWin imediatamente antes do evento de perda.
3: Camada de Transporte 3b-21

TCP Reno

R: quando CongWin chegar a 1/2 do seu valor antes do timeout.

threshold TCP Tahoe


2 3 4 5 6 7 8 9 10 11 12 13 14 15

Rounds deTransmisso Series1 Series2

3: Camada de Transporte 3b-22

Resumo: Controle Congestionamento TCP

Justeza do TCP
Meta de justeza: se N sesses TCP compartilham o mesmo enlace de gargalo, cada uma deve ganhar 1/N da capacidade do enlace
TCP conexo 1

Quando CongWin est abaixo do Threshold, o emissor se encontra na fase de slow-start, janela cresce exponenciamente. Quando CongWin est acima do Threshold, o emissor se encontra na fase de evitar congestionamento, janela cresce linearmente. Quando um triplo ACK repetido ocorre, Threshold ajustada para CongWin/2 and CongWin ajustada para Threshold. Quando ocorre timeout, Threshold ajustada para CongWin/2 and CongWin is set to 1 MSS.
3: Camada de Transporte 3b-23

TCP conexo 2

Roteador gargalo capacidade R


3: Camada de Transporte 3b-24

Por qu TCP justo?


Duas sesses concorrentes:
Aumento aditivo d gradiente de 1, enquanto vazo aumenta decremento multiplicativa diminui vazo proporcionalmente

TCP: modelagem de latncia


P: Quanto tempo custa para receber um objeto de um servidor WWW depois de enviar o pedido?
Estabelecimento de conexo

Notao, suposies:
Supomos um enlace entre cliente e

R
Vazo da conexo 2

compartilhamento igual da banda

perda: diminui janela por fator de 2 evitar congestionamento: aumento aditivo perda: diminui janela por fator de 2 evitar congestionamento: aumento aditivo

TCP retardo de transferncia de dados

Dois casos a considerar:

servidor de taxa R Supomos: janela de congestionamento fixo, W segmentos S: MSS (bits) O: tamanho do objeto (bits) sem retransmisses (sem perdas, sem erros)

WS/R > RTT + S/R: ACK do primeiro segmento na janela

chega antes de enviar todos dados na janela os dados na janela

Vazo da conexo 1

R
3: Camada de Transporte 3b-25

WS/R < RTT + S/R: aguarda ACK depois de enviar todos


3: Camada de Transporte 3b-26

TCP: modelagem de latncia

TCP: modelagem de latncia: partida lenta


K:= O/WS
Agora supomos que a janela cresce la partida lenta. A latncia de um objeto de tamanho O :

Latency = 2 RTT +

O S S + P RTT + ( 2 P 1) R R R

onde P o nmero de vezes que o TCP fica ocioso no servidor:

P = min{Q, K 1}
- onde Q o nmero de vezes que o servidor pararia se o objeto for de tamanho infinito.

Caso 1: latncia = 2RTT + O/R

Caso 2: latncia = 2RTT + O/R + (K-1)[S/R + RTT - WS/R]


3: Camada de Transporte 3b-27

- e K o nmero de janelas que cobrem o objeto.

3: Camada de Transporte 3b-28

TCP: modelagem de latncia: partida lenta (cont.)


Exemplo: O/S = 15 segmentos K = 4 janelas Q=2 P = mn{K-1,Q} = 2 Servidor para P=2 vezes.
third window = 4S/R initiate TCP connection

TCP: modelagem de latncia: partida lenta (cont.)


S + RTT = time from when server starts to send segment R until server receives acknowledgement

request object

first window = S/R second window = 2S/R

initiate TCP connection

RTT

2 k 1

S = time to transmit the kth window R


+

request object

first window = S/R second window = 2S/R

S S + RTT 2k 1 = stall time after the kth window R R

RTT

third window = 4S/R

fourth window = 8S/R

latency =
object delivered time at client time at server complete transmission

P O + 2 RTT + stallTime p R p =1

fourth window = 8S/R

P O S S + 2 RTT + [ + RTT 2k 1 ] R R k =1 R S S O = + 2 RTT + P[ RTT + ] ( 2 P 1) R R R

object delivered time at client time at server

complete transmission

3: Camada de Transporte 3b-29

3: Camada de Transporte 3b-30

You might also like