infra-estrutura de comunicação (if678)pasg/if678/modulo-3.pdf · p1 aplicação transporte rede...

114
Camada Transporte 3-1 Infra-Estrutura de Comunicação (IF678) Módulo III Fonte: kurose Adaptações : Prof. Paulo Gonçalves [email protected] CIn/UFPE

Upload: others

Post on 18-Jul-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-1

Infra-Estrutura de Comunicaccedilatildeo (IF678)

Moacutedulo III

Fonte kurose Adaptaccedilotildees Prof Paulo Gonccedilalves

pasgcinufpebr CInUFPE

Camada Transporte 3-2

Moacutedulo 3 Camada Transporte

Nossos objetivos

Compreender os princiacutepios por traacutes dos serviccedilos de transporte multiplexaccedilatildeodemulti

plexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Aprender sobre os protocolos da camada transporte na Internet UDP transporte natildeo-

orientado agrave conexatildeo

TCP transporte orientado agrave conexatildeo

Controle de congestionamento do TCP

Camada Transporte 3-3

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-4

Serviccedilos e Protocolos de Transporte

provecircem comunicaccedilatildeo loacutegica entre processos aplicativos executando em diferente hosts

Protocolos de transporte ldquorodamrdquo em end systems Lado emissor quebra

mensagens da aplicaccedilatildeo em segmentos que satildeo passados agrave camada de rede

Lado receptor remonta segmentos em mensagens e os passa agrave camada aplicaccedilatildeo

mais de um protocolo de transporte disponiacutevel para as aplicaccedilotildees Internet TCP e UDP

aplicaccedilatildeo transporte

rede enlace fiacutesica

aplicaccedilatildeo transporte

rede enlace fiacutesica

rede

enlace fiacutesica

rede

enlace fiacutesica

rede

enlace fiacutesica

rede

enlace fiacutesica

rede

enlace fiacutesica

Camada Transporte 3-5

CamadaTransporte vs Camada de Rede

Camada de rede comunicaccedilatildeo loacutegica entre hosts

Camada transporte comunicaccedilatildeo loacutegica entre processos Conta com (e melhora)

serviccedilos da camada de rede

analogia

12 crianccedilas enviando cartas agrave 12 crianccedilas

processos = crianccedilas

mensagens da aplic= cartas em envelopes

hosts = casas

Protocolo de transporte = Ana e Bill

Protocolo da camada de rede = serviccedilo postal

Camada Transporte 3-6

Protocolos da camada transporte da Internet

Entrega confiaacutevel em ordem (TCP) Controle de

congestionamento

Controle de fluxo

Estabelecimento de conexatildeo

Entrega natildeo-confiaacutevel sem garantias de ordenaccedilatildeo UDP Extensotildees ldquosem

ornamentosrdquo ao serviccedilo de melhor esforccedilo (best-effort) IP

serviccedilos indisponiacuteveis Garantias de atraso

Garantias de banda passante

aplicaccedilatildeo transporte

rede enlace fiacutesica

aplicaccedilatildeo transporte

rede enlace fiacutesica

rede

enlace fiacutesica

rede

enlace fiacutesica

rede

enlace fiacutesica

rede

enlace fiacutesica

rede

enlace fiacutesica

Camada Transporte 3-7

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-8

Multiplexaccedilatildeodemultiplexaccedilatildeo

aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

P1 aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

P2 P3 P4 P1

host 1 host 2 host 3

= processo = socket

Entrega dos segmentos recebidos aos sockets corretos

Demultiplexaccedilatildeo no host receptor Coletar dados dos vaacuterios sockets adiciona cabeccedilalho aos dados (mais tarde usado para demultiplexaccedilatildeo)

Multiplexaccedilatildeo no host emissor

Camada Transporte 3-9

Como a demultiplexaccedilatildeo funciona host recebe datagramas IP

cada datagrama possui endereccedilo IP fonte endereccedilo IP de destino

cada datagrama carrega 1 segmento da camada transporte

cada segmento possui nuacutemero de porta de origem e de porta de destino

host usa os endereccedilos IP amp nuacutemero das portas para enviar segmento ao socket adequado

porta de origem porta de destino

32 bits

Dados da aplicaccedilatildeo

(mensagem)

outros campos do cabeccedilalho

Formato do segmento TCPUDP

Camada Transporte 3-10

demultiplexaccedilatildeo com UDP

Criar sockets com portas respectivas

DatagramSocket mySocket1 = new

DatagramSocket(99111)

DatagramSocket mySocket2 = new

DatagramSocket(99222)

Socket UDP identificado pela tupla

(endereccedilo IP de destino nuacutemero da porta de destino)

Quando um host recebe um segmento UDP Verifica o nuacutemero da porta de

destino no segmento

direciona o segmento UDP para o socket com o nuacutemero da porta especificado

Datagramas IP com endereccedilo IP fonte diferentes eou nuacutemeros de porta de origem diferentes satildeo direcionados ao mesmo socket

Camada Transporte 3-11

demux com UDP (cont)

DatagramSocket serverSocket = new DatagramSocket(6428)

cliente IPB

P2

cliente IP A

P1 P1 P3

servidor IP C

SP 6428

DP 9157

SP 9157

DP 6428

SP 6428

DP 5775

SP 5775

DP 6428

SP provecirc uma espeacutecie de ldquoendereccedilo de retornordquo

SP source port (porta de origem) DP destination port (porta de destino)

Camada Transporte 3-12

Demux com TCP

Socket TCP identificado pela tupla quaacutedrupla Endereccedilo IP de origem

Nuacutemero da porta de origem

Endereccedilo IP de destino

Nuacutemero da porta de destino

Host receptor usa todos esses quatro valores para enviar o segmento ao socket apropriado

host servidor pode suportar diversos sockets TCP simultaneamente cada socket eacute identificado

por sua prooacutepria tupla quaacutedrupla

Servidores Web possuem sockets diferentes para cada cliente conectado HTTP natildeo-persistente teraacute

diferentes sockets para cada requisiccedilatildeo

Camada Transporte 3-13

demux (cont) com TCP

cliente IPB

P1

cliente IP A

P1 P2 P4

servidor IP C

SP 9157

DP 80

SP 9157

DP 80

P5 P6 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Camada Transporte 3-14

Demux com TCP Web Server com Threads

Client IPB

P1

client IP A

P1 P2

server IP C

SP 9157

DP 80

SP 9157

DP 80

P4 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Camada Transporte 3-15

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-16

UDP User Datagram Protocol [RFC 768]

Protocolo Internet de transporte ldquosem ornamentosrdquo e com ldquoelementos baacutesicosrdquo

Serviccedilo ldquobest effortrdquo segmentos UDP podem ser

perdidos

entregues fora de ordem agrave aplicaccedilatildeo

natildeo-orientado agrave conexatildeo sem handshaking entre

o emissor e receptor UDP

Cada segmento UDP eacute tratado de forma independente dos outros

Por que existe o UDP Sem estabelecimento de

conexatildeo (que pode adicionar atraso)

simples sem estado de conexatildeo no emissor nem no receptor

Cabeccedilalho do segmento pequeno

nenhum controle de congestionamento

Camada Transporte 3-17

UDP mais hellip

Frequumlentemente usado para aplicaccedilotildees multimiacutedia de streaming Tolerante agrave perdas Sensiacutevel agrave taxa de

dados

Outros usos do UDP DNS SNMP

Transferecircncia confiaacutevel sobre UDP confiabilidade adicionada na camada aplicaccedilatildeo Recuperaccedilatildeo de erros

especiacutefica da camada aplicaccedilatildeo

porta de origem porta de destino

32 bits

Dados da aplicaccedilatildeo

(mensagem)

Formato do segmento UDP

tamanho checksum

tamanho em bytes do

segmento UDP incluindo

o cabeccedilalho

Camada Transporte 3-18

Checksum UDP

Emissor Trata o conteuacutedo de

segmentos como uma sequumlecircncia de inteiros de 16 bits

checksum adiccedilatildeo (soma complemento 1) do conteuacutedo do segmento

Emissor coloca o valor do checksum no campo checksum do UDP

Receptor computa o checksum do

segmento recebido

Verifica se o checksum computado bate com o valor informado no campo checksum

Natildeo - erro detectado

Sim - nenhum erro detectado Mas pode haver erros Mais em breve hellip

Objetivo detectar ldquoerrosrdquo (eg bits trocados) no segmento transmitido

Camada Transporte 3-19

Exemplo de Checksum Internet Nota

Ao adicionar nuacutemeros natildeo esquecer do ldquovai umrdquo

Examplo adiccedilatildeo de dois inteiros de 16 bits

1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1

wraparound

soma

checksum

Camada Transporte 3-20

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-21

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace

Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-22

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-23

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-24

Transferecircncia confiaacutevel de dados introduccedilatildeo hellip

lado emissor

lado receptor

rdt_send() chamado pela camada superior (eg aplic) Passagem de

dados da camada superior

udt_send() chamado por rdt para transferir pacote pelo canal

natildeo-confiaacutevel ao receptor

rdt_rcv() chamado quando pacote chega no lado receptor do canal

deliver_data() chamado pelo rdt para enviar dados agrave camada superior

Camada Transporte 3-25

Transferecircncia confiaacutevel de dados introduccedilatildeo hellip Iremos

Desenvolver incrementalmente os lados receptor e emissor do protocolo de transferecircncia confiaacutevel de dados (rdt)

considere somente transferecircncia de dados unidirecional mas informaccedilotildees de controle transitaratildeo em ambos

sentidos

usar maacutequinas de estado finitas (FSM) para especificar o emissor e o receptor

estado 1

estado 2

Evento causando transiccedilatildeo de estado

Accedilotildees tomadas na transiccedilatildeo de estados

estado quando estiver neste ldquoestadordquo

proacuteximo estado eacute unicamente

determinado pelo proacuteximo evento

evento

accedilotildees

Camada Transporte 3-26

Rdt10 transferecircncia confiaacutevel sobre um canal confiaacutevel Canal de base perfeitamente confiaacutevel

Nenhum erro nos bits

Nenhuma perda de pacotes

FSMs separadas para emissor e receptor Emissor envia dados no canal

Receptor lecirc dados do canal

Wait for

call from

above packet = make_pkt(data)

udt_send(packet)

rdt_send(data)

extract (packetdata)

deliver_data(data)

Wait for

call from

below

rdt_rcv(packet)

emissor receptor

Camada Transporte 3-27

Rdt20 canal com erros em bits

Canal de base pode trocar bits dos pacotes checksum para detectar erros nos bits

a questatildeo como se recuperar de erros acknowledgements (ACKs) receptor informa

explicitamente ao emissor que pacote recebido estaacute OK

negative acknowledgements (NAKs) receptor informa explicitamente ao emissor que o pacote possui erros

Emissor retransmite pacote ao receber um NAK

novos mecanismos no rdt20 (aleacutem de rdt10) Detecccedilatildeo de erro

Feedback do receptor msgs de controle (ACKNAK) do recptor para o emissor

Camada Transporte 3-28

rdt20 especificaccedilatildeo FSM

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below emissor

receptor rdt_send(data)

Camada Transporte 3-29

rdt20 operaccedilatildeo na ausecircncia de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-30

rdt20 cenaacuterio na presenccedila de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-31

rdt20 tem um problema fatal

O que acontece se um ACKNAK eacute corrompido

emissor natildeo sabe o que aconteceu no receptor

Natildeo pode somente retransmitir possibilidade de duplicaccedilatildeo de pacotes

Tratando duplicaccedilotildees Emissor retransmitepacote

atual se ACKNAK eacute corrompido

Emissor adiciona nuacutemeros de sequumlecircncia a cada pacote

Receptor descarta (natildeo entrega para a camada superior) pacotes duplicados

Emissor envia 1 pacote e entatildeo aguarda pela Resposta do receptor

stop and wait

Camada Transporte 3-32

rdt21 emissor trata ACKNAKs corrompidos

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

Wait for

ACK or

NAK 0 udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

Wait for

call 1 from

above

Wait for

ACK or

NAK 1

L L

Camada Transporte 3-33

rdt21 receptor trata ACKNAKs corrompidos

Wait for

0 from

below

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq0(rcvpkt)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

Wait for

1 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq0(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq1(rcvpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

Camada Transporte 3-34

rdt21 discussatildeo

Emissor

de seq adicionado a pkt

2 ‟s de seq (01) satildeo suficientes Por que

Deve verificar se ACKNAK recebido estaacute corrompido

2x mais estados state deve ldquorecordarrdquo

se pacote ldquoatualrdquo possui de seq 0 ou 1

Receptor

Deve verificar se pacote recebido eacute um duplicado estado indica se de

seq do pacote esperado eacute 0 ou 1

nota receptor natildeo pode saber se seu uacuteltimo ACKNAK foi recebido OK no emissor

Camada Transporte 3-35

rdt22 um protocolo sem NAKs

Igual ao rdt21 mas usando ACKs somente

Ao inveacutes de NAK receptor envia ACK do uacuteltimo pacote recebido corretamente (OK) Receptor deve incluir explicitamente o de seq do pacote

sendo confirmado

ACK duplicado no emissor resulta na mesma accedilatildeo como para o NAK retransmiccedilatildeo do pacote atual

Camada Transporte 3-36

rdt22 fragmentos do emissor e receptor

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

Wait for

ACK

0

Fragmento da FSM do emissor

Wait for

0 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK1 chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

(corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento da FSM Do receptor

Camada Transporte 3-37

rdt30 canais com erros e perdas

Nova hipoacutetese canal de base pode agora perder pacotes (dados ou ACKs) checksum de seq

ACKs retransmissotildees ajudaratildeo mas natildeo seratildeo suficientes

Abordagem emissor aguarda um tempo ldquorazoaacutevelrdquo a recepccedilatildeo de ACKs

retransmite se nenhum ACK eacute recebido neste tempo

se pkt (ou ACK) apenas atrasado (natildeo foi perdido)

retransmissatildeo causaraacute duplicaccedilatildeo mas uso de de seq tratam isso

receptor deve especificar de seq do pacote sendo confirmado

requer temporizador

Camada Transporte 3-38

Emissor rdt30

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

Wait

for

ACK0

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

Wait for

call 1 from

above

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt0) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt1)

stop_timer

stop_timer

udt_send(sndpkt)

start_timer

timeout

udt_send(sndpkt)

start_timer

timeout

rdt_rcv(rcvpkt)

Wait for

call 0from

above

Wait

for

ACK1

L

rdt_rcv(rcvpkt)

L

L

L

Camada Transporte 3-39

rdt30 em accedilatildeo

Camada Transporte 3-40

rdt30 em accedilatildeo

Camada Transporte 3-41

Desempenho do rdt30

rdt30 funciona mas desempenho eacute ruim examplo enlace de 1 Gbps 15 ms de atraso

de propagaccedilatildeo fim-a-fim pacote de 1KB

T transmit = 8kbpkt

109 bsec = 8 microsec

U sender utilizaccedilatildeo fraccedilatildeo do tempo em que o emissor estaacute ocupado enviando

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R =

L (tamanho do pacote bits) R (taxa de transmissatildeo bps)

=

Pacote de 1KB a cada 30 msec -gt 33kBsec de vazatildeo em um enlace de 1 Gbps

O protocolo de rede limita o uso de recursos fiacutesicos

= 0027

Camada Transporte 3-42

rdt30 funcionamento do stop-and-wait

Primeiro bit do pacote transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit do pkt transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega ACK

envidado

ACK chega envia proacuteximo

pacote t = RTT + L R

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R = = 0027

Camada Transporte 3-43

Protocolos com Pipeline

Pipelining emissor permite muacuteltiplos pacotes enviados e que ainda natildeo foram confirmados range do nuacutemero de sequumlecircncia deve ser aumentado

ldquobufferizaccedilatildeordquo no emissor eou receptor

2 formas geneacutericas de protocolos pipeline go-Back-N selective repeat (SR)

Camada Transporte 3-44

Pipelining aumento da utilizaccedilatildeo

Primeiro bit do pkt transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega envia ACK

ACK chega envia proacuteximo

pacote t = RTT + L R

Uacuteltimo bit do 2o pacote chega envia ACK

Uacuteltimo bit do 3o pacote chega envia

ACK

U sender

= 024

30008 = 00008

microseconds

3 L R

RTT + L R =

Utilizaccedilatildeo aumenta de um fator de 3 (neste

exemplo)

= 008

Camada Transporte 3-45

Go-Back-N Emissor de seq de k bits no cabeccedilalho do pacote

ldquojanelardquo de ateacute N consecutivos pacotes natildeo confirmados permitida

ACK(n) confirma todos os pacotes ateacute o n - ldquoACK cumulativordquo

Pode receber ACKs duplicados ACKs (veja receptor)

Temporizador para cada pacote enviado

timeout(n) retransmite pkt n e todos pacotes com s de seq maiores que estatildeo dentro da janela

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Camada Transporte 3-46

GBN FSM do emissor estendida

Wait start_timer

udt_send(sndpkt[base])

udt_send(sndpkt[base+1])

hellip

udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

if (nextseqnum lt base+N)

sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)

udt_send(sndpkt[nextseqnum])

if (base == nextseqnum)

start_timer

nextseqnum++

else

refuse_data(data)

base = getacknum(rcvpkt)+1

If (base == nextseqnum)

stop_timer

else

start_timer

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

base=1

nextseqnum=1

rdt_rcv(rcvpkt)

ampamp corrupt(rcvpkt)

L

Somente ACKs satildeo usados (sem NAKs)

Camada Transporte 3-47

GBN FSM do receptor estendida

ACK-only sempre envia ACK para pacote recebido ldquona ordemrdquo corretamente com de seq mais elevado Pode gerar ACKs duplicados Precisa recordar somente o de seq esperado

(expectedseqnum)

Pkt fora de ordem descarta (natildeo armazena) -gt receptor natildeo possui buffer Re-ACK pkt com o de seq mais elevado e em ordem

Wait

udt_send(sndpkt)

default

rdt_rcv(rcvpkt)

ampamp notcurrupt(rcvpkt)

ampamp hasseqnum(rcvpktexpectedseqnum)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(expectedseqnumACKchksum)

udt_send(sndpkt)

expectedseqnum++

expectedseqnum=1

sndpkt =

make_pkt(expectedseqnumACKchksum)

L

Camada Transporte 3-48

GBN em accedilatildeo

Tamanho da janela = 4

Camada Transporte 3-49

SR - Selective Repeat

Receptor confirma individualmente cada pkt recebido corretamente armazena pkts quando necessaacuterio para eventual envio

de pacotes ordenados agrave camada superior

Emissor reenvia somente pkts para os quais o ACK natildeo foi recebido Emissor possui temporizador para cada pacote natildeo

confirmado (unACKed pkt)

Janela do emissor N consecutivos s de seq

Novamente limita s de seq de enviados pkts natildeo confirmados (unACKed pkts)

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 2: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-2

Moacutedulo 3 Camada Transporte

Nossos objetivos

Compreender os princiacutepios por traacutes dos serviccedilos de transporte multiplexaccedilatildeodemulti

plexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Aprender sobre os protocolos da camada transporte na Internet UDP transporte natildeo-

orientado agrave conexatildeo

TCP transporte orientado agrave conexatildeo

Controle de congestionamento do TCP

Camada Transporte 3-3

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-4

Serviccedilos e Protocolos de Transporte

provecircem comunicaccedilatildeo loacutegica entre processos aplicativos executando em diferente hosts

Protocolos de transporte ldquorodamrdquo em end systems Lado emissor quebra

mensagens da aplicaccedilatildeo em segmentos que satildeo passados agrave camada de rede

Lado receptor remonta segmentos em mensagens e os passa agrave camada aplicaccedilatildeo

mais de um protocolo de transporte disponiacutevel para as aplicaccedilotildees Internet TCP e UDP

aplicaccedilatildeo transporte

rede enlace fiacutesica

aplicaccedilatildeo transporte

rede enlace fiacutesica

rede

enlace fiacutesica

rede

enlace fiacutesica

rede

enlace fiacutesica

rede

enlace fiacutesica

rede

enlace fiacutesica

Camada Transporte 3-5

CamadaTransporte vs Camada de Rede

Camada de rede comunicaccedilatildeo loacutegica entre hosts

Camada transporte comunicaccedilatildeo loacutegica entre processos Conta com (e melhora)

serviccedilos da camada de rede

analogia

12 crianccedilas enviando cartas agrave 12 crianccedilas

processos = crianccedilas

mensagens da aplic= cartas em envelopes

hosts = casas

Protocolo de transporte = Ana e Bill

Protocolo da camada de rede = serviccedilo postal

Camada Transporte 3-6

Protocolos da camada transporte da Internet

Entrega confiaacutevel em ordem (TCP) Controle de

congestionamento

Controle de fluxo

Estabelecimento de conexatildeo

Entrega natildeo-confiaacutevel sem garantias de ordenaccedilatildeo UDP Extensotildees ldquosem

ornamentosrdquo ao serviccedilo de melhor esforccedilo (best-effort) IP

serviccedilos indisponiacuteveis Garantias de atraso

Garantias de banda passante

aplicaccedilatildeo transporte

rede enlace fiacutesica

aplicaccedilatildeo transporte

rede enlace fiacutesica

rede

enlace fiacutesica

rede

enlace fiacutesica

rede

enlace fiacutesica

rede

enlace fiacutesica

rede

enlace fiacutesica

Camada Transporte 3-7

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-8

Multiplexaccedilatildeodemultiplexaccedilatildeo

aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

P1 aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

P2 P3 P4 P1

host 1 host 2 host 3

= processo = socket

Entrega dos segmentos recebidos aos sockets corretos

Demultiplexaccedilatildeo no host receptor Coletar dados dos vaacuterios sockets adiciona cabeccedilalho aos dados (mais tarde usado para demultiplexaccedilatildeo)

Multiplexaccedilatildeo no host emissor

Camada Transporte 3-9

Como a demultiplexaccedilatildeo funciona host recebe datagramas IP

cada datagrama possui endereccedilo IP fonte endereccedilo IP de destino

cada datagrama carrega 1 segmento da camada transporte

cada segmento possui nuacutemero de porta de origem e de porta de destino

host usa os endereccedilos IP amp nuacutemero das portas para enviar segmento ao socket adequado

porta de origem porta de destino

32 bits

Dados da aplicaccedilatildeo

(mensagem)

outros campos do cabeccedilalho

Formato do segmento TCPUDP

Camada Transporte 3-10

demultiplexaccedilatildeo com UDP

Criar sockets com portas respectivas

DatagramSocket mySocket1 = new

DatagramSocket(99111)

DatagramSocket mySocket2 = new

DatagramSocket(99222)

Socket UDP identificado pela tupla

(endereccedilo IP de destino nuacutemero da porta de destino)

Quando um host recebe um segmento UDP Verifica o nuacutemero da porta de

destino no segmento

direciona o segmento UDP para o socket com o nuacutemero da porta especificado

Datagramas IP com endereccedilo IP fonte diferentes eou nuacutemeros de porta de origem diferentes satildeo direcionados ao mesmo socket

Camada Transporte 3-11

demux com UDP (cont)

DatagramSocket serverSocket = new DatagramSocket(6428)

cliente IPB

P2

cliente IP A

P1 P1 P3

servidor IP C

SP 6428

DP 9157

SP 9157

DP 6428

SP 6428

DP 5775

SP 5775

DP 6428

SP provecirc uma espeacutecie de ldquoendereccedilo de retornordquo

SP source port (porta de origem) DP destination port (porta de destino)

Camada Transporte 3-12

Demux com TCP

Socket TCP identificado pela tupla quaacutedrupla Endereccedilo IP de origem

Nuacutemero da porta de origem

Endereccedilo IP de destino

Nuacutemero da porta de destino

Host receptor usa todos esses quatro valores para enviar o segmento ao socket apropriado

host servidor pode suportar diversos sockets TCP simultaneamente cada socket eacute identificado

por sua prooacutepria tupla quaacutedrupla

Servidores Web possuem sockets diferentes para cada cliente conectado HTTP natildeo-persistente teraacute

diferentes sockets para cada requisiccedilatildeo

Camada Transporte 3-13

demux (cont) com TCP

cliente IPB

P1

cliente IP A

P1 P2 P4

servidor IP C

SP 9157

DP 80

SP 9157

DP 80

P5 P6 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Camada Transporte 3-14

Demux com TCP Web Server com Threads

Client IPB

P1

client IP A

P1 P2

server IP C

SP 9157

DP 80

SP 9157

DP 80

P4 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Camada Transporte 3-15

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-16

UDP User Datagram Protocol [RFC 768]

Protocolo Internet de transporte ldquosem ornamentosrdquo e com ldquoelementos baacutesicosrdquo

Serviccedilo ldquobest effortrdquo segmentos UDP podem ser

perdidos

entregues fora de ordem agrave aplicaccedilatildeo

natildeo-orientado agrave conexatildeo sem handshaking entre

o emissor e receptor UDP

Cada segmento UDP eacute tratado de forma independente dos outros

Por que existe o UDP Sem estabelecimento de

conexatildeo (que pode adicionar atraso)

simples sem estado de conexatildeo no emissor nem no receptor

Cabeccedilalho do segmento pequeno

nenhum controle de congestionamento

Camada Transporte 3-17

UDP mais hellip

Frequumlentemente usado para aplicaccedilotildees multimiacutedia de streaming Tolerante agrave perdas Sensiacutevel agrave taxa de

dados

Outros usos do UDP DNS SNMP

Transferecircncia confiaacutevel sobre UDP confiabilidade adicionada na camada aplicaccedilatildeo Recuperaccedilatildeo de erros

especiacutefica da camada aplicaccedilatildeo

porta de origem porta de destino

32 bits

Dados da aplicaccedilatildeo

(mensagem)

Formato do segmento UDP

tamanho checksum

tamanho em bytes do

segmento UDP incluindo

o cabeccedilalho

Camada Transporte 3-18

Checksum UDP

Emissor Trata o conteuacutedo de

segmentos como uma sequumlecircncia de inteiros de 16 bits

checksum adiccedilatildeo (soma complemento 1) do conteuacutedo do segmento

Emissor coloca o valor do checksum no campo checksum do UDP

Receptor computa o checksum do

segmento recebido

Verifica se o checksum computado bate com o valor informado no campo checksum

Natildeo - erro detectado

Sim - nenhum erro detectado Mas pode haver erros Mais em breve hellip

Objetivo detectar ldquoerrosrdquo (eg bits trocados) no segmento transmitido

Camada Transporte 3-19

Exemplo de Checksum Internet Nota

Ao adicionar nuacutemeros natildeo esquecer do ldquovai umrdquo

Examplo adiccedilatildeo de dois inteiros de 16 bits

1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1

wraparound

soma

checksum

Camada Transporte 3-20

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-21

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace

Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-22

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-23

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-24

Transferecircncia confiaacutevel de dados introduccedilatildeo hellip

lado emissor

lado receptor

rdt_send() chamado pela camada superior (eg aplic) Passagem de

dados da camada superior

udt_send() chamado por rdt para transferir pacote pelo canal

natildeo-confiaacutevel ao receptor

rdt_rcv() chamado quando pacote chega no lado receptor do canal

deliver_data() chamado pelo rdt para enviar dados agrave camada superior

Camada Transporte 3-25

Transferecircncia confiaacutevel de dados introduccedilatildeo hellip Iremos

Desenvolver incrementalmente os lados receptor e emissor do protocolo de transferecircncia confiaacutevel de dados (rdt)

considere somente transferecircncia de dados unidirecional mas informaccedilotildees de controle transitaratildeo em ambos

sentidos

usar maacutequinas de estado finitas (FSM) para especificar o emissor e o receptor

estado 1

estado 2

Evento causando transiccedilatildeo de estado

Accedilotildees tomadas na transiccedilatildeo de estados

estado quando estiver neste ldquoestadordquo

proacuteximo estado eacute unicamente

determinado pelo proacuteximo evento

evento

accedilotildees

Camada Transporte 3-26

Rdt10 transferecircncia confiaacutevel sobre um canal confiaacutevel Canal de base perfeitamente confiaacutevel

Nenhum erro nos bits

Nenhuma perda de pacotes

FSMs separadas para emissor e receptor Emissor envia dados no canal

Receptor lecirc dados do canal

Wait for

call from

above packet = make_pkt(data)

udt_send(packet)

rdt_send(data)

extract (packetdata)

deliver_data(data)

Wait for

call from

below

rdt_rcv(packet)

emissor receptor

Camada Transporte 3-27

Rdt20 canal com erros em bits

Canal de base pode trocar bits dos pacotes checksum para detectar erros nos bits

a questatildeo como se recuperar de erros acknowledgements (ACKs) receptor informa

explicitamente ao emissor que pacote recebido estaacute OK

negative acknowledgements (NAKs) receptor informa explicitamente ao emissor que o pacote possui erros

Emissor retransmite pacote ao receber um NAK

novos mecanismos no rdt20 (aleacutem de rdt10) Detecccedilatildeo de erro

Feedback do receptor msgs de controle (ACKNAK) do recptor para o emissor

Camada Transporte 3-28

rdt20 especificaccedilatildeo FSM

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below emissor

receptor rdt_send(data)

Camada Transporte 3-29

rdt20 operaccedilatildeo na ausecircncia de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-30

rdt20 cenaacuterio na presenccedila de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-31

rdt20 tem um problema fatal

O que acontece se um ACKNAK eacute corrompido

emissor natildeo sabe o que aconteceu no receptor

Natildeo pode somente retransmitir possibilidade de duplicaccedilatildeo de pacotes

Tratando duplicaccedilotildees Emissor retransmitepacote

atual se ACKNAK eacute corrompido

Emissor adiciona nuacutemeros de sequumlecircncia a cada pacote

Receptor descarta (natildeo entrega para a camada superior) pacotes duplicados

Emissor envia 1 pacote e entatildeo aguarda pela Resposta do receptor

stop and wait

Camada Transporte 3-32

rdt21 emissor trata ACKNAKs corrompidos

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

Wait for

ACK or

NAK 0 udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

Wait for

call 1 from

above

Wait for

ACK or

NAK 1

L L

Camada Transporte 3-33

rdt21 receptor trata ACKNAKs corrompidos

Wait for

0 from

below

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq0(rcvpkt)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

Wait for

1 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq0(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq1(rcvpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

Camada Transporte 3-34

rdt21 discussatildeo

Emissor

de seq adicionado a pkt

2 ‟s de seq (01) satildeo suficientes Por que

Deve verificar se ACKNAK recebido estaacute corrompido

2x mais estados state deve ldquorecordarrdquo

se pacote ldquoatualrdquo possui de seq 0 ou 1

Receptor

Deve verificar se pacote recebido eacute um duplicado estado indica se de

seq do pacote esperado eacute 0 ou 1

nota receptor natildeo pode saber se seu uacuteltimo ACKNAK foi recebido OK no emissor

Camada Transporte 3-35

rdt22 um protocolo sem NAKs

Igual ao rdt21 mas usando ACKs somente

Ao inveacutes de NAK receptor envia ACK do uacuteltimo pacote recebido corretamente (OK) Receptor deve incluir explicitamente o de seq do pacote

sendo confirmado

ACK duplicado no emissor resulta na mesma accedilatildeo como para o NAK retransmiccedilatildeo do pacote atual

Camada Transporte 3-36

rdt22 fragmentos do emissor e receptor

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

Wait for

ACK

0

Fragmento da FSM do emissor

Wait for

0 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK1 chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

(corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento da FSM Do receptor

Camada Transporte 3-37

rdt30 canais com erros e perdas

Nova hipoacutetese canal de base pode agora perder pacotes (dados ou ACKs) checksum de seq

ACKs retransmissotildees ajudaratildeo mas natildeo seratildeo suficientes

Abordagem emissor aguarda um tempo ldquorazoaacutevelrdquo a recepccedilatildeo de ACKs

retransmite se nenhum ACK eacute recebido neste tempo

se pkt (ou ACK) apenas atrasado (natildeo foi perdido)

retransmissatildeo causaraacute duplicaccedilatildeo mas uso de de seq tratam isso

receptor deve especificar de seq do pacote sendo confirmado

requer temporizador

Camada Transporte 3-38

Emissor rdt30

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

Wait

for

ACK0

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

Wait for

call 1 from

above

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt0) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt1)

stop_timer

stop_timer

udt_send(sndpkt)

start_timer

timeout

udt_send(sndpkt)

start_timer

timeout

rdt_rcv(rcvpkt)

Wait for

call 0from

above

Wait

for

ACK1

L

rdt_rcv(rcvpkt)

L

L

L

Camada Transporte 3-39

rdt30 em accedilatildeo

Camada Transporte 3-40

rdt30 em accedilatildeo

Camada Transporte 3-41

Desempenho do rdt30

rdt30 funciona mas desempenho eacute ruim examplo enlace de 1 Gbps 15 ms de atraso

de propagaccedilatildeo fim-a-fim pacote de 1KB

T transmit = 8kbpkt

109 bsec = 8 microsec

U sender utilizaccedilatildeo fraccedilatildeo do tempo em que o emissor estaacute ocupado enviando

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R =

L (tamanho do pacote bits) R (taxa de transmissatildeo bps)

=

Pacote de 1KB a cada 30 msec -gt 33kBsec de vazatildeo em um enlace de 1 Gbps

O protocolo de rede limita o uso de recursos fiacutesicos

= 0027

Camada Transporte 3-42

rdt30 funcionamento do stop-and-wait

Primeiro bit do pacote transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit do pkt transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega ACK

envidado

ACK chega envia proacuteximo

pacote t = RTT + L R

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R = = 0027

Camada Transporte 3-43

Protocolos com Pipeline

Pipelining emissor permite muacuteltiplos pacotes enviados e que ainda natildeo foram confirmados range do nuacutemero de sequumlecircncia deve ser aumentado

ldquobufferizaccedilatildeordquo no emissor eou receptor

2 formas geneacutericas de protocolos pipeline go-Back-N selective repeat (SR)

Camada Transporte 3-44

Pipelining aumento da utilizaccedilatildeo

Primeiro bit do pkt transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega envia ACK

ACK chega envia proacuteximo

pacote t = RTT + L R

Uacuteltimo bit do 2o pacote chega envia ACK

Uacuteltimo bit do 3o pacote chega envia

ACK

U sender

= 024

30008 = 00008

microseconds

3 L R

RTT + L R =

Utilizaccedilatildeo aumenta de um fator de 3 (neste

exemplo)

= 008

Camada Transporte 3-45

Go-Back-N Emissor de seq de k bits no cabeccedilalho do pacote

ldquojanelardquo de ateacute N consecutivos pacotes natildeo confirmados permitida

ACK(n) confirma todos os pacotes ateacute o n - ldquoACK cumulativordquo

Pode receber ACKs duplicados ACKs (veja receptor)

Temporizador para cada pacote enviado

timeout(n) retransmite pkt n e todos pacotes com s de seq maiores que estatildeo dentro da janela

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Camada Transporte 3-46

GBN FSM do emissor estendida

Wait start_timer

udt_send(sndpkt[base])

udt_send(sndpkt[base+1])

hellip

udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

if (nextseqnum lt base+N)

sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)

udt_send(sndpkt[nextseqnum])

if (base == nextseqnum)

start_timer

nextseqnum++

else

refuse_data(data)

base = getacknum(rcvpkt)+1

If (base == nextseqnum)

stop_timer

else

start_timer

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

base=1

nextseqnum=1

rdt_rcv(rcvpkt)

ampamp corrupt(rcvpkt)

L

Somente ACKs satildeo usados (sem NAKs)

Camada Transporte 3-47

GBN FSM do receptor estendida

ACK-only sempre envia ACK para pacote recebido ldquona ordemrdquo corretamente com de seq mais elevado Pode gerar ACKs duplicados Precisa recordar somente o de seq esperado

(expectedseqnum)

Pkt fora de ordem descarta (natildeo armazena) -gt receptor natildeo possui buffer Re-ACK pkt com o de seq mais elevado e em ordem

Wait

udt_send(sndpkt)

default

rdt_rcv(rcvpkt)

ampamp notcurrupt(rcvpkt)

ampamp hasseqnum(rcvpktexpectedseqnum)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(expectedseqnumACKchksum)

udt_send(sndpkt)

expectedseqnum++

expectedseqnum=1

sndpkt =

make_pkt(expectedseqnumACKchksum)

L

Camada Transporte 3-48

GBN em accedilatildeo

Tamanho da janela = 4

Camada Transporte 3-49

SR - Selective Repeat

Receptor confirma individualmente cada pkt recebido corretamente armazena pkts quando necessaacuterio para eventual envio

de pacotes ordenados agrave camada superior

Emissor reenvia somente pkts para os quais o ACK natildeo foi recebido Emissor possui temporizador para cada pacote natildeo

confirmado (unACKed pkt)

Janela do emissor N consecutivos s de seq

Novamente limita s de seq de enviados pkts natildeo confirmados (unACKed pkts)

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 3: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-3

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-4

Serviccedilos e Protocolos de Transporte

provecircem comunicaccedilatildeo loacutegica entre processos aplicativos executando em diferente hosts

Protocolos de transporte ldquorodamrdquo em end systems Lado emissor quebra

mensagens da aplicaccedilatildeo em segmentos que satildeo passados agrave camada de rede

Lado receptor remonta segmentos em mensagens e os passa agrave camada aplicaccedilatildeo

mais de um protocolo de transporte disponiacutevel para as aplicaccedilotildees Internet TCP e UDP

aplicaccedilatildeo transporte

rede enlace fiacutesica

aplicaccedilatildeo transporte

rede enlace fiacutesica

rede

enlace fiacutesica

rede

enlace fiacutesica

rede

enlace fiacutesica

rede

enlace fiacutesica

rede

enlace fiacutesica

Camada Transporte 3-5

CamadaTransporte vs Camada de Rede

Camada de rede comunicaccedilatildeo loacutegica entre hosts

Camada transporte comunicaccedilatildeo loacutegica entre processos Conta com (e melhora)

serviccedilos da camada de rede

analogia

12 crianccedilas enviando cartas agrave 12 crianccedilas

processos = crianccedilas

mensagens da aplic= cartas em envelopes

hosts = casas

Protocolo de transporte = Ana e Bill

Protocolo da camada de rede = serviccedilo postal

Camada Transporte 3-6

Protocolos da camada transporte da Internet

Entrega confiaacutevel em ordem (TCP) Controle de

congestionamento

Controle de fluxo

Estabelecimento de conexatildeo

Entrega natildeo-confiaacutevel sem garantias de ordenaccedilatildeo UDP Extensotildees ldquosem

ornamentosrdquo ao serviccedilo de melhor esforccedilo (best-effort) IP

serviccedilos indisponiacuteveis Garantias de atraso

Garantias de banda passante

aplicaccedilatildeo transporte

rede enlace fiacutesica

aplicaccedilatildeo transporte

rede enlace fiacutesica

rede

enlace fiacutesica

rede

enlace fiacutesica

rede

enlace fiacutesica

rede

enlace fiacutesica

rede

enlace fiacutesica

Camada Transporte 3-7

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-8

Multiplexaccedilatildeodemultiplexaccedilatildeo

aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

P1 aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

P2 P3 P4 P1

host 1 host 2 host 3

= processo = socket

Entrega dos segmentos recebidos aos sockets corretos

Demultiplexaccedilatildeo no host receptor Coletar dados dos vaacuterios sockets adiciona cabeccedilalho aos dados (mais tarde usado para demultiplexaccedilatildeo)

Multiplexaccedilatildeo no host emissor

Camada Transporte 3-9

Como a demultiplexaccedilatildeo funciona host recebe datagramas IP

cada datagrama possui endereccedilo IP fonte endereccedilo IP de destino

cada datagrama carrega 1 segmento da camada transporte

cada segmento possui nuacutemero de porta de origem e de porta de destino

host usa os endereccedilos IP amp nuacutemero das portas para enviar segmento ao socket adequado

porta de origem porta de destino

32 bits

Dados da aplicaccedilatildeo

(mensagem)

outros campos do cabeccedilalho

Formato do segmento TCPUDP

Camada Transporte 3-10

demultiplexaccedilatildeo com UDP

Criar sockets com portas respectivas

DatagramSocket mySocket1 = new

DatagramSocket(99111)

DatagramSocket mySocket2 = new

DatagramSocket(99222)

Socket UDP identificado pela tupla

(endereccedilo IP de destino nuacutemero da porta de destino)

Quando um host recebe um segmento UDP Verifica o nuacutemero da porta de

destino no segmento

direciona o segmento UDP para o socket com o nuacutemero da porta especificado

Datagramas IP com endereccedilo IP fonte diferentes eou nuacutemeros de porta de origem diferentes satildeo direcionados ao mesmo socket

Camada Transporte 3-11

demux com UDP (cont)

DatagramSocket serverSocket = new DatagramSocket(6428)

cliente IPB

P2

cliente IP A

P1 P1 P3

servidor IP C

SP 6428

DP 9157

SP 9157

DP 6428

SP 6428

DP 5775

SP 5775

DP 6428

SP provecirc uma espeacutecie de ldquoendereccedilo de retornordquo

SP source port (porta de origem) DP destination port (porta de destino)

Camada Transporte 3-12

Demux com TCP

Socket TCP identificado pela tupla quaacutedrupla Endereccedilo IP de origem

Nuacutemero da porta de origem

Endereccedilo IP de destino

Nuacutemero da porta de destino

Host receptor usa todos esses quatro valores para enviar o segmento ao socket apropriado

host servidor pode suportar diversos sockets TCP simultaneamente cada socket eacute identificado

por sua prooacutepria tupla quaacutedrupla

Servidores Web possuem sockets diferentes para cada cliente conectado HTTP natildeo-persistente teraacute

diferentes sockets para cada requisiccedilatildeo

Camada Transporte 3-13

demux (cont) com TCP

cliente IPB

P1

cliente IP A

P1 P2 P4

servidor IP C

SP 9157

DP 80

SP 9157

DP 80

P5 P6 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Camada Transporte 3-14

Demux com TCP Web Server com Threads

Client IPB

P1

client IP A

P1 P2

server IP C

SP 9157

DP 80

SP 9157

DP 80

P4 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Camada Transporte 3-15

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-16

UDP User Datagram Protocol [RFC 768]

Protocolo Internet de transporte ldquosem ornamentosrdquo e com ldquoelementos baacutesicosrdquo

Serviccedilo ldquobest effortrdquo segmentos UDP podem ser

perdidos

entregues fora de ordem agrave aplicaccedilatildeo

natildeo-orientado agrave conexatildeo sem handshaking entre

o emissor e receptor UDP

Cada segmento UDP eacute tratado de forma independente dos outros

Por que existe o UDP Sem estabelecimento de

conexatildeo (que pode adicionar atraso)

simples sem estado de conexatildeo no emissor nem no receptor

Cabeccedilalho do segmento pequeno

nenhum controle de congestionamento

Camada Transporte 3-17

UDP mais hellip

Frequumlentemente usado para aplicaccedilotildees multimiacutedia de streaming Tolerante agrave perdas Sensiacutevel agrave taxa de

dados

Outros usos do UDP DNS SNMP

Transferecircncia confiaacutevel sobre UDP confiabilidade adicionada na camada aplicaccedilatildeo Recuperaccedilatildeo de erros

especiacutefica da camada aplicaccedilatildeo

porta de origem porta de destino

32 bits

Dados da aplicaccedilatildeo

(mensagem)

Formato do segmento UDP

tamanho checksum

tamanho em bytes do

segmento UDP incluindo

o cabeccedilalho

Camada Transporte 3-18

Checksum UDP

Emissor Trata o conteuacutedo de

segmentos como uma sequumlecircncia de inteiros de 16 bits

checksum adiccedilatildeo (soma complemento 1) do conteuacutedo do segmento

Emissor coloca o valor do checksum no campo checksum do UDP

Receptor computa o checksum do

segmento recebido

Verifica se o checksum computado bate com o valor informado no campo checksum

Natildeo - erro detectado

Sim - nenhum erro detectado Mas pode haver erros Mais em breve hellip

Objetivo detectar ldquoerrosrdquo (eg bits trocados) no segmento transmitido

Camada Transporte 3-19

Exemplo de Checksum Internet Nota

Ao adicionar nuacutemeros natildeo esquecer do ldquovai umrdquo

Examplo adiccedilatildeo de dois inteiros de 16 bits

1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1

wraparound

soma

checksum

Camada Transporte 3-20

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-21

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace

Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-22

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-23

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-24

Transferecircncia confiaacutevel de dados introduccedilatildeo hellip

lado emissor

lado receptor

rdt_send() chamado pela camada superior (eg aplic) Passagem de

dados da camada superior

udt_send() chamado por rdt para transferir pacote pelo canal

natildeo-confiaacutevel ao receptor

rdt_rcv() chamado quando pacote chega no lado receptor do canal

deliver_data() chamado pelo rdt para enviar dados agrave camada superior

Camada Transporte 3-25

Transferecircncia confiaacutevel de dados introduccedilatildeo hellip Iremos

Desenvolver incrementalmente os lados receptor e emissor do protocolo de transferecircncia confiaacutevel de dados (rdt)

considere somente transferecircncia de dados unidirecional mas informaccedilotildees de controle transitaratildeo em ambos

sentidos

usar maacutequinas de estado finitas (FSM) para especificar o emissor e o receptor

estado 1

estado 2

Evento causando transiccedilatildeo de estado

Accedilotildees tomadas na transiccedilatildeo de estados

estado quando estiver neste ldquoestadordquo

proacuteximo estado eacute unicamente

determinado pelo proacuteximo evento

evento

accedilotildees

Camada Transporte 3-26

Rdt10 transferecircncia confiaacutevel sobre um canal confiaacutevel Canal de base perfeitamente confiaacutevel

Nenhum erro nos bits

Nenhuma perda de pacotes

FSMs separadas para emissor e receptor Emissor envia dados no canal

Receptor lecirc dados do canal

Wait for

call from

above packet = make_pkt(data)

udt_send(packet)

rdt_send(data)

extract (packetdata)

deliver_data(data)

Wait for

call from

below

rdt_rcv(packet)

emissor receptor

Camada Transporte 3-27

Rdt20 canal com erros em bits

Canal de base pode trocar bits dos pacotes checksum para detectar erros nos bits

a questatildeo como se recuperar de erros acknowledgements (ACKs) receptor informa

explicitamente ao emissor que pacote recebido estaacute OK

negative acknowledgements (NAKs) receptor informa explicitamente ao emissor que o pacote possui erros

Emissor retransmite pacote ao receber um NAK

novos mecanismos no rdt20 (aleacutem de rdt10) Detecccedilatildeo de erro

Feedback do receptor msgs de controle (ACKNAK) do recptor para o emissor

Camada Transporte 3-28

rdt20 especificaccedilatildeo FSM

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below emissor

receptor rdt_send(data)

Camada Transporte 3-29

rdt20 operaccedilatildeo na ausecircncia de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-30

rdt20 cenaacuterio na presenccedila de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-31

rdt20 tem um problema fatal

O que acontece se um ACKNAK eacute corrompido

emissor natildeo sabe o que aconteceu no receptor

Natildeo pode somente retransmitir possibilidade de duplicaccedilatildeo de pacotes

Tratando duplicaccedilotildees Emissor retransmitepacote

atual se ACKNAK eacute corrompido

Emissor adiciona nuacutemeros de sequumlecircncia a cada pacote

Receptor descarta (natildeo entrega para a camada superior) pacotes duplicados

Emissor envia 1 pacote e entatildeo aguarda pela Resposta do receptor

stop and wait

Camada Transporte 3-32

rdt21 emissor trata ACKNAKs corrompidos

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

Wait for

ACK or

NAK 0 udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

Wait for

call 1 from

above

Wait for

ACK or

NAK 1

L L

Camada Transporte 3-33

rdt21 receptor trata ACKNAKs corrompidos

Wait for

0 from

below

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq0(rcvpkt)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

Wait for

1 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq0(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq1(rcvpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

Camada Transporte 3-34

rdt21 discussatildeo

Emissor

de seq adicionado a pkt

2 ‟s de seq (01) satildeo suficientes Por que

Deve verificar se ACKNAK recebido estaacute corrompido

2x mais estados state deve ldquorecordarrdquo

se pacote ldquoatualrdquo possui de seq 0 ou 1

Receptor

Deve verificar se pacote recebido eacute um duplicado estado indica se de

seq do pacote esperado eacute 0 ou 1

nota receptor natildeo pode saber se seu uacuteltimo ACKNAK foi recebido OK no emissor

Camada Transporte 3-35

rdt22 um protocolo sem NAKs

Igual ao rdt21 mas usando ACKs somente

Ao inveacutes de NAK receptor envia ACK do uacuteltimo pacote recebido corretamente (OK) Receptor deve incluir explicitamente o de seq do pacote

sendo confirmado

ACK duplicado no emissor resulta na mesma accedilatildeo como para o NAK retransmiccedilatildeo do pacote atual

Camada Transporte 3-36

rdt22 fragmentos do emissor e receptor

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

Wait for

ACK

0

Fragmento da FSM do emissor

Wait for

0 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK1 chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

(corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento da FSM Do receptor

Camada Transporte 3-37

rdt30 canais com erros e perdas

Nova hipoacutetese canal de base pode agora perder pacotes (dados ou ACKs) checksum de seq

ACKs retransmissotildees ajudaratildeo mas natildeo seratildeo suficientes

Abordagem emissor aguarda um tempo ldquorazoaacutevelrdquo a recepccedilatildeo de ACKs

retransmite se nenhum ACK eacute recebido neste tempo

se pkt (ou ACK) apenas atrasado (natildeo foi perdido)

retransmissatildeo causaraacute duplicaccedilatildeo mas uso de de seq tratam isso

receptor deve especificar de seq do pacote sendo confirmado

requer temporizador

Camada Transporte 3-38

Emissor rdt30

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

Wait

for

ACK0

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

Wait for

call 1 from

above

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt0) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt1)

stop_timer

stop_timer

udt_send(sndpkt)

start_timer

timeout

udt_send(sndpkt)

start_timer

timeout

rdt_rcv(rcvpkt)

Wait for

call 0from

above

Wait

for

ACK1

L

rdt_rcv(rcvpkt)

L

L

L

Camada Transporte 3-39

rdt30 em accedilatildeo

Camada Transporte 3-40

rdt30 em accedilatildeo

Camada Transporte 3-41

Desempenho do rdt30

rdt30 funciona mas desempenho eacute ruim examplo enlace de 1 Gbps 15 ms de atraso

de propagaccedilatildeo fim-a-fim pacote de 1KB

T transmit = 8kbpkt

109 bsec = 8 microsec

U sender utilizaccedilatildeo fraccedilatildeo do tempo em que o emissor estaacute ocupado enviando

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R =

L (tamanho do pacote bits) R (taxa de transmissatildeo bps)

=

Pacote de 1KB a cada 30 msec -gt 33kBsec de vazatildeo em um enlace de 1 Gbps

O protocolo de rede limita o uso de recursos fiacutesicos

= 0027

Camada Transporte 3-42

rdt30 funcionamento do stop-and-wait

Primeiro bit do pacote transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit do pkt transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega ACK

envidado

ACK chega envia proacuteximo

pacote t = RTT + L R

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R = = 0027

Camada Transporte 3-43

Protocolos com Pipeline

Pipelining emissor permite muacuteltiplos pacotes enviados e que ainda natildeo foram confirmados range do nuacutemero de sequumlecircncia deve ser aumentado

ldquobufferizaccedilatildeordquo no emissor eou receptor

2 formas geneacutericas de protocolos pipeline go-Back-N selective repeat (SR)

Camada Transporte 3-44

Pipelining aumento da utilizaccedilatildeo

Primeiro bit do pkt transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega envia ACK

ACK chega envia proacuteximo

pacote t = RTT + L R

Uacuteltimo bit do 2o pacote chega envia ACK

Uacuteltimo bit do 3o pacote chega envia

ACK

U sender

= 024

30008 = 00008

microseconds

3 L R

RTT + L R =

Utilizaccedilatildeo aumenta de um fator de 3 (neste

exemplo)

= 008

Camada Transporte 3-45

Go-Back-N Emissor de seq de k bits no cabeccedilalho do pacote

ldquojanelardquo de ateacute N consecutivos pacotes natildeo confirmados permitida

ACK(n) confirma todos os pacotes ateacute o n - ldquoACK cumulativordquo

Pode receber ACKs duplicados ACKs (veja receptor)

Temporizador para cada pacote enviado

timeout(n) retransmite pkt n e todos pacotes com s de seq maiores que estatildeo dentro da janela

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Camada Transporte 3-46

GBN FSM do emissor estendida

Wait start_timer

udt_send(sndpkt[base])

udt_send(sndpkt[base+1])

hellip

udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

if (nextseqnum lt base+N)

sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)

udt_send(sndpkt[nextseqnum])

if (base == nextseqnum)

start_timer

nextseqnum++

else

refuse_data(data)

base = getacknum(rcvpkt)+1

If (base == nextseqnum)

stop_timer

else

start_timer

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

base=1

nextseqnum=1

rdt_rcv(rcvpkt)

ampamp corrupt(rcvpkt)

L

Somente ACKs satildeo usados (sem NAKs)

Camada Transporte 3-47

GBN FSM do receptor estendida

ACK-only sempre envia ACK para pacote recebido ldquona ordemrdquo corretamente com de seq mais elevado Pode gerar ACKs duplicados Precisa recordar somente o de seq esperado

(expectedseqnum)

Pkt fora de ordem descarta (natildeo armazena) -gt receptor natildeo possui buffer Re-ACK pkt com o de seq mais elevado e em ordem

Wait

udt_send(sndpkt)

default

rdt_rcv(rcvpkt)

ampamp notcurrupt(rcvpkt)

ampamp hasseqnum(rcvpktexpectedseqnum)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(expectedseqnumACKchksum)

udt_send(sndpkt)

expectedseqnum++

expectedseqnum=1

sndpkt =

make_pkt(expectedseqnumACKchksum)

L

Camada Transporte 3-48

GBN em accedilatildeo

Tamanho da janela = 4

Camada Transporte 3-49

SR - Selective Repeat

Receptor confirma individualmente cada pkt recebido corretamente armazena pkts quando necessaacuterio para eventual envio

de pacotes ordenados agrave camada superior

Emissor reenvia somente pkts para os quais o ACK natildeo foi recebido Emissor possui temporizador para cada pacote natildeo

confirmado (unACKed pkt)

Janela do emissor N consecutivos s de seq

Novamente limita s de seq de enviados pkts natildeo confirmados (unACKed pkts)

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 4: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-4

Serviccedilos e Protocolos de Transporte

provecircem comunicaccedilatildeo loacutegica entre processos aplicativos executando em diferente hosts

Protocolos de transporte ldquorodamrdquo em end systems Lado emissor quebra

mensagens da aplicaccedilatildeo em segmentos que satildeo passados agrave camada de rede

Lado receptor remonta segmentos em mensagens e os passa agrave camada aplicaccedilatildeo

mais de um protocolo de transporte disponiacutevel para as aplicaccedilotildees Internet TCP e UDP

aplicaccedilatildeo transporte

rede enlace fiacutesica

aplicaccedilatildeo transporte

rede enlace fiacutesica

rede

enlace fiacutesica

rede

enlace fiacutesica

rede

enlace fiacutesica

rede

enlace fiacutesica

rede

enlace fiacutesica

Camada Transporte 3-5

CamadaTransporte vs Camada de Rede

Camada de rede comunicaccedilatildeo loacutegica entre hosts

Camada transporte comunicaccedilatildeo loacutegica entre processos Conta com (e melhora)

serviccedilos da camada de rede

analogia

12 crianccedilas enviando cartas agrave 12 crianccedilas

processos = crianccedilas

mensagens da aplic= cartas em envelopes

hosts = casas

Protocolo de transporte = Ana e Bill

Protocolo da camada de rede = serviccedilo postal

Camada Transporte 3-6

Protocolos da camada transporte da Internet

Entrega confiaacutevel em ordem (TCP) Controle de

congestionamento

Controle de fluxo

Estabelecimento de conexatildeo

Entrega natildeo-confiaacutevel sem garantias de ordenaccedilatildeo UDP Extensotildees ldquosem

ornamentosrdquo ao serviccedilo de melhor esforccedilo (best-effort) IP

serviccedilos indisponiacuteveis Garantias de atraso

Garantias de banda passante

aplicaccedilatildeo transporte

rede enlace fiacutesica

aplicaccedilatildeo transporte

rede enlace fiacutesica

rede

enlace fiacutesica

rede

enlace fiacutesica

rede

enlace fiacutesica

rede

enlace fiacutesica

rede

enlace fiacutesica

Camada Transporte 3-7

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-8

Multiplexaccedilatildeodemultiplexaccedilatildeo

aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

P1 aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

P2 P3 P4 P1

host 1 host 2 host 3

= processo = socket

Entrega dos segmentos recebidos aos sockets corretos

Demultiplexaccedilatildeo no host receptor Coletar dados dos vaacuterios sockets adiciona cabeccedilalho aos dados (mais tarde usado para demultiplexaccedilatildeo)

Multiplexaccedilatildeo no host emissor

Camada Transporte 3-9

Como a demultiplexaccedilatildeo funciona host recebe datagramas IP

cada datagrama possui endereccedilo IP fonte endereccedilo IP de destino

cada datagrama carrega 1 segmento da camada transporte

cada segmento possui nuacutemero de porta de origem e de porta de destino

host usa os endereccedilos IP amp nuacutemero das portas para enviar segmento ao socket adequado

porta de origem porta de destino

32 bits

Dados da aplicaccedilatildeo

(mensagem)

outros campos do cabeccedilalho

Formato do segmento TCPUDP

Camada Transporte 3-10

demultiplexaccedilatildeo com UDP

Criar sockets com portas respectivas

DatagramSocket mySocket1 = new

DatagramSocket(99111)

DatagramSocket mySocket2 = new

DatagramSocket(99222)

Socket UDP identificado pela tupla

(endereccedilo IP de destino nuacutemero da porta de destino)

Quando um host recebe um segmento UDP Verifica o nuacutemero da porta de

destino no segmento

direciona o segmento UDP para o socket com o nuacutemero da porta especificado

Datagramas IP com endereccedilo IP fonte diferentes eou nuacutemeros de porta de origem diferentes satildeo direcionados ao mesmo socket

Camada Transporte 3-11

demux com UDP (cont)

DatagramSocket serverSocket = new DatagramSocket(6428)

cliente IPB

P2

cliente IP A

P1 P1 P3

servidor IP C

SP 6428

DP 9157

SP 9157

DP 6428

SP 6428

DP 5775

SP 5775

DP 6428

SP provecirc uma espeacutecie de ldquoendereccedilo de retornordquo

SP source port (porta de origem) DP destination port (porta de destino)

Camada Transporte 3-12

Demux com TCP

Socket TCP identificado pela tupla quaacutedrupla Endereccedilo IP de origem

Nuacutemero da porta de origem

Endereccedilo IP de destino

Nuacutemero da porta de destino

Host receptor usa todos esses quatro valores para enviar o segmento ao socket apropriado

host servidor pode suportar diversos sockets TCP simultaneamente cada socket eacute identificado

por sua prooacutepria tupla quaacutedrupla

Servidores Web possuem sockets diferentes para cada cliente conectado HTTP natildeo-persistente teraacute

diferentes sockets para cada requisiccedilatildeo

Camada Transporte 3-13

demux (cont) com TCP

cliente IPB

P1

cliente IP A

P1 P2 P4

servidor IP C

SP 9157

DP 80

SP 9157

DP 80

P5 P6 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Camada Transporte 3-14

Demux com TCP Web Server com Threads

Client IPB

P1

client IP A

P1 P2

server IP C

SP 9157

DP 80

SP 9157

DP 80

P4 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Camada Transporte 3-15

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-16

UDP User Datagram Protocol [RFC 768]

Protocolo Internet de transporte ldquosem ornamentosrdquo e com ldquoelementos baacutesicosrdquo

Serviccedilo ldquobest effortrdquo segmentos UDP podem ser

perdidos

entregues fora de ordem agrave aplicaccedilatildeo

natildeo-orientado agrave conexatildeo sem handshaking entre

o emissor e receptor UDP

Cada segmento UDP eacute tratado de forma independente dos outros

Por que existe o UDP Sem estabelecimento de

conexatildeo (que pode adicionar atraso)

simples sem estado de conexatildeo no emissor nem no receptor

Cabeccedilalho do segmento pequeno

nenhum controle de congestionamento

Camada Transporte 3-17

UDP mais hellip

Frequumlentemente usado para aplicaccedilotildees multimiacutedia de streaming Tolerante agrave perdas Sensiacutevel agrave taxa de

dados

Outros usos do UDP DNS SNMP

Transferecircncia confiaacutevel sobre UDP confiabilidade adicionada na camada aplicaccedilatildeo Recuperaccedilatildeo de erros

especiacutefica da camada aplicaccedilatildeo

porta de origem porta de destino

32 bits

Dados da aplicaccedilatildeo

(mensagem)

Formato do segmento UDP

tamanho checksum

tamanho em bytes do

segmento UDP incluindo

o cabeccedilalho

Camada Transporte 3-18

Checksum UDP

Emissor Trata o conteuacutedo de

segmentos como uma sequumlecircncia de inteiros de 16 bits

checksum adiccedilatildeo (soma complemento 1) do conteuacutedo do segmento

Emissor coloca o valor do checksum no campo checksum do UDP

Receptor computa o checksum do

segmento recebido

Verifica se o checksum computado bate com o valor informado no campo checksum

Natildeo - erro detectado

Sim - nenhum erro detectado Mas pode haver erros Mais em breve hellip

Objetivo detectar ldquoerrosrdquo (eg bits trocados) no segmento transmitido

Camada Transporte 3-19

Exemplo de Checksum Internet Nota

Ao adicionar nuacutemeros natildeo esquecer do ldquovai umrdquo

Examplo adiccedilatildeo de dois inteiros de 16 bits

1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1

wraparound

soma

checksum

Camada Transporte 3-20

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-21

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace

Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-22

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-23

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-24

Transferecircncia confiaacutevel de dados introduccedilatildeo hellip

lado emissor

lado receptor

rdt_send() chamado pela camada superior (eg aplic) Passagem de

dados da camada superior

udt_send() chamado por rdt para transferir pacote pelo canal

natildeo-confiaacutevel ao receptor

rdt_rcv() chamado quando pacote chega no lado receptor do canal

deliver_data() chamado pelo rdt para enviar dados agrave camada superior

Camada Transporte 3-25

Transferecircncia confiaacutevel de dados introduccedilatildeo hellip Iremos

Desenvolver incrementalmente os lados receptor e emissor do protocolo de transferecircncia confiaacutevel de dados (rdt)

considere somente transferecircncia de dados unidirecional mas informaccedilotildees de controle transitaratildeo em ambos

sentidos

usar maacutequinas de estado finitas (FSM) para especificar o emissor e o receptor

estado 1

estado 2

Evento causando transiccedilatildeo de estado

Accedilotildees tomadas na transiccedilatildeo de estados

estado quando estiver neste ldquoestadordquo

proacuteximo estado eacute unicamente

determinado pelo proacuteximo evento

evento

accedilotildees

Camada Transporte 3-26

Rdt10 transferecircncia confiaacutevel sobre um canal confiaacutevel Canal de base perfeitamente confiaacutevel

Nenhum erro nos bits

Nenhuma perda de pacotes

FSMs separadas para emissor e receptor Emissor envia dados no canal

Receptor lecirc dados do canal

Wait for

call from

above packet = make_pkt(data)

udt_send(packet)

rdt_send(data)

extract (packetdata)

deliver_data(data)

Wait for

call from

below

rdt_rcv(packet)

emissor receptor

Camada Transporte 3-27

Rdt20 canal com erros em bits

Canal de base pode trocar bits dos pacotes checksum para detectar erros nos bits

a questatildeo como se recuperar de erros acknowledgements (ACKs) receptor informa

explicitamente ao emissor que pacote recebido estaacute OK

negative acknowledgements (NAKs) receptor informa explicitamente ao emissor que o pacote possui erros

Emissor retransmite pacote ao receber um NAK

novos mecanismos no rdt20 (aleacutem de rdt10) Detecccedilatildeo de erro

Feedback do receptor msgs de controle (ACKNAK) do recptor para o emissor

Camada Transporte 3-28

rdt20 especificaccedilatildeo FSM

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below emissor

receptor rdt_send(data)

Camada Transporte 3-29

rdt20 operaccedilatildeo na ausecircncia de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-30

rdt20 cenaacuterio na presenccedila de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-31

rdt20 tem um problema fatal

O que acontece se um ACKNAK eacute corrompido

emissor natildeo sabe o que aconteceu no receptor

Natildeo pode somente retransmitir possibilidade de duplicaccedilatildeo de pacotes

Tratando duplicaccedilotildees Emissor retransmitepacote

atual se ACKNAK eacute corrompido

Emissor adiciona nuacutemeros de sequumlecircncia a cada pacote

Receptor descarta (natildeo entrega para a camada superior) pacotes duplicados

Emissor envia 1 pacote e entatildeo aguarda pela Resposta do receptor

stop and wait

Camada Transporte 3-32

rdt21 emissor trata ACKNAKs corrompidos

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

Wait for

ACK or

NAK 0 udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

Wait for

call 1 from

above

Wait for

ACK or

NAK 1

L L

Camada Transporte 3-33

rdt21 receptor trata ACKNAKs corrompidos

Wait for

0 from

below

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq0(rcvpkt)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

Wait for

1 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq0(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq1(rcvpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

Camada Transporte 3-34

rdt21 discussatildeo

Emissor

de seq adicionado a pkt

2 ‟s de seq (01) satildeo suficientes Por que

Deve verificar se ACKNAK recebido estaacute corrompido

2x mais estados state deve ldquorecordarrdquo

se pacote ldquoatualrdquo possui de seq 0 ou 1

Receptor

Deve verificar se pacote recebido eacute um duplicado estado indica se de

seq do pacote esperado eacute 0 ou 1

nota receptor natildeo pode saber se seu uacuteltimo ACKNAK foi recebido OK no emissor

Camada Transporte 3-35

rdt22 um protocolo sem NAKs

Igual ao rdt21 mas usando ACKs somente

Ao inveacutes de NAK receptor envia ACK do uacuteltimo pacote recebido corretamente (OK) Receptor deve incluir explicitamente o de seq do pacote

sendo confirmado

ACK duplicado no emissor resulta na mesma accedilatildeo como para o NAK retransmiccedilatildeo do pacote atual

Camada Transporte 3-36

rdt22 fragmentos do emissor e receptor

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

Wait for

ACK

0

Fragmento da FSM do emissor

Wait for

0 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK1 chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

(corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento da FSM Do receptor

Camada Transporte 3-37

rdt30 canais com erros e perdas

Nova hipoacutetese canal de base pode agora perder pacotes (dados ou ACKs) checksum de seq

ACKs retransmissotildees ajudaratildeo mas natildeo seratildeo suficientes

Abordagem emissor aguarda um tempo ldquorazoaacutevelrdquo a recepccedilatildeo de ACKs

retransmite se nenhum ACK eacute recebido neste tempo

se pkt (ou ACK) apenas atrasado (natildeo foi perdido)

retransmissatildeo causaraacute duplicaccedilatildeo mas uso de de seq tratam isso

receptor deve especificar de seq do pacote sendo confirmado

requer temporizador

Camada Transporte 3-38

Emissor rdt30

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

Wait

for

ACK0

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

Wait for

call 1 from

above

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt0) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt1)

stop_timer

stop_timer

udt_send(sndpkt)

start_timer

timeout

udt_send(sndpkt)

start_timer

timeout

rdt_rcv(rcvpkt)

Wait for

call 0from

above

Wait

for

ACK1

L

rdt_rcv(rcvpkt)

L

L

L

Camada Transporte 3-39

rdt30 em accedilatildeo

Camada Transporte 3-40

rdt30 em accedilatildeo

Camada Transporte 3-41

Desempenho do rdt30

rdt30 funciona mas desempenho eacute ruim examplo enlace de 1 Gbps 15 ms de atraso

de propagaccedilatildeo fim-a-fim pacote de 1KB

T transmit = 8kbpkt

109 bsec = 8 microsec

U sender utilizaccedilatildeo fraccedilatildeo do tempo em que o emissor estaacute ocupado enviando

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R =

L (tamanho do pacote bits) R (taxa de transmissatildeo bps)

=

Pacote de 1KB a cada 30 msec -gt 33kBsec de vazatildeo em um enlace de 1 Gbps

O protocolo de rede limita o uso de recursos fiacutesicos

= 0027

Camada Transporte 3-42

rdt30 funcionamento do stop-and-wait

Primeiro bit do pacote transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit do pkt transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega ACK

envidado

ACK chega envia proacuteximo

pacote t = RTT + L R

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R = = 0027

Camada Transporte 3-43

Protocolos com Pipeline

Pipelining emissor permite muacuteltiplos pacotes enviados e que ainda natildeo foram confirmados range do nuacutemero de sequumlecircncia deve ser aumentado

ldquobufferizaccedilatildeordquo no emissor eou receptor

2 formas geneacutericas de protocolos pipeline go-Back-N selective repeat (SR)

Camada Transporte 3-44

Pipelining aumento da utilizaccedilatildeo

Primeiro bit do pkt transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega envia ACK

ACK chega envia proacuteximo

pacote t = RTT + L R

Uacuteltimo bit do 2o pacote chega envia ACK

Uacuteltimo bit do 3o pacote chega envia

ACK

U sender

= 024

30008 = 00008

microseconds

3 L R

RTT + L R =

Utilizaccedilatildeo aumenta de um fator de 3 (neste

exemplo)

= 008

Camada Transporte 3-45

Go-Back-N Emissor de seq de k bits no cabeccedilalho do pacote

ldquojanelardquo de ateacute N consecutivos pacotes natildeo confirmados permitida

ACK(n) confirma todos os pacotes ateacute o n - ldquoACK cumulativordquo

Pode receber ACKs duplicados ACKs (veja receptor)

Temporizador para cada pacote enviado

timeout(n) retransmite pkt n e todos pacotes com s de seq maiores que estatildeo dentro da janela

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Camada Transporte 3-46

GBN FSM do emissor estendida

Wait start_timer

udt_send(sndpkt[base])

udt_send(sndpkt[base+1])

hellip

udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

if (nextseqnum lt base+N)

sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)

udt_send(sndpkt[nextseqnum])

if (base == nextseqnum)

start_timer

nextseqnum++

else

refuse_data(data)

base = getacknum(rcvpkt)+1

If (base == nextseqnum)

stop_timer

else

start_timer

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

base=1

nextseqnum=1

rdt_rcv(rcvpkt)

ampamp corrupt(rcvpkt)

L

Somente ACKs satildeo usados (sem NAKs)

Camada Transporte 3-47

GBN FSM do receptor estendida

ACK-only sempre envia ACK para pacote recebido ldquona ordemrdquo corretamente com de seq mais elevado Pode gerar ACKs duplicados Precisa recordar somente o de seq esperado

(expectedseqnum)

Pkt fora de ordem descarta (natildeo armazena) -gt receptor natildeo possui buffer Re-ACK pkt com o de seq mais elevado e em ordem

Wait

udt_send(sndpkt)

default

rdt_rcv(rcvpkt)

ampamp notcurrupt(rcvpkt)

ampamp hasseqnum(rcvpktexpectedseqnum)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(expectedseqnumACKchksum)

udt_send(sndpkt)

expectedseqnum++

expectedseqnum=1

sndpkt =

make_pkt(expectedseqnumACKchksum)

L

Camada Transporte 3-48

GBN em accedilatildeo

Tamanho da janela = 4

Camada Transporte 3-49

SR - Selective Repeat

Receptor confirma individualmente cada pkt recebido corretamente armazena pkts quando necessaacuterio para eventual envio

de pacotes ordenados agrave camada superior

Emissor reenvia somente pkts para os quais o ACK natildeo foi recebido Emissor possui temporizador para cada pacote natildeo

confirmado (unACKed pkt)

Janela do emissor N consecutivos s de seq

Novamente limita s de seq de enviados pkts natildeo confirmados (unACKed pkts)

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 5: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-5

CamadaTransporte vs Camada de Rede

Camada de rede comunicaccedilatildeo loacutegica entre hosts

Camada transporte comunicaccedilatildeo loacutegica entre processos Conta com (e melhora)

serviccedilos da camada de rede

analogia

12 crianccedilas enviando cartas agrave 12 crianccedilas

processos = crianccedilas

mensagens da aplic= cartas em envelopes

hosts = casas

Protocolo de transporte = Ana e Bill

Protocolo da camada de rede = serviccedilo postal

Camada Transporte 3-6

Protocolos da camada transporte da Internet

Entrega confiaacutevel em ordem (TCP) Controle de

congestionamento

Controle de fluxo

Estabelecimento de conexatildeo

Entrega natildeo-confiaacutevel sem garantias de ordenaccedilatildeo UDP Extensotildees ldquosem

ornamentosrdquo ao serviccedilo de melhor esforccedilo (best-effort) IP

serviccedilos indisponiacuteveis Garantias de atraso

Garantias de banda passante

aplicaccedilatildeo transporte

rede enlace fiacutesica

aplicaccedilatildeo transporte

rede enlace fiacutesica

rede

enlace fiacutesica

rede

enlace fiacutesica

rede

enlace fiacutesica

rede

enlace fiacutesica

rede

enlace fiacutesica

Camada Transporte 3-7

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-8

Multiplexaccedilatildeodemultiplexaccedilatildeo

aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

P1 aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

P2 P3 P4 P1

host 1 host 2 host 3

= processo = socket

Entrega dos segmentos recebidos aos sockets corretos

Demultiplexaccedilatildeo no host receptor Coletar dados dos vaacuterios sockets adiciona cabeccedilalho aos dados (mais tarde usado para demultiplexaccedilatildeo)

Multiplexaccedilatildeo no host emissor

Camada Transporte 3-9

Como a demultiplexaccedilatildeo funciona host recebe datagramas IP

cada datagrama possui endereccedilo IP fonte endereccedilo IP de destino

cada datagrama carrega 1 segmento da camada transporte

cada segmento possui nuacutemero de porta de origem e de porta de destino

host usa os endereccedilos IP amp nuacutemero das portas para enviar segmento ao socket adequado

porta de origem porta de destino

32 bits

Dados da aplicaccedilatildeo

(mensagem)

outros campos do cabeccedilalho

Formato do segmento TCPUDP

Camada Transporte 3-10

demultiplexaccedilatildeo com UDP

Criar sockets com portas respectivas

DatagramSocket mySocket1 = new

DatagramSocket(99111)

DatagramSocket mySocket2 = new

DatagramSocket(99222)

Socket UDP identificado pela tupla

(endereccedilo IP de destino nuacutemero da porta de destino)

Quando um host recebe um segmento UDP Verifica o nuacutemero da porta de

destino no segmento

direciona o segmento UDP para o socket com o nuacutemero da porta especificado

Datagramas IP com endereccedilo IP fonte diferentes eou nuacutemeros de porta de origem diferentes satildeo direcionados ao mesmo socket

Camada Transporte 3-11

demux com UDP (cont)

DatagramSocket serverSocket = new DatagramSocket(6428)

cliente IPB

P2

cliente IP A

P1 P1 P3

servidor IP C

SP 6428

DP 9157

SP 9157

DP 6428

SP 6428

DP 5775

SP 5775

DP 6428

SP provecirc uma espeacutecie de ldquoendereccedilo de retornordquo

SP source port (porta de origem) DP destination port (porta de destino)

Camada Transporte 3-12

Demux com TCP

Socket TCP identificado pela tupla quaacutedrupla Endereccedilo IP de origem

Nuacutemero da porta de origem

Endereccedilo IP de destino

Nuacutemero da porta de destino

Host receptor usa todos esses quatro valores para enviar o segmento ao socket apropriado

host servidor pode suportar diversos sockets TCP simultaneamente cada socket eacute identificado

por sua prooacutepria tupla quaacutedrupla

Servidores Web possuem sockets diferentes para cada cliente conectado HTTP natildeo-persistente teraacute

diferentes sockets para cada requisiccedilatildeo

Camada Transporte 3-13

demux (cont) com TCP

cliente IPB

P1

cliente IP A

P1 P2 P4

servidor IP C

SP 9157

DP 80

SP 9157

DP 80

P5 P6 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Camada Transporte 3-14

Demux com TCP Web Server com Threads

Client IPB

P1

client IP A

P1 P2

server IP C

SP 9157

DP 80

SP 9157

DP 80

P4 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Camada Transporte 3-15

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-16

UDP User Datagram Protocol [RFC 768]

Protocolo Internet de transporte ldquosem ornamentosrdquo e com ldquoelementos baacutesicosrdquo

Serviccedilo ldquobest effortrdquo segmentos UDP podem ser

perdidos

entregues fora de ordem agrave aplicaccedilatildeo

natildeo-orientado agrave conexatildeo sem handshaking entre

o emissor e receptor UDP

Cada segmento UDP eacute tratado de forma independente dos outros

Por que existe o UDP Sem estabelecimento de

conexatildeo (que pode adicionar atraso)

simples sem estado de conexatildeo no emissor nem no receptor

Cabeccedilalho do segmento pequeno

nenhum controle de congestionamento

Camada Transporte 3-17

UDP mais hellip

Frequumlentemente usado para aplicaccedilotildees multimiacutedia de streaming Tolerante agrave perdas Sensiacutevel agrave taxa de

dados

Outros usos do UDP DNS SNMP

Transferecircncia confiaacutevel sobre UDP confiabilidade adicionada na camada aplicaccedilatildeo Recuperaccedilatildeo de erros

especiacutefica da camada aplicaccedilatildeo

porta de origem porta de destino

32 bits

Dados da aplicaccedilatildeo

(mensagem)

Formato do segmento UDP

tamanho checksum

tamanho em bytes do

segmento UDP incluindo

o cabeccedilalho

Camada Transporte 3-18

Checksum UDP

Emissor Trata o conteuacutedo de

segmentos como uma sequumlecircncia de inteiros de 16 bits

checksum adiccedilatildeo (soma complemento 1) do conteuacutedo do segmento

Emissor coloca o valor do checksum no campo checksum do UDP

Receptor computa o checksum do

segmento recebido

Verifica se o checksum computado bate com o valor informado no campo checksum

Natildeo - erro detectado

Sim - nenhum erro detectado Mas pode haver erros Mais em breve hellip

Objetivo detectar ldquoerrosrdquo (eg bits trocados) no segmento transmitido

Camada Transporte 3-19

Exemplo de Checksum Internet Nota

Ao adicionar nuacutemeros natildeo esquecer do ldquovai umrdquo

Examplo adiccedilatildeo de dois inteiros de 16 bits

1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1

wraparound

soma

checksum

Camada Transporte 3-20

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-21

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace

Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-22

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-23

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-24

Transferecircncia confiaacutevel de dados introduccedilatildeo hellip

lado emissor

lado receptor

rdt_send() chamado pela camada superior (eg aplic) Passagem de

dados da camada superior

udt_send() chamado por rdt para transferir pacote pelo canal

natildeo-confiaacutevel ao receptor

rdt_rcv() chamado quando pacote chega no lado receptor do canal

deliver_data() chamado pelo rdt para enviar dados agrave camada superior

Camada Transporte 3-25

Transferecircncia confiaacutevel de dados introduccedilatildeo hellip Iremos

Desenvolver incrementalmente os lados receptor e emissor do protocolo de transferecircncia confiaacutevel de dados (rdt)

considere somente transferecircncia de dados unidirecional mas informaccedilotildees de controle transitaratildeo em ambos

sentidos

usar maacutequinas de estado finitas (FSM) para especificar o emissor e o receptor

estado 1

estado 2

Evento causando transiccedilatildeo de estado

Accedilotildees tomadas na transiccedilatildeo de estados

estado quando estiver neste ldquoestadordquo

proacuteximo estado eacute unicamente

determinado pelo proacuteximo evento

evento

accedilotildees

Camada Transporte 3-26

Rdt10 transferecircncia confiaacutevel sobre um canal confiaacutevel Canal de base perfeitamente confiaacutevel

Nenhum erro nos bits

Nenhuma perda de pacotes

FSMs separadas para emissor e receptor Emissor envia dados no canal

Receptor lecirc dados do canal

Wait for

call from

above packet = make_pkt(data)

udt_send(packet)

rdt_send(data)

extract (packetdata)

deliver_data(data)

Wait for

call from

below

rdt_rcv(packet)

emissor receptor

Camada Transporte 3-27

Rdt20 canal com erros em bits

Canal de base pode trocar bits dos pacotes checksum para detectar erros nos bits

a questatildeo como se recuperar de erros acknowledgements (ACKs) receptor informa

explicitamente ao emissor que pacote recebido estaacute OK

negative acknowledgements (NAKs) receptor informa explicitamente ao emissor que o pacote possui erros

Emissor retransmite pacote ao receber um NAK

novos mecanismos no rdt20 (aleacutem de rdt10) Detecccedilatildeo de erro

Feedback do receptor msgs de controle (ACKNAK) do recptor para o emissor

Camada Transporte 3-28

rdt20 especificaccedilatildeo FSM

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below emissor

receptor rdt_send(data)

Camada Transporte 3-29

rdt20 operaccedilatildeo na ausecircncia de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-30

rdt20 cenaacuterio na presenccedila de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-31

rdt20 tem um problema fatal

O que acontece se um ACKNAK eacute corrompido

emissor natildeo sabe o que aconteceu no receptor

Natildeo pode somente retransmitir possibilidade de duplicaccedilatildeo de pacotes

Tratando duplicaccedilotildees Emissor retransmitepacote

atual se ACKNAK eacute corrompido

Emissor adiciona nuacutemeros de sequumlecircncia a cada pacote

Receptor descarta (natildeo entrega para a camada superior) pacotes duplicados

Emissor envia 1 pacote e entatildeo aguarda pela Resposta do receptor

stop and wait

Camada Transporte 3-32

rdt21 emissor trata ACKNAKs corrompidos

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

Wait for

ACK or

NAK 0 udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

Wait for

call 1 from

above

Wait for

ACK or

NAK 1

L L

Camada Transporte 3-33

rdt21 receptor trata ACKNAKs corrompidos

Wait for

0 from

below

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq0(rcvpkt)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

Wait for

1 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq0(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq1(rcvpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

Camada Transporte 3-34

rdt21 discussatildeo

Emissor

de seq adicionado a pkt

2 ‟s de seq (01) satildeo suficientes Por que

Deve verificar se ACKNAK recebido estaacute corrompido

2x mais estados state deve ldquorecordarrdquo

se pacote ldquoatualrdquo possui de seq 0 ou 1

Receptor

Deve verificar se pacote recebido eacute um duplicado estado indica se de

seq do pacote esperado eacute 0 ou 1

nota receptor natildeo pode saber se seu uacuteltimo ACKNAK foi recebido OK no emissor

Camada Transporte 3-35

rdt22 um protocolo sem NAKs

Igual ao rdt21 mas usando ACKs somente

Ao inveacutes de NAK receptor envia ACK do uacuteltimo pacote recebido corretamente (OK) Receptor deve incluir explicitamente o de seq do pacote

sendo confirmado

ACK duplicado no emissor resulta na mesma accedilatildeo como para o NAK retransmiccedilatildeo do pacote atual

Camada Transporte 3-36

rdt22 fragmentos do emissor e receptor

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

Wait for

ACK

0

Fragmento da FSM do emissor

Wait for

0 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK1 chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

(corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento da FSM Do receptor

Camada Transporte 3-37

rdt30 canais com erros e perdas

Nova hipoacutetese canal de base pode agora perder pacotes (dados ou ACKs) checksum de seq

ACKs retransmissotildees ajudaratildeo mas natildeo seratildeo suficientes

Abordagem emissor aguarda um tempo ldquorazoaacutevelrdquo a recepccedilatildeo de ACKs

retransmite se nenhum ACK eacute recebido neste tempo

se pkt (ou ACK) apenas atrasado (natildeo foi perdido)

retransmissatildeo causaraacute duplicaccedilatildeo mas uso de de seq tratam isso

receptor deve especificar de seq do pacote sendo confirmado

requer temporizador

Camada Transporte 3-38

Emissor rdt30

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

Wait

for

ACK0

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

Wait for

call 1 from

above

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt0) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt1)

stop_timer

stop_timer

udt_send(sndpkt)

start_timer

timeout

udt_send(sndpkt)

start_timer

timeout

rdt_rcv(rcvpkt)

Wait for

call 0from

above

Wait

for

ACK1

L

rdt_rcv(rcvpkt)

L

L

L

Camada Transporte 3-39

rdt30 em accedilatildeo

Camada Transporte 3-40

rdt30 em accedilatildeo

Camada Transporte 3-41

Desempenho do rdt30

rdt30 funciona mas desempenho eacute ruim examplo enlace de 1 Gbps 15 ms de atraso

de propagaccedilatildeo fim-a-fim pacote de 1KB

T transmit = 8kbpkt

109 bsec = 8 microsec

U sender utilizaccedilatildeo fraccedilatildeo do tempo em que o emissor estaacute ocupado enviando

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R =

L (tamanho do pacote bits) R (taxa de transmissatildeo bps)

=

Pacote de 1KB a cada 30 msec -gt 33kBsec de vazatildeo em um enlace de 1 Gbps

O protocolo de rede limita o uso de recursos fiacutesicos

= 0027

Camada Transporte 3-42

rdt30 funcionamento do stop-and-wait

Primeiro bit do pacote transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit do pkt transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega ACK

envidado

ACK chega envia proacuteximo

pacote t = RTT + L R

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R = = 0027

Camada Transporte 3-43

Protocolos com Pipeline

Pipelining emissor permite muacuteltiplos pacotes enviados e que ainda natildeo foram confirmados range do nuacutemero de sequumlecircncia deve ser aumentado

ldquobufferizaccedilatildeordquo no emissor eou receptor

2 formas geneacutericas de protocolos pipeline go-Back-N selective repeat (SR)

Camada Transporte 3-44

Pipelining aumento da utilizaccedilatildeo

Primeiro bit do pkt transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega envia ACK

ACK chega envia proacuteximo

pacote t = RTT + L R

Uacuteltimo bit do 2o pacote chega envia ACK

Uacuteltimo bit do 3o pacote chega envia

ACK

U sender

= 024

30008 = 00008

microseconds

3 L R

RTT + L R =

Utilizaccedilatildeo aumenta de um fator de 3 (neste

exemplo)

= 008

Camada Transporte 3-45

Go-Back-N Emissor de seq de k bits no cabeccedilalho do pacote

ldquojanelardquo de ateacute N consecutivos pacotes natildeo confirmados permitida

ACK(n) confirma todos os pacotes ateacute o n - ldquoACK cumulativordquo

Pode receber ACKs duplicados ACKs (veja receptor)

Temporizador para cada pacote enviado

timeout(n) retransmite pkt n e todos pacotes com s de seq maiores que estatildeo dentro da janela

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Camada Transporte 3-46

GBN FSM do emissor estendida

Wait start_timer

udt_send(sndpkt[base])

udt_send(sndpkt[base+1])

hellip

udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

if (nextseqnum lt base+N)

sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)

udt_send(sndpkt[nextseqnum])

if (base == nextseqnum)

start_timer

nextseqnum++

else

refuse_data(data)

base = getacknum(rcvpkt)+1

If (base == nextseqnum)

stop_timer

else

start_timer

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

base=1

nextseqnum=1

rdt_rcv(rcvpkt)

ampamp corrupt(rcvpkt)

L

Somente ACKs satildeo usados (sem NAKs)

Camada Transporte 3-47

GBN FSM do receptor estendida

ACK-only sempre envia ACK para pacote recebido ldquona ordemrdquo corretamente com de seq mais elevado Pode gerar ACKs duplicados Precisa recordar somente o de seq esperado

(expectedseqnum)

Pkt fora de ordem descarta (natildeo armazena) -gt receptor natildeo possui buffer Re-ACK pkt com o de seq mais elevado e em ordem

Wait

udt_send(sndpkt)

default

rdt_rcv(rcvpkt)

ampamp notcurrupt(rcvpkt)

ampamp hasseqnum(rcvpktexpectedseqnum)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(expectedseqnumACKchksum)

udt_send(sndpkt)

expectedseqnum++

expectedseqnum=1

sndpkt =

make_pkt(expectedseqnumACKchksum)

L

Camada Transporte 3-48

GBN em accedilatildeo

Tamanho da janela = 4

Camada Transporte 3-49

SR - Selective Repeat

Receptor confirma individualmente cada pkt recebido corretamente armazena pkts quando necessaacuterio para eventual envio

de pacotes ordenados agrave camada superior

Emissor reenvia somente pkts para os quais o ACK natildeo foi recebido Emissor possui temporizador para cada pacote natildeo

confirmado (unACKed pkt)

Janela do emissor N consecutivos s de seq

Novamente limita s de seq de enviados pkts natildeo confirmados (unACKed pkts)

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 6: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-6

Protocolos da camada transporte da Internet

Entrega confiaacutevel em ordem (TCP) Controle de

congestionamento

Controle de fluxo

Estabelecimento de conexatildeo

Entrega natildeo-confiaacutevel sem garantias de ordenaccedilatildeo UDP Extensotildees ldquosem

ornamentosrdquo ao serviccedilo de melhor esforccedilo (best-effort) IP

serviccedilos indisponiacuteveis Garantias de atraso

Garantias de banda passante

aplicaccedilatildeo transporte

rede enlace fiacutesica

aplicaccedilatildeo transporte

rede enlace fiacutesica

rede

enlace fiacutesica

rede

enlace fiacutesica

rede

enlace fiacutesica

rede

enlace fiacutesica

rede

enlace fiacutesica

Camada Transporte 3-7

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-8

Multiplexaccedilatildeodemultiplexaccedilatildeo

aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

P1 aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

P2 P3 P4 P1

host 1 host 2 host 3

= processo = socket

Entrega dos segmentos recebidos aos sockets corretos

Demultiplexaccedilatildeo no host receptor Coletar dados dos vaacuterios sockets adiciona cabeccedilalho aos dados (mais tarde usado para demultiplexaccedilatildeo)

Multiplexaccedilatildeo no host emissor

Camada Transporte 3-9

Como a demultiplexaccedilatildeo funciona host recebe datagramas IP

cada datagrama possui endereccedilo IP fonte endereccedilo IP de destino

cada datagrama carrega 1 segmento da camada transporte

cada segmento possui nuacutemero de porta de origem e de porta de destino

host usa os endereccedilos IP amp nuacutemero das portas para enviar segmento ao socket adequado

porta de origem porta de destino

32 bits

Dados da aplicaccedilatildeo

(mensagem)

outros campos do cabeccedilalho

Formato do segmento TCPUDP

Camada Transporte 3-10

demultiplexaccedilatildeo com UDP

Criar sockets com portas respectivas

DatagramSocket mySocket1 = new

DatagramSocket(99111)

DatagramSocket mySocket2 = new

DatagramSocket(99222)

Socket UDP identificado pela tupla

(endereccedilo IP de destino nuacutemero da porta de destino)

Quando um host recebe um segmento UDP Verifica o nuacutemero da porta de

destino no segmento

direciona o segmento UDP para o socket com o nuacutemero da porta especificado

Datagramas IP com endereccedilo IP fonte diferentes eou nuacutemeros de porta de origem diferentes satildeo direcionados ao mesmo socket

Camada Transporte 3-11

demux com UDP (cont)

DatagramSocket serverSocket = new DatagramSocket(6428)

cliente IPB

P2

cliente IP A

P1 P1 P3

servidor IP C

SP 6428

DP 9157

SP 9157

DP 6428

SP 6428

DP 5775

SP 5775

DP 6428

SP provecirc uma espeacutecie de ldquoendereccedilo de retornordquo

SP source port (porta de origem) DP destination port (porta de destino)

Camada Transporte 3-12

Demux com TCP

Socket TCP identificado pela tupla quaacutedrupla Endereccedilo IP de origem

Nuacutemero da porta de origem

Endereccedilo IP de destino

Nuacutemero da porta de destino

Host receptor usa todos esses quatro valores para enviar o segmento ao socket apropriado

host servidor pode suportar diversos sockets TCP simultaneamente cada socket eacute identificado

por sua prooacutepria tupla quaacutedrupla

Servidores Web possuem sockets diferentes para cada cliente conectado HTTP natildeo-persistente teraacute

diferentes sockets para cada requisiccedilatildeo

Camada Transporte 3-13

demux (cont) com TCP

cliente IPB

P1

cliente IP A

P1 P2 P4

servidor IP C

SP 9157

DP 80

SP 9157

DP 80

P5 P6 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Camada Transporte 3-14

Demux com TCP Web Server com Threads

Client IPB

P1

client IP A

P1 P2

server IP C

SP 9157

DP 80

SP 9157

DP 80

P4 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Camada Transporte 3-15

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-16

UDP User Datagram Protocol [RFC 768]

Protocolo Internet de transporte ldquosem ornamentosrdquo e com ldquoelementos baacutesicosrdquo

Serviccedilo ldquobest effortrdquo segmentos UDP podem ser

perdidos

entregues fora de ordem agrave aplicaccedilatildeo

natildeo-orientado agrave conexatildeo sem handshaking entre

o emissor e receptor UDP

Cada segmento UDP eacute tratado de forma independente dos outros

Por que existe o UDP Sem estabelecimento de

conexatildeo (que pode adicionar atraso)

simples sem estado de conexatildeo no emissor nem no receptor

Cabeccedilalho do segmento pequeno

nenhum controle de congestionamento

Camada Transporte 3-17

UDP mais hellip

Frequumlentemente usado para aplicaccedilotildees multimiacutedia de streaming Tolerante agrave perdas Sensiacutevel agrave taxa de

dados

Outros usos do UDP DNS SNMP

Transferecircncia confiaacutevel sobre UDP confiabilidade adicionada na camada aplicaccedilatildeo Recuperaccedilatildeo de erros

especiacutefica da camada aplicaccedilatildeo

porta de origem porta de destino

32 bits

Dados da aplicaccedilatildeo

(mensagem)

Formato do segmento UDP

tamanho checksum

tamanho em bytes do

segmento UDP incluindo

o cabeccedilalho

Camada Transporte 3-18

Checksum UDP

Emissor Trata o conteuacutedo de

segmentos como uma sequumlecircncia de inteiros de 16 bits

checksum adiccedilatildeo (soma complemento 1) do conteuacutedo do segmento

Emissor coloca o valor do checksum no campo checksum do UDP

Receptor computa o checksum do

segmento recebido

Verifica se o checksum computado bate com o valor informado no campo checksum

Natildeo - erro detectado

Sim - nenhum erro detectado Mas pode haver erros Mais em breve hellip

Objetivo detectar ldquoerrosrdquo (eg bits trocados) no segmento transmitido

Camada Transporte 3-19

Exemplo de Checksum Internet Nota

Ao adicionar nuacutemeros natildeo esquecer do ldquovai umrdquo

Examplo adiccedilatildeo de dois inteiros de 16 bits

1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1

wraparound

soma

checksum

Camada Transporte 3-20

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-21

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace

Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-22

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-23

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-24

Transferecircncia confiaacutevel de dados introduccedilatildeo hellip

lado emissor

lado receptor

rdt_send() chamado pela camada superior (eg aplic) Passagem de

dados da camada superior

udt_send() chamado por rdt para transferir pacote pelo canal

natildeo-confiaacutevel ao receptor

rdt_rcv() chamado quando pacote chega no lado receptor do canal

deliver_data() chamado pelo rdt para enviar dados agrave camada superior

Camada Transporte 3-25

Transferecircncia confiaacutevel de dados introduccedilatildeo hellip Iremos

Desenvolver incrementalmente os lados receptor e emissor do protocolo de transferecircncia confiaacutevel de dados (rdt)

considere somente transferecircncia de dados unidirecional mas informaccedilotildees de controle transitaratildeo em ambos

sentidos

usar maacutequinas de estado finitas (FSM) para especificar o emissor e o receptor

estado 1

estado 2

Evento causando transiccedilatildeo de estado

Accedilotildees tomadas na transiccedilatildeo de estados

estado quando estiver neste ldquoestadordquo

proacuteximo estado eacute unicamente

determinado pelo proacuteximo evento

evento

accedilotildees

Camada Transporte 3-26

Rdt10 transferecircncia confiaacutevel sobre um canal confiaacutevel Canal de base perfeitamente confiaacutevel

Nenhum erro nos bits

Nenhuma perda de pacotes

FSMs separadas para emissor e receptor Emissor envia dados no canal

Receptor lecirc dados do canal

Wait for

call from

above packet = make_pkt(data)

udt_send(packet)

rdt_send(data)

extract (packetdata)

deliver_data(data)

Wait for

call from

below

rdt_rcv(packet)

emissor receptor

Camada Transporte 3-27

Rdt20 canal com erros em bits

Canal de base pode trocar bits dos pacotes checksum para detectar erros nos bits

a questatildeo como se recuperar de erros acknowledgements (ACKs) receptor informa

explicitamente ao emissor que pacote recebido estaacute OK

negative acknowledgements (NAKs) receptor informa explicitamente ao emissor que o pacote possui erros

Emissor retransmite pacote ao receber um NAK

novos mecanismos no rdt20 (aleacutem de rdt10) Detecccedilatildeo de erro

Feedback do receptor msgs de controle (ACKNAK) do recptor para o emissor

Camada Transporte 3-28

rdt20 especificaccedilatildeo FSM

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below emissor

receptor rdt_send(data)

Camada Transporte 3-29

rdt20 operaccedilatildeo na ausecircncia de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-30

rdt20 cenaacuterio na presenccedila de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-31

rdt20 tem um problema fatal

O que acontece se um ACKNAK eacute corrompido

emissor natildeo sabe o que aconteceu no receptor

Natildeo pode somente retransmitir possibilidade de duplicaccedilatildeo de pacotes

Tratando duplicaccedilotildees Emissor retransmitepacote

atual se ACKNAK eacute corrompido

Emissor adiciona nuacutemeros de sequumlecircncia a cada pacote

Receptor descarta (natildeo entrega para a camada superior) pacotes duplicados

Emissor envia 1 pacote e entatildeo aguarda pela Resposta do receptor

stop and wait

Camada Transporte 3-32

rdt21 emissor trata ACKNAKs corrompidos

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

Wait for

ACK or

NAK 0 udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

Wait for

call 1 from

above

Wait for

ACK or

NAK 1

L L

Camada Transporte 3-33

rdt21 receptor trata ACKNAKs corrompidos

Wait for

0 from

below

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq0(rcvpkt)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

Wait for

1 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq0(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq1(rcvpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

Camada Transporte 3-34

rdt21 discussatildeo

Emissor

de seq adicionado a pkt

2 ‟s de seq (01) satildeo suficientes Por que

Deve verificar se ACKNAK recebido estaacute corrompido

2x mais estados state deve ldquorecordarrdquo

se pacote ldquoatualrdquo possui de seq 0 ou 1

Receptor

Deve verificar se pacote recebido eacute um duplicado estado indica se de

seq do pacote esperado eacute 0 ou 1

nota receptor natildeo pode saber se seu uacuteltimo ACKNAK foi recebido OK no emissor

Camada Transporte 3-35

rdt22 um protocolo sem NAKs

Igual ao rdt21 mas usando ACKs somente

Ao inveacutes de NAK receptor envia ACK do uacuteltimo pacote recebido corretamente (OK) Receptor deve incluir explicitamente o de seq do pacote

sendo confirmado

ACK duplicado no emissor resulta na mesma accedilatildeo como para o NAK retransmiccedilatildeo do pacote atual

Camada Transporte 3-36

rdt22 fragmentos do emissor e receptor

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

Wait for

ACK

0

Fragmento da FSM do emissor

Wait for

0 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK1 chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

(corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento da FSM Do receptor

Camada Transporte 3-37

rdt30 canais com erros e perdas

Nova hipoacutetese canal de base pode agora perder pacotes (dados ou ACKs) checksum de seq

ACKs retransmissotildees ajudaratildeo mas natildeo seratildeo suficientes

Abordagem emissor aguarda um tempo ldquorazoaacutevelrdquo a recepccedilatildeo de ACKs

retransmite se nenhum ACK eacute recebido neste tempo

se pkt (ou ACK) apenas atrasado (natildeo foi perdido)

retransmissatildeo causaraacute duplicaccedilatildeo mas uso de de seq tratam isso

receptor deve especificar de seq do pacote sendo confirmado

requer temporizador

Camada Transporte 3-38

Emissor rdt30

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

Wait

for

ACK0

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

Wait for

call 1 from

above

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt0) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt1)

stop_timer

stop_timer

udt_send(sndpkt)

start_timer

timeout

udt_send(sndpkt)

start_timer

timeout

rdt_rcv(rcvpkt)

Wait for

call 0from

above

Wait

for

ACK1

L

rdt_rcv(rcvpkt)

L

L

L

Camada Transporte 3-39

rdt30 em accedilatildeo

Camada Transporte 3-40

rdt30 em accedilatildeo

Camada Transporte 3-41

Desempenho do rdt30

rdt30 funciona mas desempenho eacute ruim examplo enlace de 1 Gbps 15 ms de atraso

de propagaccedilatildeo fim-a-fim pacote de 1KB

T transmit = 8kbpkt

109 bsec = 8 microsec

U sender utilizaccedilatildeo fraccedilatildeo do tempo em que o emissor estaacute ocupado enviando

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R =

L (tamanho do pacote bits) R (taxa de transmissatildeo bps)

=

Pacote de 1KB a cada 30 msec -gt 33kBsec de vazatildeo em um enlace de 1 Gbps

O protocolo de rede limita o uso de recursos fiacutesicos

= 0027

Camada Transporte 3-42

rdt30 funcionamento do stop-and-wait

Primeiro bit do pacote transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit do pkt transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega ACK

envidado

ACK chega envia proacuteximo

pacote t = RTT + L R

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R = = 0027

Camada Transporte 3-43

Protocolos com Pipeline

Pipelining emissor permite muacuteltiplos pacotes enviados e que ainda natildeo foram confirmados range do nuacutemero de sequumlecircncia deve ser aumentado

ldquobufferizaccedilatildeordquo no emissor eou receptor

2 formas geneacutericas de protocolos pipeline go-Back-N selective repeat (SR)

Camada Transporte 3-44

Pipelining aumento da utilizaccedilatildeo

Primeiro bit do pkt transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega envia ACK

ACK chega envia proacuteximo

pacote t = RTT + L R

Uacuteltimo bit do 2o pacote chega envia ACK

Uacuteltimo bit do 3o pacote chega envia

ACK

U sender

= 024

30008 = 00008

microseconds

3 L R

RTT + L R =

Utilizaccedilatildeo aumenta de um fator de 3 (neste

exemplo)

= 008

Camada Transporte 3-45

Go-Back-N Emissor de seq de k bits no cabeccedilalho do pacote

ldquojanelardquo de ateacute N consecutivos pacotes natildeo confirmados permitida

ACK(n) confirma todos os pacotes ateacute o n - ldquoACK cumulativordquo

Pode receber ACKs duplicados ACKs (veja receptor)

Temporizador para cada pacote enviado

timeout(n) retransmite pkt n e todos pacotes com s de seq maiores que estatildeo dentro da janela

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Camada Transporte 3-46

GBN FSM do emissor estendida

Wait start_timer

udt_send(sndpkt[base])

udt_send(sndpkt[base+1])

hellip

udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

if (nextseqnum lt base+N)

sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)

udt_send(sndpkt[nextseqnum])

if (base == nextseqnum)

start_timer

nextseqnum++

else

refuse_data(data)

base = getacknum(rcvpkt)+1

If (base == nextseqnum)

stop_timer

else

start_timer

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

base=1

nextseqnum=1

rdt_rcv(rcvpkt)

ampamp corrupt(rcvpkt)

L

Somente ACKs satildeo usados (sem NAKs)

Camada Transporte 3-47

GBN FSM do receptor estendida

ACK-only sempre envia ACK para pacote recebido ldquona ordemrdquo corretamente com de seq mais elevado Pode gerar ACKs duplicados Precisa recordar somente o de seq esperado

(expectedseqnum)

Pkt fora de ordem descarta (natildeo armazena) -gt receptor natildeo possui buffer Re-ACK pkt com o de seq mais elevado e em ordem

Wait

udt_send(sndpkt)

default

rdt_rcv(rcvpkt)

ampamp notcurrupt(rcvpkt)

ampamp hasseqnum(rcvpktexpectedseqnum)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(expectedseqnumACKchksum)

udt_send(sndpkt)

expectedseqnum++

expectedseqnum=1

sndpkt =

make_pkt(expectedseqnumACKchksum)

L

Camada Transporte 3-48

GBN em accedilatildeo

Tamanho da janela = 4

Camada Transporte 3-49

SR - Selective Repeat

Receptor confirma individualmente cada pkt recebido corretamente armazena pkts quando necessaacuterio para eventual envio

de pacotes ordenados agrave camada superior

Emissor reenvia somente pkts para os quais o ACK natildeo foi recebido Emissor possui temporizador para cada pacote natildeo

confirmado (unACKed pkt)

Janela do emissor N consecutivos s de seq

Novamente limita s de seq de enviados pkts natildeo confirmados (unACKed pkts)

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 7: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-7

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-8

Multiplexaccedilatildeodemultiplexaccedilatildeo

aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

P1 aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

P2 P3 P4 P1

host 1 host 2 host 3

= processo = socket

Entrega dos segmentos recebidos aos sockets corretos

Demultiplexaccedilatildeo no host receptor Coletar dados dos vaacuterios sockets adiciona cabeccedilalho aos dados (mais tarde usado para demultiplexaccedilatildeo)

Multiplexaccedilatildeo no host emissor

Camada Transporte 3-9

Como a demultiplexaccedilatildeo funciona host recebe datagramas IP

cada datagrama possui endereccedilo IP fonte endereccedilo IP de destino

cada datagrama carrega 1 segmento da camada transporte

cada segmento possui nuacutemero de porta de origem e de porta de destino

host usa os endereccedilos IP amp nuacutemero das portas para enviar segmento ao socket adequado

porta de origem porta de destino

32 bits

Dados da aplicaccedilatildeo

(mensagem)

outros campos do cabeccedilalho

Formato do segmento TCPUDP

Camada Transporte 3-10

demultiplexaccedilatildeo com UDP

Criar sockets com portas respectivas

DatagramSocket mySocket1 = new

DatagramSocket(99111)

DatagramSocket mySocket2 = new

DatagramSocket(99222)

Socket UDP identificado pela tupla

(endereccedilo IP de destino nuacutemero da porta de destino)

Quando um host recebe um segmento UDP Verifica o nuacutemero da porta de

destino no segmento

direciona o segmento UDP para o socket com o nuacutemero da porta especificado

Datagramas IP com endereccedilo IP fonte diferentes eou nuacutemeros de porta de origem diferentes satildeo direcionados ao mesmo socket

Camada Transporte 3-11

demux com UDP (cont)

DatagramSocket serverSocket = new DatagramSocket(6428)

cliente IPB

P2

cliente IP A

P1 P1 P3

servidor IP C

SP 6428

DP 9157

SP 9157

DP 6428

SP 6428

DP 5775

SP 5775

DP 6428

SP provecirc uma espeacutecie de ldquoendereccedilo de retornordquo

SP source port (porta de origem) DP destination port (porta de destino)

Camada Transporte 3-12

Demux com TCP

Socket TCP identificado pela tupla quaacutedrupla Endereccedilo IP de origem

Nuacutemero da porta de origem

Endereccedilo IP de destino

Nuacutemero da porta de destino

Host receptor usa todos esses quatro valores para enviar o segmento ao socket apropriado

host servidor pode suportar diversos sockets TCP simultaneamente cada socket eacute identificado

por sua prooacutepria tupla quaacutedrupla

Servidores Web possuem sockets diferentes para cada cliente conectado HTTP natildeo-persistente teraacute

diferentes sockets para cada requisiccedilatildeo

Camada Transporte 3-13

demux (cont) com TCP

cliente IPB

P1

cliente IP A

P1 P2 P4

servidor IP C

SP 9157

DP 80

SP 9157

DP 80

P5 P6 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Camada Transporte 3-14

Demux com TCP Web Server com Threads

Client IPB

P1

client IP A

P1 P2

server IP C

SP 9157

DP 80

SP 9157

DP 80

P4 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Camada Transporte 3-15

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-16

UDP User Datagram Protocol [RFC 768]

Protocolo Internet de transporte ldquosem ornamentosrdquo e com ldquoelementos baacutesicosrdquo

Serviccedilo ldquobest effortrdquo segmentos UDP podem ser

perdidos

entregues fora de ordem agrave aplicaccedilatildeo

natildeo-orientado agrave conexatildeo sem handshaking entre

o emissor e receptor UDP

Cada segmento UDP eacute tratado de forma independente dos outros

Por que existe o UDP Sem estabelecimento de

conexatildeo (que pode adicionar atraso)

simples sem estado de conexatildeo no emissor nem no receptor

Cabeccedilalho do segmento pequeno

nenhum controle de congestionamento

Camada Transporte 3-17

UDP mais hellip

Frequumlentemente usado para aplicaccedilotildees multimiacutedia de streaming Tolerante agrave perdas Sensiacutevel agrave taxa de

dados

Outros usos do UDP DNS SNMP

Transferecircncia confiaacutevel sobre UDP confiabilidade adicionada na camada aplicaccedilatildeo Recuperaccedilatildeo de erros

especiacutefica da camada aplicaccedilatildeo

porta de origem porta de destino

32 bits

Dados da aplicaccedilatildeo

(mensagem)

Formato do segmento UDP

tamanho checksum

tamanho em bytes do

segmento UDP incluindo

o cabeccedilalho

Camada Transporte 3-18

Checksum UDP

Emissor Trata o conteuacutedo de

segmentos como uma sequumlecircncia de inteiros de 16 bits

checksum adiccedilatildeo (soma complemento 1) do conteuacutedo do segmento

Emissor coloca o valor do checksum no campo checksum do UDP

Receptor computa o checksum do

segmento recebido

Verifica se o checksum computado bate com o valor informado no campo checksum

Natildeo - erro detectado

Sim - nenhum erro detectado Mas pode haver erros Mais em breve hellip

Objetivo detectar ldquoerrosrdquo (eg bits trocados) no segmento transmitido

Camada Transporte 3-19

Exemplo de Checksum Internet Nota

Ao adicionar nuacutemeros natildeo esquecer do ldquovai umrdquo

Examplo adiccedilatildeo de dois inteiros de 16 bits

1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1

wraparound

soma

checksum

Camada Transporte 3-20

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-21

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace

Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-22

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-23

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-24

Transferecircncia confiaacutevel de dados introduccedilatildeo hellip

lado emissor

lado receptor

rdt_send() chamado pela camada superior (eg aplic) Passagem de

dados da camada superior

udt_send() chamado por rdt para transferir pacote pelo canal

natildeo-confiaacutevel ao receptor

rdt_rcv() chamado quando pacote chega no lado receptor do canal

deliver_data() chamado pelo rdt para enviar dados agrave camada superior

Camada Transporte 3-25

Transferecircncia confiaacutevel de dados introduccedilatildeo hellip Iremos

Desenvolver incrementalmente os lados receptor e emissor do protocolo de transferecircncia confiaacutevel de dados (rdt)

considere somente transferecircncia de dados unidirecional mas informaccedilotildees de controle transitaratildeo em ambos

sentidos

usar maacutequinas de estado finitas (FSM) para especificar o emissor e o receptor

estado 1

estado 2

Evento causando transiccedilatildeo de estado

Accedilotildees tomadas na transiccedilatildeo de estados

estado quando estiver neste ldquoestadordquo

proacuteximo estado eacute unicamente

determinado pelo proacuteximo evento

evento

accedilotildees

Camada Transporte 3-26

Rdt10 transferecircncia confiaacutevel sobre um canal confiaacutevel Canal de base perfeitamente confiaacutevel

Nenhum erro nos bits

Nenhuma perda de pacotes

FSMs separadas para emissor e receptor Emissor envia dados no canal

Receptor lecirc dados do canal

Wait for

call from

above packet = make_pkt(data)

udt_send(packet)

rdt_send(data)

extract (packetdata)

deliver_data(data)

Wait for

call from

below

rdt_rcv(packet)

emissor receptor

Camada Transporte 3-27

Rdt20 canal com erros em bits

Canal de base pode trocar bits dos pacotes checksum para detectar erros nos bits

a questatildeo como se recuperar de erros acknowledgements (ACKs) receptor informa

explicitamente ao emissor que pacote recebido estaacute OK

negative acknowledgements (NAKs) receptor informa explicitamente ao emissor que o pacote possui erros

Emissor retransmite pacote ao receber um NAK

novos mecanismos no rdt20 (aleacutem de rdt10) Detecccedilatildeo de erro

Feedback do receptor msgs de controle (ACKNAK) do recptor para o emissor

Camada Transporte 3-28

rdt20 especificaccedilatildeo FSM

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below emissor

receptor rdt_send(data)

Camada Transporte 3-29

rdt20 operaccedilatildeo na ausecircncia de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-30

rdt20 cenaacuterio na presenccedila de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-31

rdt20 tem um problema fatal

O que acontece se um ACKNAK eacute corrompido

emissor natildeo sabe o que aconteceu no receptor

Natildeo pode somente retransmitir possibilidade de duplicaccedilatildeo de pacotes

Tratando duplicaccedilotildees Emissor retransmitepacote

atual se ACKNAK eacute corrompido

Emissor adiciona nuacutemeros de sequumlecircncia a cada pacote

Receptor descarta (natildeo entrega para a camada superior) pacotes duplicados

Emissor envia 1 pacote e entatildeo aguarda pela Resposta do receptor

stop and wait

Camada Transporte 3-32

rdt21 emissor trata ACKNAKs corrompidos

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

Wait for

ACK or

NAK 0 udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

Wait for

call 1 from

above

Wait for

ACK or

NAK 1

L L

Camada Transporte 3-33

rdt21 receptor trata ACKNAKs corrompidos

Wait for

0 from

below

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq0(rcvpkt)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

Wait for

1 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq0(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq1(rcvpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

Camada Transporte 3-34

rdt21 discussatildeo

Emissor

de seq adicionado a pkt

2 ‟s de seq (01) satildeo suficientes Por que

Deve verificar se ACKNAK recebido estaacute corrompido

2x mais estados state deve ldquorecordarrdquo

se pacote ldquoatualrdquo possui de seq 0 ou 1

Receptor

Deve verificar se pacote recebido eacute um duplicado estado indica se de

seq do pacote esperado eacute 0 ou 1

nota receptor natildeo pode saber se seu uacuteltimo ACKNAK foi recebido OK no emissor

Camada Transporte 3-35

rdt22 um protocolo sem NAKs

Igual ao rdt21 mas usando ACKs somente

Ao inveacutes de NAK receptor envia ACK do uacuteltimo pacote recebido corretamente (OK) Receptor deve incluir explicitamente o de seq do pacote

sendo confirmado

ACK duplicado no emissor resulta na mesma accedilatildeo como para o NAK retransmiccedilatildeo do pacote atual

Camada Transporte 3-36

rdt22 fragmentos do emissor e receptor

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

Wait for

ACK

0

Fragmento da FSM do emissor

Wait for

0 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK1 chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

(corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento da FSM Do receptor

Camada Transporte 3-37

rdt30 canais com erros e perdas

Nova hipoacutetese canal de base pode agora perder pacotes (dados ou ACKs) checksum de seq

ACKs retransmissotildees ajudaratildeo mas natildeo seratildeo suficientes

Abordagem emissor aguarda um tempo ldquorazoaacutevelrdquo a recepccedilatildeo de ACKs

retransmite se nenhum ACK eacute recebido neste tempo

se pkt (ou ACK) apenas atrasado (natildeo foi perdido)

retransmissatildeo causaraacute duplicaccedilatildeo mas uso de de seq tratam isso

receptor deve especificar de seq do pacote sendo confirmado

requer temporizador

Camada Transporte 3-38

Emissor rdt30

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

Wait

for

ACK0

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

Wait for

call 1 from

above

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt0) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt1)

stop_timer

stop_timer

udt_send(sndpkt)

start_timer

timeout

udt_send(sndpkt)

start_timer

timeout

rdt_rcv(rcvpkt)

Wait for

call 0from

above

Wait

for

ACK1

L

rdt_rcv(rcvpkt)

L

L

L

Camada Transporte 3-39

rdt30 em accedilatildeo

Camada Transporte 3-40

rdt30 em accedilatildeo

Camada Transporte 3-41

Desempenho do rdt30

rdt30 funciona mas desempenho eacute ruim examplo enlace de 1 Gbps 15 ms de atraso

de propagaccedilatildeo fim-a-fim pacote de 1KB

T transmit = 8kbpkt

109 bsec = 8 microsec

U sender utilizaccedilatildeo fraccedilatildeo do tempo em que o emissor estaacute ocupado enviando

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R =

L (tamanho do pacote bits) R (taxa de transmissatildeo bps)

=

Pacote de 1KB a cada 30 msec -gt 33kBsec de vazatildeo em um enlace de 1 Gbps

O protocolo de rede limita o uso de recursos fiacutesicos

= 0027

Camada Transporte 3-42

rdt30 funcionamento do stop-and-wait

Primeiro bit do pacote transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit do pkt transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega ACK

envidado

ACK chega envia proacuteximo

pacote t = RTT + L R

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R = = 0027

Camada Transporte 3-43

Protocolos com Pipeline

Pipelining emissor permite muacuteltiplos pacotes enviados e que ainda natildeo foram confirmados range do nuacutemero de sequumlecircncia deve ser aumentado

ldquobufferizaccedilatildeordquo no emissor eou receptor

2 formas geneacutericas de protocolos pipeline go-Back-N selective repeat (SR)

Camada Transporte 3-44

Pipelining aumento da utilizaccedilatildeo

Primeiro bit do pkt transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega envia ACK

ACK chega envia proacuteximo

pacote t = RTT + L R

Uacuteltimo bit do 2o pacote chega envia ACK

Uacuteltimo bit do 3o pacote chega envia

ACK

U sender

= 024

30008 = 00008

microseconds

3 L R

RTT + L R =

Utilizaccedilatildeo aumenta de um fator de 3 (neste

exemplo)

= 008

Camada Transporte 3-45

Go-Back-N Emissor de seq de k bits no cabeccedilalho do pacote

ldquojanelardquo de ateacute N consecutivos pacotes natildeo confirmados permitida

ACK(n) confirma todos os pacotes ateacute o n - ldquoACK cumulativordquo

Pode receber ACKs duplicados ACKs (veja receptor)

Temporizador para cada pacote enviado

timeout(n) retransmite pkt n e todos pacotes com s de seq maiores que estatildeo dentro da janela

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Camada Transporte 3-46

GBN FSM do emissor estendida

Wait start_timer

udt_send(sndpkt[base])

udt_send(sndpkt[base+1])

hellip

udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

if (nextseqnum lt base+N)

sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)

udt_send(sndpkt[nextseqnum])

if (base == nextseqnum)

start_timer

nextseqnum++

else

refuse_data(data)

base = getacknum(rcvpkt)+1

If (base == nextseqnum)

stop_timer

else

start_timer

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

base=1

nextseqnum=1

rdt_rcv(rcvpkt)

ampamp corrupt(rcvpkt)

L

Somente ACKs satildeo usados (sem NAKs)

Camada Transporte 3-47

GBN FSM do receptor estendida

ACK-only sempre envia ACK para pacote recebido ldquona ordemrdquo corretamente com de seq mais elevado Pode gerar ACKs duplicados Precisa recordar somente o de seq esperado

(expectedseqnum)

Pkt fora de ordem descarta (natildeo armazena) -gt receptor natildeo possui buffer Re-ACK pkt com o de seq mais elevado e em ordem

Wait

udt_send(sndpkt)

default

rdt_rcv(rcvpkt)

ampamp notcurrupt(rcvpkt)

ampamp hasseqnum(rcvpktexpectedseqnum)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(expectedseqnumACKchksum)

udt_send(sndpkt)

expectedseqnum++

expectedseqnum=1

sndpkt =

make_pkt(expectedseqnumACKchksum)

L

Camada Transporte 3-48

GBN em accedilatildeo

Tamanho da janela = 4

Camada Transporte 3-49

SR - Selective Repeat

Receptor confirma individualmente cada pkt recebido corretamente armazena pkts quando necessaacuterio para eventual envio

de pacotes ordenados agrave camada superior

Emissor reenvia somente pkts para os quais o ACK natildeo foi recebido Emissor possui temporizador para cada pacote natildeo

confirmado (unACKed pkt)

Janela do emissor N consecutivos s de seq

Novamente limita s de seq de enviados pkts natildeo confirmados (unACKed pkts)

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 8: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-8

Multiplexaccedilatildeodemultiplexaccedilatildeo

aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

P1 aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

aplicaccedilatildeo

transporte

rede

enlace

fiacutesica

P2 P3 P4 P1

host 1 host 2 host 3

= processo = socket

Entrega dos segmentos recebidos aos sockets corretos

Demultiplexaccedilatildeo no host receptor Coletar dados dos vaacuterios sockets adiciona cabeccedilalho aos dados (mais tarde usado para demultiplexaccedilatildeo)

Multiplexaccedilatildeo no host emissor

Camada Transporte 3-9

Como a demultiplexaccedilatildeo funciona host recebe datagramas IP

cada datagrama possui endereccedilo IP fonte endereccedilo IP de destino

cada datagrama carrega 1 segmento da camada transporte

cada segmento possui nuacutemero de porta de origem e de porta de destino

host usa os endereccedilos IP amp nuacutemero das portas para enviar segmento ao socket adequado

porta de origem porta de destino

32 bits

Dados da aplicaccedilatildeo

(mensagem)

outros campos do cabeccedilalho

Formato do segmento TCPUDP

Camada Transporte 3-10

demultiplexaccedilatildeo com UDP

Criar sockets com portas respectivas

DatagramSocket mySocket1 = new

DatagramSocket(99111)

DatagramSocket mySocket2 = new

DatagramSocket(99222)

Socket UDP identificado pela tupla

(endereccedilo IP de destino nuacutemero da porta de destino)

Quando um host recebe um segmento UDP Verifica o nuacutemero da porta de

destino no segmento

direciona o segmento UDP para o socket com o nuacutemero da porta especificado

Datagramas IP com endereccedilo IP fonte diferentes eou nuacutemeros de porta de origem diferentes satildeo direcionados ao mesmo socket

Camada Transporte 3-11

demux com UDP (cont)

DatagramSocket serverSocket = new DatagramSocket(6428)

cliente IPB

P2

cliente IP A

P1 P1 P3

servidor IP C

SP 6428

DP 9157

SP 9157

DP 6428

SP 6428

DP 5775

SP 5775

DP 6428

SP provecirc uma espeacutecie de ldquoendereccedilo de retornordquo

SP source port (porta de origem) DP destination port (porta de destino)

Camada Transporte 3-12

Demux com TCP

Socket TCP identificado pela tupla quaacutedrupla Endereccedilo IP de origem

Nuacutemero da porta de origem

Endereccedilo IP de destino

Nuacutemero da porta de destino

Host receptor usa todos esses quatro valores para enviar o segmento ao socket apropriado

host servidor pode suportar diversos sockets TCP simultaneamente cada socket eacute identificado

por sua prooacutepria tupla quaacutedrupla

Servidores Web possuem sockets diferentes para cada cliente conectado HTTP natildeo-persistente teraacute

diferentes sockets para cada requisiccedilatildeo

Camada Transporte 3-13

demux (cont) com TCP

cliente IPB

P1

cliente IP A

P1 P2 P4

servidor IP C

SP 9157

DP 80

SP 9157

DP 80

P5 P6 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Camada Transporte 3-14

Demux com TCP Web Server com Threads

Client IPB

P1

client IP A

P1 P2

server IP C

SP 9157

DP 80

SP 9157

DP 80

P4 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Camada Transporte 3-15

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-16

UDP User Datagram Protocol [RFC 768]

Protocolo Internet de transporte ldquosem ornamentosrdquo e com ldquoelementos baacutesicosrdquo

Serviccedilo ldquobest effortrdquo segmentos UDP podem ser

perdidos

entregues fora de ordem agrave aplicaccedilatildeo

natildeo-orientado agrave conexatildeo sem handshaking entre

o emissor e receptor UDP

Cada segmento UDP eacute tratado de forma independente dos outros

Por que existe o UDP Sem estabelecimento de

conexatildeo (que pode adicionar atraso)

simples sem estado de conexatildeo no emissor nem no receptor

Cabeccedilalho do segmento pequeno

nenhum controle de congestionamento

Camada Transporte 3-17

UDP mais hellip

Frequumlentemente usado para aplicaccedilotildees multimiacutedia de streaming Tolerante agrave perdas Sensiacutevel agrave taxa de

dados

Outros usos do UDP DNS SNMP

Transferecircncia confiaacutevel sobre UDP confiabilidade adicionada na camada aplicaccedilatildeo Recuperaccedilatildeo de erros

especiacutefica da camada aplicaccedilatildeo

porta de origem porta de destino

32 bits

Dados da aplicaccedilatildeo

(mensagem)

Formato do segmento UDP

tamanho checksum

tamanho em bytes do

segmento UDP incluindo

o cabeccedilalho

Camada Transporte 3-18

Checksum UDP

Emissor Trata o conteuacutedo de

segmentos como uma sequumlecircncia de inteiros de 16 bits

checksum adiccedilatildeo (soma complemento 1) do conteuacutedo do segmento

Emissor coloca o valor do checksum no campo checksum do UDP

Receptor computa o checksum do

segmento recebido

Verifica se o checksum computado bate com o valor informado no campo checksum

Natildeo - erro detectado

Sim - nenhum erro detectado Mas pode haver erros Mais em breve hellip

Objetivo detectar ldquoerrosrdquo (eg bits trocados) no segmento transmitido

Camada Transporte 3-19

Exemplo de Checksum Internet Nota

Ao adicionar nuacutemeros natildeo esquecer do ldquovai umrdquo

Examplo adiccedilatildeo de dois inteiros de 16 bits

1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1

wraparound

soma

checksum

Camada Transporte 3-20

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-21

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace

Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-22

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-23

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-24

Transferecircncia confiaacutevel de dados introduccedilatildeo hellip

lado emissor

lado receptor

rdt_send() chamado pela camada superior (eg aplic) Passagem de

dados da camada superior

udt_send() chamado por rdt para transferir pacote pelo canal

natildeo-confiaacutevel ao receptor

rdt_rcv() chamado quando pacote chega no lado receptor do canal

deliver_data() chamado pelo rdt para enviar dados agrave camada superior

Camada Transporte 3-25

Transferecircncia confiaacutevel de dados introduccedilatildeo hellip Iremos

Desenvolver incrementalmente os lados receptor e emissor do protocolo de transferecircncia confiaacutevel de dados (rdt)

considere somente transferecircncia de dados unidirecional mas informaccedilotildees de controle transitaratildeo em ambos

sentidos

usar maacutequinas de estado finitas (FSM) para especificar o emissor e o receptor

estado 1

estado 2

Evento causando transiccedilatildeo de estado

Accedilotildees tomadas na transiccedilatildeo de estados

estado quando estiver neste ldquoestadordquo

proacuteximo estado eacute unicamente

determinado pelo proacuteximo evento

evento

accedilotildees

Camada Transporte 3-26

Rdt10 transferecircncia confiaacutevel sobre um canal confiaacutevel Canal de base perfeitamente confiaacutevel

Nenhum erro nos bits

Nenhuma perda de pacotes

FSMs separadas para emissor e receptor Emissor envia dados no canal

Receptor lecirc dados do canal

Wait for

call from

above packet = make_pkt(data)

udt_send(packet)

rdt_send(data)

extract (packetdata)

deliver_data(data)

Wait for

call from

below

rdt_rcv(packet)

emissor receptor

Camada Transporte 3-27

Rdt20 canal com erros em bits

Canal de base pode trocar bits dos pacotes checksum para detectar erros nos bits

a questatildeo como se recuperar de erros acknowledgements (ACKs) receptor informa

explicitamente ao emissor que pacote recebido estaacute OK

negative acknowledgements (NAKs) receptor informa explicitamente ao emissor que o pacote possui erros

Emissor retransmite pacote ao receber um NAK

novos mecanismos no rdt20 (aleacutem de rdt10) Detecccedilatildeo de erro

Feedback do receptor msgs de controle (ACKNAK) do recptor para o emissor

Camada Transporte 3-28

rdt20 especificaccedilatildeo FSM

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below emissor

receptor rdt_send(data)

Camada Transporte 3-29

rdt20 operaccedilatildeo na ausecircncia de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-30

rdt20 cenaacuterio na presenccedila de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-31

rdt20 tem um problema fatal

O que acontece se um ACKNAK eacute corrompido

emissor natildeo sabe o que aconteceu no receptor

Natildeo pode somente retransmitir possibilidade de duplicaccedilatildeo de pacotes

Tratando duplicaccedilotildees Emissor retransmitepacote

atual se ACKNAK eacute corrompido

Emissor adiciona nuacutemeros de sequumlecircncia a cada pacote

Receptor descarta (natildeo entrega para a camada superior) pacotes duplicados

Emissor envia 1 pacote e entatildeo aguarda pela Resposta do receptor

stop and wait

Camada Transporte 3-32

rdt21 emissor trata ACKNAKs corrompidos

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

Wait for

ACK or

NAK 0 udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

Wait for

call 1 from

above

Wait for

ACK or

NAK 1

L L

Camada Transporte 3-33

rdt21 receptor trata ACKNAKs corrompidos

Wait for

0 from

below

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq0(rcvpkt)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

Wait for

1 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq0(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq1(rcvpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

Camada Transporte 3-34

rdt21 discussatildeo

Emissor

de seq adicionado a pkt

2 ‟s de seq (01) satildeo suficientes Por que

Deve verificar se ACKNAK recebido estaacute corrompido

2x mais estados state deve ldquorecordarrdquo

se pacote ldquoatualrdquo possui de seq 0 ou 1

Receptor

Deve verificar se pacote recebido eacute um duplicado estado indica se de

seq do pacote esperado eacute 0 ou 1

nota receptor natildeo pode saber se seu uacuteltimo ACKNAK foi recebido OK no emissor

Camada Transporte 3-35

rdt22 um protocolo sem NAKs

Igual ao rdt21 mas usando ACKs somente

Ao inveacutes de NAK receptor envia ACK do uacuteltimo pacote recebido corretamente (OK) Receptor deve incluir explicitamente o de seq do pacote

sendo confirmado

ACK duplicado no emissor resulta na mesma accedilatildeo como para o NAK retransmiccedilatildeo do pacote atual

Camada Transporte 3-36

rdt22 fragmentos do emissor e receptor

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

Wait for

ACK

0

Fragmento da FSM do emissor

Wait for

0 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK1 chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

(corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento da FSM Do receptor

Camada Transporte 3-37

rdt30 canais com erros e perdas

Nova hipoacutetese canal de base pode agora perder pacotes (dados ou ACKs) checksum de seq

ACKs retransmissotildees ajudaratildeo mas natildeo seratildeo suficientes

Abordagem emissor aguarda um tempo ldquorazoaacutevelrdquo a recepccedilatildeo de ACKs

retransmite se nenhum ACK eacute recebido neste tempo

se pkt (ou ACK) apenas atrasado (natildeo foi perdido)

retransmissatildeo causaraacute duplicaccedilatildeo mas uso de de seq tratam isso

receptor deve especificar de seq do pacote sendo confirmado

requer temporizador

Camada Transporte 3-38

Emissor rdt30

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

Wait

for

ACK0

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

Wait for

call 1 from

above

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt0) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt1)

stop_timer

stop_timer

udt_send(sndpkt)

start_timer

timeout

udt_send(sndpkt)

start_timer

timeout

rdt_rcv(rcvpkt)

Wait for

call 0from

above

Wait

for

ACK1

L

rdt_rcv(rcvpkt)

L

L

L

Camada Transporte 3-39

rdt30 em accedilatildeo

Camada Transporte 3-40

rdt30 em accedilatildeo

Camada Transporte 3-41

Desempenho do rdt30

rdt30 funciona mas desempenho eacute ruim examplo enlace de 1 Gbps 15 ms de atraso

de propagaccedilatildeo fim-a-fim pacote de 1KB

T transmit = 8kbpkt

109 bsec = 8 microsec

U sender utilizaccedilatildeo fraccedilatildeo do tempo em que o emissor estaacute ocupado enviando

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R =

L (tamanho do pacote bits) R (taxa de transmissatildeo bps)

=

Pacote de 1KB a cada 30 msec -gt 33kBsec de vazatildeo em um enlace de 1 Gbps

O protocolo de rede limita o uso de recursos fiacutesicos

= 0027

Camada Transporte 3-42

rdt30 funcionamento do stop-and-wait

Primeiro bit do pacote transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit do pkt transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega ACK

envidado

ACK chega envia proacuteximo

pacote t = RTT + L R

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R = = 0027

Camada Transporte 3-43

Protocolos com Pipeline

Pipelining emissor permite muacuteltiplos pacotes enviados e que ainda natildeo foram confirmados range do nuacutemero de sequumlecircncia deve ser aumentado

ldquobufferizaccedilatildeordquo no emissor eou receptor

2 formas geneacutericas de protocolos pipeline go-Back-N selective repeat (SR)

Camada Transporte 3-44

Pipelining aumento da utilizaccedilatildeo

Primeiro bit do pkt transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega envia ACK

ACK chega envia proacuteximo

pacote t = RTT + L R

Uacuteltimo bit do 2o pacote chega envia ACK

Uacuteltimo bit do 3o pacote chega envia

ACK

U sender

= 024

30008 = 00008

microseconds

3 L R

RTT + L R =

Utilizaccedilatildeo aumenta de um fator de 3 (neste

exemplo)

= 008

Camada Transporte 3-45

Go-Back-N Emissor de seq de k bits no cabeccedilalho do pacote

ldquojanelardquo de ateacute N consecutivos pacotes natildeo confirmados permitida

ACK(n) confirma todos os pacotes ateacute o n - ldquoACK cumulativordquo

Pode receber ACKs duplicados ACKs (veja receptor)

Temporizador para cada pacote enviado

timeout(n) retransmite pkt n e todos pacotes com s de seq maiores que estatildeo dentro da janela

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Camada Transporte 3-46

GBN FSM do emissor estendida

Wait start_timer

udt_send(sndpkt[base])

udt_send(sndpkt[base+1])

hellip

udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

if (nextseqnum lt base+N)

sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)

udt_send(sndpkt[nextseqnum])

if (base == nextseqnum)

start_timer

nextseqnum++

else

refuse_data(data)

base = getacknum(rcvpkt)+1

If (base == nextseqnum)

stop_timer

else

start_timer

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

base=1

nextseqnum=1

rdt_rcv(rcvpkt)

ampamp corrupt(rcvpkt)

L

Somente ACKs satildeo usados (sem NAKs)

Camada Transporte 3-47

GBN FSM do receptor estendida

ACK-only sempre envia ACK para pacote recebido ldquona ordemrdquo corretamente com de seq mais elevado Pode gerar ACKs duplicados Precisa recordar somente o de seq esperado

(expectedseqnum)

Pkt fora de ordem descarta (natildeo armazena) -gt receptor natildeo possui buffer Re-ACK pkt com o de seq mais elevado e em ordem

Wait

udt_send(sndpkt)

default

rdt_rcv(rcvpkt)

ampamp notcurrupt(rcvpkt)

ampamp hasseqnum(rcvpktexpectedseqnum)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(expectedseqnumACKchksum)

udt_send(sndpkt)

expectedseqnum++

expectedseqnum=1

sndpkt =

make_pkt(expectedseqnumACKchksum)

L

Camada Transporte 3-48

GBN em accedilatildeo

Tamanho da janela = 4

Camada Transporte 3-49

SR - Selective Repeat

Receptor confirma individualmente cada pkt recebido corretamente armazena pkts quando necessaacuterio para eventual envio

de pacotes ordenados agrave camada superior

Emissor reenvia somente pkts para os quais o ACK natildeo foi recebido Emissor possui temporizador para cada pacote natildeo

confirmado (unACKed pkt)

Janela do emissor N consecutivos s de seq

Novamente limita s de seq de enviados pkts natildeo confirmados (unACKed pkts)

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 9: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-9

Como a demultiplexaccedilatildeo funciona host recebe datagramas IP

cada datagrama possui endereccedilo IP fonte endereccedilo IP de destino

cada datagrama carrega 1 segmento da camada transporte

cada segmento possui nuacutemero de porta de origem e de porta de destino

host usa os endereccedilos IP amp nuacutemero das portas para enviar segmento ao socket adequado

porta de origem porta de destino

32 bits

Dados da aplicaccedilatildeo

(mensagem)

outros campos do cabeccedilalho

Formato do segmento TCPUDP

Camada Transporte 3-10

demultiplexaccedilatildeo com UDP

Criar sockets com portas respectivas

DatagramSocket mySocket1 = new

DatagramSocket(99111)

DatagramSocket mySocket2 = new

DatagramSocket(99222)

Socket UDP identificado pela tupla

(endereccedilo IP de destino nuacutemero da porta de destino)

Quando um host recebe um segmento UDP Verifica o nuacutemero da porta de

destino no segmento

direciona o segmento UDP para o socket com o nuacutemero da porta especificado

Datagramas IP com endereccedilo IP fonte diferentes eou nuacutemeros de porta de origem diferentes satildeo direcionados ao mesmo socket

Camada Transporte 3-11

demux com UDP (cont)

DatagramSocket serverSocket = new DatagramSocket(6428)

cliente IPB

P2

cliente IP A

P1 P1 P3

servidor IP C

SP 6428

DP 9157

SP 9157

DP 6428

SP 6428

DP 5775

SP 5775

DP 6428

SP provecirc uma espeacutecie de ldquoendereccedilo de retornordquo

SP source port (porta de origem) DP destination port (porta de destino)

Camada Transporte 3-12

Demux com TCP

Socket TCP identificado pela tupla quaacutedrupla Endereccedilo IP de origem

Nuacutemero da porta de origem

Endereccedilo IP de destino

Nuacutemero da porta de destino

Host receptor usa todos esses quatro valores para enviar o segmento ao socket apropriado

host servidor pode suportar diversos sockets TCP simultaneamente cada socket eacute identificado

por sua prooacutepria tupla quaacutedrupla

Servidores Web possuem sockets diferentes para cada cliente conectado HTTP natildeo-persistente teraacute

diferentes sockets para cada requisiccedilatildeo

Camada Transporte 3-13

demux (cont) com TCP

cliente IPB

P1

cliente IP A

P1 P2 P4

servidor IP C

SP 9157

DP 80

SP 9157

DP 80

P5 P6 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Camada Transporte 3-14

Demux com TCP Web Server com Threads

Client IPB

P1

client IP A

P1 P2

server IP C

SP 9157

DP 80

SP 9157

DP 80

P4 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Camada Transporte 3-15

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-16

UDP User Datagram Protocol [RFC 768]

Protocolo Internet de transporte ldquosem ornamentosrdquo e com ldquoelementos baacutesicosrdquo

Serviccedilo ldquobest effortrdquo segmentos UDP podem ser

perdidos

entregues fora de ordem agrave aplicaccedilatildeo

natildeo-orientado agrave conexatildeo sem handshaking entre

o emissor e receptor UDP

Cada segmento UDP eacute tratado de forma independente dos outros

Por que existe o UDP Sem estabelecimento de

conexatildeo (que pode adicionar atraso)

simples sem estado de conexatildeo no emissor nem no receptor

Cabeccedilalho do segmento pequeno

nenhum controle de congestionamento

Camada Transporte 3-17

UDP mais hellip

Frequumlentemente usado para aplicaccedilotildees multimiacutedia de streaming Tolerante agrave perdas Sensiacutevel agrave taxa de

dados

Outros usos do UDP DNS SNMP

Transferecircncia confiaacutevel sobre UDP confiabilidade adicionada na camada aplicaccedilatildeo Recuperaccedilatildeo de erros

especiacutefica da camada aplicaccedilatildeo

porta de origem porta de destino

32 bits

Dados da aplicaccedilatildeo

(mensagem)

Formato do segmento UDP

tamanho checksum

tamanho em bytes do

segmento UDP incluindo

o cabeccedilalho

Camada Transporte 3-18

Checksum UDP

Emissor Trata o conteuacutedo de

segmentos como uma sequumlecircncia de inteiros de 16 bits

checksum adiccedilatildeo (soma complemento 1) do conteuacutedo do segmento

Emissor coloca o valor do checksum no campo checksum do UDP

Receptor computa o checksum do

segmento recebido

Verifica se o checksum computado bate com o valor informado no campo checksum

Natildeo - erro detectado

Sim - nenhum erro detectado Mas pode haver erros Mais em breve hellip

Objetivo detectar ldquoerrosrdquo (eg bits trocados) no segmento transmitido

Camada Transporte 3-19

Exemplo de Checksum Internet Nota

Ao adicionar nuacutemeros natildeo esquecer do ldquovai umrdquo

Examplo adiccedilatildeo de dois inteiros de 16 bits

1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1

wraparound

soma

checksum

Camada Transporte 3-20

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-21

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace

Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-22

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-23

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-24

Transferecircncia confiaacutevel de dados introduccedilatildeo hellip

lado emissor

lado receptor

rdt_send() chamado pela camada superior (eg aplic) Passagem de

dados da camada superior

udt_send() chamado por rdt para transferir pacote pelo canal

natildeo-confiaacutevel ao receptor

rdt_rcv() chamado quando pacote chega no lado receptor do canal

deliver_data() chamado pelo rdt para enviar dados agrave camada superior

Camada Transporte 3-25

Transferecircncia confiaacutevel de dados introduccedilatildeo hellip Iremos

Desenvolver incrementalmente os lados receptor e emissor do protocolo de transferecircncia confiaacutevel de dados (rdt)

considere somente transferecircncia de dados unidirecional mas informaccedilotildees de controle transitaratildeo em ambos

sentidos

usar maacutequinas de estado finitas (FSM) para especificar o emissor e o receptor

estado 1

estado 2

Evento causando transiccedilatildeo de estado

Accedilotildees tomadas na transiccedilatildeo de estados

estado quando estiver neste ldquoestadordquo

proacuteximo estado eacute unicamente

determinado pelo proacuteximo evento

evento

accedilotildees

Camada Transporte 3-26

Rdt10 transferecircncia confiaacutevel sobre um canal confiaacutevel Canal de base perfeitamente confiaacutevel

Nenhum erro nos bits

Nenhuma perda de pacotes

FSMs separadas para emissor e receptor Emissor envia dados no canal

Receptor lecirc dados do canal

Wait for

call from

above packet = make_pkt(data)

udt_send(packet)

rdt_send(data)

extract (packetdata)

deliver_data(data)

Wait for

call from

below

rdt_rcv(packet)

emissor receptor

Camada Transporte 3-27

Rdt20 canal com erros em bits

Canal de base pode trocar bits dos pacotes checksum para detectar erros nos bits

a questatildeo como se recuperar de erros acknowledgements (ACKs) receptor informa

explicitamente ao emissor que pacote recebido estaacute OK

negative acknowledgements (NAKs) receptor informa explicitamente ao emissor que o pacote possui erros

Emissor retransmite pacote ao receber um NAK

novos mecanismos no rdt20 (aleacutem de rdt10) Detecccedilatildeo de erro

Feedback do receptor msgs de controle (ACKNAK) do recptor para o emissor

Camada Transporte 3-28

rdt20 especificaccedilatildeo FSM

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below emissor

receptor rdt_send(data)

Camada Transporte 3-29

rdt20 operaccedilatildeo na ausecircncia de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-30

rdt20 cenaacuterio na presenccedila de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-31

rdt20 tem um problema fatal

O que acontece se um ACKNAK eacute corrompido

emissor natildeo sabe o que aconteceu no receptor

Natildeo pode somente retransmitir possibilidade de duplicaccedilatildeo de pacotes

Tratando duplicaccedilotildees Emissor retransmitepacote

atual se ACKNAK eacute corrompido

Emissor adiciona nuacutemeros de sequumlecircncia a cada pacote

Receptor descarta (natildeo entrega para a camada superior) pacotes duplicados

Emissor envia 1 pacote e entatildeo aguarda pela Resposta do receptor

stop and wait

Camada Transporte 3-32

rdt21 emissor trata ACKNAKs corrompidos

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

Wait for

ACK or

NAK 0 udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

Wait for

call 1 from

above

Wait for

ACK or

NAK 1

L L

Camada Transporte 3-33

rdt21 receptor trata ACKNAKs corrompidos

Wait for

0 from

below

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq0(rcvpkt)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

Wait for

1 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq0(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq1(rcvpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

Camada Transporte 3-34

rdt21 discussatildeo

Emissor

de seq adicionado a pkt

2 ‟s de seq (01) satildeo suficientes Por que

Deve verificar se ACKNAK recebido estaacute corrompido

2x mais estados state deve ldquorecordarrdquo

se pacote ldquoatualrdquo possui de seq 0 ou 1

Receptor

Deve verificar se pacote recebido eacute um duplicado estado indica se de

seq do pacote esperado eacute 0 ou 1

nota receptor natildeo pode saber se seu uacuteltimo ACKNAK foi recebido OK no emissor

Camada Transporte 3-35

rdt22 um protocolo sem NAKs

Igual ao rdt21 mas usando ACKs somente

Ao inveacutes de NAK receptor envia ACK do uacuteltimo pacote recebido corretamente (OK) Receptor deve incluir explicitamente o de seq do pacote

sendo confirmado

ACK duplicado no emissor resulta na mesma accedilatildeo como para o NAK retransmiccedilatildeo do pacote atual

Camada Transporte 3-36

rdt22 fragmentos do emissor e receptor

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

Wait for

ACK

0

Fragmento da FSM do emissor

Wait for

0 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK1 chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

(corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento da FSM Do receptor

Camada Transporte 3-37

rdt30 canais com erros e perdas

Nova hipoacutetese canal de base pode agora perder pacotes (dados ou ACKs) checksum de seq

ACKs retransmissotildees ajudaratildeo mas natildeo seratildeo suficientes

Abordagem emissor aguarda um tempo ldquorazoaacutevelrdquo a recepccedilatildeo de ACKs

retransmite se nenhum ACK eacute recebido neste tempo

se pkt (ou ACK) apenas atrasado (natildeo foi perdido)

retransmissatildeo causaraacute duplicaccedilatildeo mas uso de de seq tratam isso

receptor deve especificar de seq do pacote sendo confirmado

requer temporizador

Camada Transporte 3-38

Emissor rdt30

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

Wait

for

ACK0

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

Wait for

call 1 from

above

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt0) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt1)

stop_timer

stop_timer

udt_send(sndpkt)

start_timer

timeout

udt_send(sndpkt)

start_timer

timeout

rdt_rcv(rcvpkt)

Wait for

call 0from

above

Wait

for

ACK1

L

rdt_rcv(rcvpkt)

L

L

L

Camada Transporte 3-39

rdt30 em accedilatildeo

Camada Transporte 3-40

rdt30 em accedilatildeo

Camada Transporte 3-41

Desempenho do rdt30

rdt30 funciona mas desempenho eacute ruim examplo enlace de 1 Gbps 15 ms de atraso

de propagaccedilatildeo fim-a-fim pacote de 1KB

T transmit = 8kbpkt

109 bsec = 8 microsec

U sender utilizaccedilatildeo fraccedilatildeo do tempo em que o emissor estaacute ocupado enviando

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R =

L (tamanho do pacote bits) R (taxa de transmissatildeo bps)

=

Pacote de 1KB a cada 30 msec -gt 33kBsec de vazatildeo em um enlace de 1 Gbps

O protocolo de rede limita o uso de recursos fiacutesicos

= 0027

Camada Transporte 3-42

rdt30 funcionamento do stop-and-wait

Primeiro bit do pacote transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit do pkt transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega ACK

envidado

ACK chega envia proacuteximo

pacote t = RTT + L R

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R = = 0027

Camada Transporte 3-43

Protocolos com Pipeline

Pipelining emissor permite muacuteltiplos pacotes enviados e que ainda natildeo foram confirmados range do nuacutemero de sequumlecircncia deve ser aumentado

ldquobufferizaccedilatildeordquo no emissor eou receptor

2 formas geneacutericas de protocolos pipeline go-Back-N selective repeat (SR)

Camada Transporte 3-44

Pipelining aumento da utilizaccedilatildeo

Primeiro bit do pkt transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega envia ACK

ACK chega envia proacuteximo

pacote t = RTT + L R

Uacuteltimo bit do 2o pacote chega envia ACK

Uacuteltimo bit do 3o pacote chega envia

ACK

U sender

= 024

30008 = 00008

microseconds

3 L R

RTT + L R =

Utilizaccedilatildeo aumenta de um fator de 3 (neste

exemplo)

= 008

Camada Transporte 3-45

Go-Back-N Emissor de seq de k bits no cabeccedilalho do pacote

ldquojanelardquo de ateacute N consecutivos pacotes natildeo confirmados permitida

ACK(n) confirma todos os pacotes ateacute o n - ldquoACK cumulativordquo

Pode receber ACKs duplicados ACKs (veja receptor)

Temporizador para cada pacote enviado

timeout(n) retransmite pkt n e todos pacotes com s de seq maiores que estatildeo dentro da janela

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Camada Transporte 3-46

GBN FSM do emissor estendida

Wait start_timer

udt_send(sndpkt[base])

udt_send(sndpkt[base+1])

hellip

udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

if (nextseqnum lt base+N)

sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)

udt_send(sndpkt[nextseqnum])

if (base == nextseqnum)

start_timer

nextseqnum++

else

refuse_data(data)

base = getacknum(rcvpkt)+1

If (base == nextseqnum)

stop_timer

else

start_timer

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

base=1

nextseqnum=1

rdt_rcv(rcvpkt)

ampamp corrupt(rcvpkt)

L

Somente ACKs satildeo usados (sem NAKs)

Camada Transporte 3-47

GBN FSM do receptor estendida

ACK-only sempre envia ACK para pacote recebido ldquona ordemrdquo corretamente com de seq mais elevado Pode gerar ACKs duplicados Precisa recordar somente o de seq esperado

(expectedseqnum)

Pkt fora de ordem descarta (natildeo armazena) -gt receptor natildeo possui buffer Re-ACK pkt com o de seq mais elevado e em ordem

Wait

udt_send(sndpkt)

default

rdt_rcv(rcvpkt)

ampamp notcurrupt(rcvpkt)

ampamp hasseqnum(rcvpktexpectedseqnum)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(expectedseqnumACKchksum)

udt_send(sndpkt)

expectedseqnum++

expectedseqnum=1

sndpkt =

make_pkt(expectedseqnumACKchksum)

L

Camada Transporte 3-48

GBN em accedilatildeo

Tamanho da janela = 4

Camada Transporte 3-49

SR - Selective Repeat

Receptor confirma individualmente cada pkt recebido corretamente armazena pkts quando necessaacuterio para eventual envio

de pacotes ordenados agrave camada superior

Emissor reenvia somente pkts para os quais o ACK natildeo foi recebido Emissor possui temporizador para cada pacote natildeo

confirmado (unACKed pkt)

Janela do emissor N consecutivos s de seq

Novamente limita s de seq de enviados pkts natildeo confirmados (unACKed pkts)

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 10: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-10

demultiplexaccedilatildeo com UDP

Criar sockets com portas respectivas

DatagramSocket mySocket1 = new

DatagramSocket(99111)

DatagramSocket mySocket2 = new

DatagramSocket(99222)

Socket UDP identificado pela tupla

(endereccedilo IP de destino nuacutemero da porta de destino)

Quando um host recebe um segmento UDP Verifica o nuacutemero da porta de

destino no segmento

direciona o segmento UDP para o socket com o nuacutemero da porta especificado

Datagramas IP com endereccedilo IP fonte diferentes eou nuacutemeros de porta de origem diferentes satildeo direcionados ao mesmo socket

Camada Transporte 3-11

demux com UDP (cont)

DatagramSocket serverSocket = new DatagramSocket(6428)

cliente IPB

P2

cliente IP A

P1 P1 P3

servidor IP C

SP 6428

DP 9157

SP 9157

DP 6428

SP 6428

DP 5775

SP 5775

DP 6428

SP provecirc uma espeacutecie de ldquoendereccedilo de retornordquo

SP source port (porta de origem) DP destination port (porta de destino)

Camada Transporte 3-12

Demux com TCP

Socket TCP identificado pela tupla quaacutedrupla Endereccedilo IP de origem

Nuacutemero da porta de origem

Endereccedilo IP de destino

Nuacutemero da porta de destino

Host receptor usa todos esses quatro valores para enviar o segmento ao socket apropriado

host servidor pode suportar diversos sockets TCP simultaneamente cada socket eacute identificado

por sua prooacutepria tupla quaacutedrupla

Servidores Web possuem sockets diferentes para cada cliente conectado HTTP natildeo-persistente teraacute

diferentes sockets para cada requisiccedilatildeo

Camada Transporte 3-13

demux (cont) com TCP

cliente IPB

P1

cliente IP A

P1 P2 P4

servidor IP C

SP 9157

DP 80

SP 9157

DP 80

P5 P6 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Camada Transporte 3-14

Demux com TCP Web Server com Threads

Client IPB

P1

client IP A

P1 P2

server IP C

SP 9157

DP 80

SP 9157

DP 80

P4 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Camada Transporte 3-15

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-16

UDP User Datagram Protocol [RFC 768]

Protocolo Internet de transporte ldquosem ornamentosrdquo e com ldquoelementos baacutesicosrdquo

Serviccedilo ldquobest effortrdquo segmentos UDP podem ser

perdidos

entregues fora de ordem agrave aplicaccedilatildeo

natildeo-orientado agrave conexatildeo sem handshaking entre

o emissor e receptor UDP

Cada segmento UDP eacute tratado de forma independente dos outros

Por que existe o UDP Sem estabelecimento de

conexatildeo (que pode adicionar atraso)

simples sem estado de conexatildeo no emissor nem no receptor

Cabeccedilalho do segmento pequeno

nenhum controle de congestionamento

Camada Transporte 3-17

UDP mais hellip

Frequumlentemente usado para aplicaccedilotildees multimiacutedia de streaming Tolerante agrave perdas Sensiacutevel agrave taxa de

dados

Outros usos do UDP DNS SNMP

Transferecircncia confiaacutevel sobre UDP confiabilidade adicionada na camada aplicaccedilatildeo Recuperaccedilatildeo de erros

especiacutefica da camada aplicaccedilatildeo

porta de origem porta de destino

32 bits

Dados da aplicaccedilatildeo

(mensagem)

Formato do segmento UDP

tamanho checksum

tamanho em bytes do

segmento UDP incluindo

o cabeccedilalho

Camada Transporte 3-18

Checksum UDP

Emissor Trata o conteuacutedo de

segmentos como uma sequumlecircncia de inteiros de 16 bits

checksum adiccedilatildeo (soma complemento 1) do conteuacutedo do segmento

Emissor coloca o valor do checksum no campo checksum do UDP

Receptor computa o checksum do

segmento recebido

Verifica se o checksum computado bate com o valor informado no campo checksum

Natildeo - erro detectado

Sim - nenhum erro detectado Mas pode haver erros Mais em breve hellip

Objetivo detectar ldquoerrosrdquo (eg bits trocados) no segmento transmitido

Camada Transporte 3-19

Exemplo de Checksum Internet Nota

Ao adicionar nuacutemeros natildeo esquecer do ldquovai umrdquo

Examplo adiccedilatildeo de dois inteiros de 16 bits

1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1

wraparound

soma

checksum

Camada Transporte 3-20

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-21

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace

Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-22

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-23

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-24

Transferecircncia confiaacutevel de dados introduccedilatildeo hellip

lado emissor

lado receptor

rdt_send() chamado pela camada superior (eg aplic) Passagem de

dados da camada superior

udt_send() chamado por rdt para transferir pacote pelo canal

natildeo-confiaacutevel ao receptor

rdt_rcv() chamado quando pacote chega no lado receptor do canal

deliver_data() chamado pelo rdt para enviar dados agrave camada superior

Camada Transporte 3-25

Transferecircncia confiaacutevel de dados introduccedilatildeo hellip Iremos

Desenvolver incrementalmente os lados receptor e emissor do protocolo de transferecircncia confiaacutevel de dados (rdt)

considere somente transferecircncia de dados unidirecional mas informaccedilotildees de controle transitaratildeo em ambos

sentidos

usar maacutequinas de estado finitas (FSM) para especificar o emissor e o receptor

estado 1

estado 2

Evento causando transiccedilatildeo de estado

Accedilotildees tomadas na transiccedilatildeo de estados

estado quando estiver neste ldquoestadordquo

proacuteximo estado eacute unicamente

determinado pelo proacuteximo evento

evento

accedilotildees

Camada Transporte 3-26

Rdt10 transferecircncia confiaacutevel sobre um canal confiaacutevel Canal de base perfeitamente confiaacutevel

Nenhum erro nos bits

Nenhuma perda de pacotes

FSMs separadas para emissor e receptor Emissor envia dados no canal

Receptor lecirc dados do canal

Wait for

call from

above packet = make_pkt(data)

udt_send(packet)

rdt_send(data)

extract (packetdata)

deliver_data(data)

Wait for

call from

below

rdt_rcv(packet)

emissor receptor

Camada Transporte 3-27

Rdt20 canal com erros em bits

Canal de base pode trocar bits dos pacotes checksum para detectar erros nos bits

a questatildeo como se recuperar de erros acknowledgements (ACKs) receptor informa

explicitamente ao emissor que pacote recebido estaacute OK

negative acknowledgements (NAKs) receptor informa explicitamente ao emissor que o pacote possui erros

Emissor retransmite pacote ao receber um NAK

novos mecanismos no rdt20 (aleacutem de rdt10) Detecccedilatildeo de erro

Feedback do receptor msgs de controle (ACKNAK) do recptor para o emissor

Camada Transporte 3-28

rdt20 especificaccedilatildeo FSM

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below emissor

receptor rdt_send(data)

Camada Transporte 3-29

rdt20 operaccedilatildeo na ausecircncia de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-30

rdt20 cenaacuterio na presenccedila de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-31

rdt20 tem um problema fatal

O que acontece se um ACKNAK eacute corrompido

emissor natildeo sabe o que aconteceu no receptor

Natildeo pode somente retransmitir possibilidade de duplicaccedilatildeo de pacotes

Tratando duplicaccedilotildees Emissor retransmitepacote

atual se ACKNAK eacute corrompido

Emissor adiciona nuacutemeros de sequumlecircncia a cada pacote

Receptor descarta (natildeo entrega para a camada superior) pacotes duplicados

Emissor envia 1 pacote e entatildeo aguarda pela Resposta do receptor

stop and wait

Camada Transporte 3-32

rdt21 emissor trata ACKNAKs corrompidos

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

Wait for

ACK or

NAK 0 udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

Wait for

call 1 from

above

Wait for

ACK or

NAK 1

L L

Camada Transporte 3-33

rdt21 receptor trata ACKNAKs corrompidos

Wait for

0 from

below

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq0(rcvpkt)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

Wait for

1 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq0(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq1(rcvpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

Camada Transporte 3-34

rdt21 discussatildeo

Emissor

de seq adicionado a pkt

2 ‟s de seq (01) satildeo suficientes Por que

Deve verificar se ACKNAK recebido estaacute corrompido

2x mais estados state deve ldquorecordarrdquo

se pacote ldquoatualrdquo possui de seq 0 ou 1

Receptor

Deve verificar se pacote recebido eacute um duplicado estado indica se de

seq do pacote esperado eacute 0 ou 1

nota receptor natildeo pode saber se seu uacuteltimo ACKNAK foi recebido OK no emissor

Camada Transporte 3-35

rdt22 um protocolo sem NAKs

Igual ao rdt21 mas usando ACKs somente

Ao inveacutes de NAK receptor envia ACK do uacuteltimo pacote recebido corretamente (OK) Receptor deve incluir explicitamente o de seq do pacote

sendo confirmado

ACK duplicado no emissor resulta na mesma accedilatildeo como para o NAK retransmiccedilatildeo do pacote atual

Camada Transporte 3-36

rdt22 fragmentos do emissor e receptor

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

Wait for

ACK

0

Fragmento da FSM do emissor

Wait for

0 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK1 chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

(corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento da FSM Do receptor

Camada Transporte 3-37

rdt30 canais com erros e perdas

Nova hipoacutetese canal de base pode agora perder pacotes (dados ou ACKs) checksum de seq

ACKs retransmissotildees ajudaratildeo mas natildeo seratildeo suficientes

Abordagem emissor aguarda um tempo ldquorazoaacutevelrdquo a recepccedilatildeo de ACKs

retransmite se nenhum ACK eacute recebido neste tempo

se pkt (ou ACK) apenas atrasado (natildeo foi perdido)

retransmissatildeo causaraacute duplicaccedilatildeo mas uso de de seq tratam isso

receptor deve especificar de seq do pacote sendo confirmado

requer temporizador

Camada Transporte 3-38

Emissor rdt30

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

Wait

for

ACK0

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

Wait for

call 1 from

above

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt0) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt1)

stop_timer

stop_timer

udt_send(sndpkt)

start_timer

timeout

udt_send(sndpkt)

start_timer

timeout

rdt_rcv(rcvpkt)

Wait for

call 0from

above

Wait

for

ACK1

L

rdt_rcv(rcvpkt)

L

L

L

Camada Transporte 3-39

rdt30 em accedilatildeo

Camada Transporte 3-40

rdt30 em accedilatildeo

Camada Transporte 3-41

Desempenho do rdt30

rdt30 funciona mas desempenho eacute ruim examplo enlace de 1 Gbps 15 ms de atraso

de propagaccedilatildeo fim-a-fim pacote de 1KB

T transmit = 8kbpkt

109 bsec = 8 microsec

U sender utilizaccedilatildeo fraccedilatildeo do tempo em que o emissor estaacute ocupado enviando

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R =

L (tamanho do pacote bits) R (taxa de transmissatildeo bps)

=

Pacote de 1KB a cada 30 msec -gt 33kBsec de vazatildeo em um enlace de 1 Gbps

O protocolo de rede limita o uso de recursos fiacutesicos

= 0027

Camada Transporte 3-42

rdt30 funcionamento do stop-and-wait

Primeiro bit do pacote transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit do pkt transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega ACK

envidado

ACK chega envia proacuteximo

pacote t = RTT + L R

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R = = 0027

Camada Transporte 3-43

Protocolos com Pipeline

Pipelining emissor permite muacuteltiplos pacotes enviados e que ainda natildeo foram confirmados range do nuacutemero de sequumlecircncia deve ser aumentado

ldquobufferizaccedilatildeordquo no emissor eou receptor

2 formas geneacutericas de protocolos pipeline go-Back-N selective repeat (SR)

Camada Transporte 3-44

Pipelining aumento da utilizaccedilatildeo

Primeiro bit do pkt transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega envia ACK

ACK chega envia proacuteximo

pacote t = RTT + L R

Uacuteltimo bit do 2o pacote chega envia ACK

Uacuteltimo bit do 3o pacote chega envia

ACK

U sender

= 024

30008 = 00008

microseconds

3 L R

RTT + L R =

Utilizaccedilatildeo aumenta de um fator de 3 (neste

exemplo)

= 008

Camada Transporte 3-45

Go-Back-N Emissor de seq de k bits no cabeccedilalho do pacote

ldquojanelardquo de ateacute N consecutivos pacotes natildeo confirmados permitida

ACK(n) confirma todos os pacotes ateacute o n - ldquoACK cumulativordquo

Pode receber ACKs duplicados ACKs (veja receptor)

Temporizador para cada pacote enviado

timeout(n) retransmite pkt n e todos pacotes com s de seq maiores que estatildeo dentro da janela

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Camada Transporte 3-46

GBN FSM do emissor estendida

Wait start_timer

udt_send(sndpkt[base])

udt_send(sndpkt[base+1])

hellip

udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

if (nextseqnum lt base+N)

sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)

udt_send(sndpkt[nextseqnum])

if (base == nextseqnum)

start_timer

nextseqnum++

else

refuse_data(data)

base = getacknum(rcvpkt)+1

If (base == nextseqnum)

stop_timer

else

start_timer

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

base=1

nextseqnum=1

rdt_rcv(rcvpkt)

ampamp corrupt(rcvpkt)

L

Somente ACKs satildeo usados (sem NAKs)

Camada Transporte 3-47

GBN FSM do receptor estendida

ACK-only sempre envia ACK para pacote recebido ldquona ordemrdquo corretamente com de seq mais elevado Pode gerar ACKs duplicados Precisa recordar somente o de seq esperado

(expectedseqnum)

Pkt fora de ordem descarta (natildeo armazena) -gt receptor natildeo possui buffer Re-ACK pkt com o de seq mais elevado e em ordem

Wait

udt_send(sndpkt)

default

rdt_rcv(rcvpkt)

ampamp notcurrupt(rcvpkt)

ampamp hasseqnum(rcvpktexpectedseqnum)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(expectedseqnumACKchksum)

udt_send(sndpkt)

expectedseqnum++

expectedseqnum=1

sndpkt =

make_pkt(expectedseqnumACKchksum)

L

Camada Transporte 3-48

GBN em accedilatildeo

Tamanho da janela = 4

Camada Transporte 3-49

SR - Selective Repeat

Receptor confirma individualmente cada pkt recebido corretamente armazena pkts quando necessaacuterio para eventual envio

de pacotes ordenados agrave camada superior

Emissor reenvia somente pkts para os quais o ACK natildeo foi recebido Emissor possui temporizador para cada pacote natildeo

confirmado (unACKed pkt)

Janela do emissor N consecutivos s de seq

Novamente limita s de seq de enviados pkts natildeo confirmados (unACKed pkts)

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 11: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-11

demux com UDP (cont)

DatagramSocket serverSocket = new DatagramSocket(6428)

cliente IPB

P2

cliente IP A

P1 P1 P3

servidor IP C

SP 6428

DP 9157

SP 9157

DP 6428

SP 6428

DP 5775

SP 5775

DP 6428

SP provecirc uma espeacutecie de ldquoendereccedilo de retornordquo

SP source port (porta de origem) DP destination port (porta de destino)

Camada Transporte 3-12

Demux com TCP

Socket TCP identificado pela tupla quaacutedrupla Endereccedilo IP de origem

Nuacutemero da porta de origem

Endereccedilo IP de destino

Nuacutemero da porta de destino

Host receptor usa todos esses quatro valores para enviar o segmento ao socket apropriado

host servidor pode suportar diversos sockets TCP simultaneamente cada socket eacute identificado

por sua prooacutepria tupla quaacutedrupla

Servidores Web possuem sockets diferentes para cada cliente conectado HTTP natildeo-persistente teraacute

diferentes sockets para cada requisiccedilatildeo

Camada Transporte 3-13

demux (cont) com TCP

cliente IPB

P1

cliente IP A

P1 P2 P4

servidor IP C

SP 9157

DP 80

SP 9157

DP 80

P5 P6 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Camada Transporte 3-14

Demux com TCP Web Server com Threads

Client IPB

P1

client IP A

P1 P2

server IP C

SP 9157

DP 80

SP 9157

DP 80

P4 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Camada Transporte 3-15

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-16

UDP User Datagram Protocol [RFC 768]

Protocolo Internet de transporte ldquosem ornamentosrdquo e com ldquoelementos baacutesicosrdquo

Serviccedilo ldquobest effortrdquo segmentos UDP podem ser

perdidos

entregues fora de ordem agrave aplicaccedilatildeo

natildeo-orientado agrave conexatildeo sem handshaking entre

o emissor e receptor UDP

Cada segmento UDP eacute tratado de forma independente dos outros

Por que existe o UDP Sem estabelecimento de

conexatildeo (que pode adicionar atraso)

simples sem estado de conexatildeo no emissor nem no receptor

Cabeccedilalho do segmento pequeno

nenhum controle de congestionamento

Camada Transporte 3-17

UDP mais hellip

Frequumlentemente usado para aplicaccedilotildees multimiacutedia de streaming Tolerante agrave perdas Sensiacutevel agrave taxa de

dados

Outros usos do UDP DNS SNMP

Transferecircncia confiaacutevel sobre UDP confiabilidade adicionada na camada aplicaccedilatildeo Recuperaccedilatildeo de erros

especiacutefica da camada aplicaccedilatildeo

porta de origem porta de destino

32 bits

Dados da aplicaccedilatildeo

(mensagem)

Formato do segmento UDP

tamanho checksum

tamanho em bytes do

segmento UDP incluindo

o cabeccedilalho

Camada Transporte 3-18

Checksum UDP

Emissor Trata o conteuacutedo de

segmentos como uma sequumlecircncia de inteiros de 16 bits

checksum adiccedilatildeo (soma complemento 1) do conteuacutedo do segmento

Emissor coloca o valor do checksum no campo checksum do UDP

Receptor computa o checksum do

segmento recebido

Verifica se o checksum computado bate com o valor informado no campo checksum

Natildeo - erro detectado

Sim - nenhum erro detectado Mas pode haver erros Mais em breve hellip

Objetivo detectar ldquoerrosrdquo (eg bits trocados) no segmento transmitido

Camada Transporte 3-19

Exemplo de Checksum Internet Nota

Ao adicionar nuacutemeros natildeo esquecer do ldquovai umrdquo

Examplo adiccedilatildeo de dois inteiros de 16 bits

1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1

wraparound

soma

checksum

Camada Transporte 3-20

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-21

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace

Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-22

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-23

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-24

Transferecircncia confiaacutevel de dados introduccedilatildeo hellip

lado emissor

lado receptor

rdt_send() chamado pela camada superior (eg aplic) Passagem de

dados da camada superior

udt_send() chamado por rdt para transferir pacote pelo canal

natildeo-confiaacutevel ao receptor

rdt_rcv() chamado quando pacote chega no lado receptor do canal

deliver_data() chamado pelo rdt para enviar dados agrave camada superior

Camada Transporte 3-25

Transferecircncia confiaacutevel de dados introduccedilatildeo hellip Iremos

Desenvolver incrementalmente os lados receptor e emissor do protocolo de transferecircncia confiaacutevel de dados (rdt)

considere somente transferecircncia de dados unidirecional mas informaccedilotildees de controle transitaratildeo em ambos

sentidos

usar maacutequinas de estado finitas (FSM) para especificar o emissor e o receptor

estado 1

estado 2

Evento causando transiccedilatildeo de estado

Accedilotildees tomadas na transiccedilatildeo de estados

estado quando estiver neste ldquoestadordquo

proacuteximo estado eacute unicamente

determinado pelo proacuteximo evento

evento

accedilotildees

Camada Transporte 3-26

Rdt10 transferecircncia confiaacutevel sobre um canal confiaacutevel Canal de base perfeitamente confiaacutevel

Nenhum erro nos bits

Nenhuma perda de pacotes

FSMs separadas para emissor e receptor Emissor envia dados no canal

Receptor lecirc dados do canal

Wait for

call from

above packet = make_pkt(data)

udt_send(packet)

rdt_send(data)

extract (packetdata)

deliver_data(data)

Wait for

call from

below

rdt_rcv(packet)

emissor receptor

Camada Transporte 3-27

Rdt20 canal com erros em bits

Canal de base pode trocar bits dos pacotes checksum para detectar erros nos bits

a questatildeo como se recuperar de erros acknowledgements (ACKs) receptor informa

explicitamente ao emissor que pacote recebido estaacute OK

negative acknowledgements (NAKs) receptor informa explicitamente ao emissor que o pacote possui erros

Emissor retransmite pacote ao receber um NAK

novos mecanismos no rdt20 (aleacutem de rdt10) Detecccedilatildeo de erro

Feedback do receptor msgs de controle (ACKNAK) do recptor para o emissor

Camada Transporte 3-28

rdt20 especificaccedilatildeo FSM

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below emissor

receptor rdt_send(data)

Camada Transporte 3-29

rdt20 operaccedilatildeo na ausecircncia de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-30

rdt20 cenaacuterio na presenccedila de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-31

rdt20 tem um problema fatal

O que acontece se um ACKNAK eacute corrompido

emissor natildeo sabe o que aconteceu no receptor

Natildeo pode somente retransmitir possibilidade de duplicaccedilatildeo de pacotes

Tratando duplicaccedilotildees Emissor retransmitepacote

atual se ACKNAK eacute corrompido

Emissor adiciona nuacutemeros de sequumlecircncia a cada pacote

Receptor descarta (natildeo entrega para a camada superior) pacotes duplicados

Emissor envia 1 pacote e entatildeo aguarda pela Resposta do receptor

stop and wait

Camada Transporte 3-32

rdt21 emissor trata ACKNAKs corrompidos

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

Wait for

ACK or

NAK 0 udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

Wait for

call 1 from

above

Wait for

ACK or

NAK 1

L L

Camada Transporte 3-33

rdt21 receptor trata ACKNAKs corrompidos

Wait for

0 from

below

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq0(rcvpkt)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

Wait for

1 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq0(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq1(rcvpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

Camada Transporte 3-34

rdt21 discussatildeo

Emissor

de seq adicionado a pkt

2 ‟s de seq (01) satildeo suficientes Por que

Deve verificar se ACKNAK recebido estaacute corrompido

2x mais estados state deve ldquorecordarrdquo

se pacote ldquoatualrdquo possui de seq 0 ou 1

Receptor

Deve verificar se pacote recebido eacute um duplicado estado indica se de

seq do pacote esperado eacute 0 ou 1

nota receptor natildeo pode saber se seu uacuteltimo ACKNAK foi recebido OK no emissor

Camada Transporte 3-35

rdt22 um protocolo sem NAKs

Igual ao rdt21 mas usando ACKs somente

Ao inveacutes de NAK receptor envia ACK do uacuteltimo pacote recebido corretamente (OK) Receptor deve incluir explicitamente o de seq do pacote

sendo confirmado

ACK duplicado no emissor resulta na mesma accedilatildeo como para o NAK retransmiccedilatildeo do pacote atual

Camada Transporte 3-36

rdt22 fragmentos do emissor e receptor

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

Wait for

ACK

0

Fragmento da FSM do emissor

Wait for

0 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK1 chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

(corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento da FSM Do receptor

Camada Transporte 3-37

rdt30 canais com erros e perdas

Nova hipoacutetese canal de base pode agora perder pacotes (dados ou ACKs) checksum de seq

ACKs retransmissotildees ajudaratildeo mas natildeo seratildeo suficientes

Abordagem emissor aguarda um tempo ldquorazoaacutevelrdquo a recepccedilatildeo de ACKs

retransmite se nenhum ACK eacute recebido neste tempo

se pkt (ou ACK) apenas atrasado (natildeo foi perdido)

retransmissatildeo causaraacute duplicaccedilatildeo mas uso de de seq tratam isso

receptor deve especificar de seq do pacote sendo confirmado

requer temporizador

Camada Transporte 3-38

Emissor rdt30

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

Wait

for

ACK0

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

Wait for

call 1 from

above

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt0) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt1)

stop_timer

stop_timer

udt_send(sndpkt)

start_timer

timeout

udt_send(sndpkt)

start_timer

timeout

rdt_rcv(rcvpkt)

Wait for

call 0from

above

Wait

for

ACK1

L

rdt_rcv(rcvpkt)

L

L

L

Camada Transporte 3-39

rdt30 em accedilatildeo

Camada Transporte 3-40

rdt30 em accedilatildeo

Camada Transporte 3-41

Desempenho do rdt30

rdt30 funciona mas desempenho eacute ruim examplo enlace de 1 Gbps 15 ms de atraso

de propagaccedilatildeo fim-a-fim pacote de 1KB

T transmit = 8kbpkt

109 bsec = 8 microsec

U sender utilizaccedilatildeo fraccedilatildeo do tempo em que o emissor estaacute ocupado enviando

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R =

L (tamanho do pacote bits) R (taxa de transmissatildeo bps)

=

Pacote de 1KB a cada 30 msec -gt 33kBsec de vazatildeo em um enlace de 1 Gbps

O protocolo de rede limita o uso de recursos fiacutesicos

= 0027

Camada Transporte 3-42

rdt30 funcionamento do stop-and-wait

Primeiro bit do pacote transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit do pkt transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega ACK

envidado

ACK chega envia proacuteximo

pacote t = RTT + L R

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R = = 0027

Camada Transporte 3-43

Protocolos com Pipeline

Pipelining emissor permite muacuteltiplos pacotes enviados e que ainda natildeo foram confirmados range do nuacutemero de sequumlecircncia deve ser aumentado

ldquobufferizaccedilatildeordquo no emissor eou receptor

2 formas geneacutericas de protocolos pipeline go-Back-N selective repeat (SR)

Camada Transporte 3-44

Pipelining aumento da utilizaccedilatildeo

Primeiro bit do pkt transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega envia ACK

ACK chega envia proacuteximo

pacote t = RTT + L R

Uacuteltimo bit do 2o pacote chega envia ACK

Uacuteltimo bit do 3o pacote chega envia

ACK

U sender

= 024

30008 = 00008

microseconds

3 L R

RTT + L R =

Utilizaccedilatildeo aumenta de um fator de 3 (neste

exemplo)

= 008

Camada Transporte 3-45

Go-Back-N Emissor de seq de k bits no cabeccedilalho do pacote

ldquojanelardquo de ateacute N consecutivos pacotes natildeo confirmados permitida

ACK(n) confirma todos os pacotes ateacute o n - ldquoACK cumulativordquo

Pode receber ACKs duplicados ACKs (veja receptor)

Temporizador para cada pacote enviado

timeout(n) retransmite pkt n e todos pacotes com s de seq maiores que estatildeo dentro da janela

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Camada Transporte 3-46

GBN FSM do emissor estendida

Wait start_timer

udt_send(sndpkt[base])

udt_send(sndpkt[base+1])

hellip

udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

if (nextseqnum lt base+N)

sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)

udt_send(sndpkt[nextseqnum])

if (base == nextseqnum)

start_timer

nextseqnum++

else

refuse_data(data)

base = getacknum(rcvpkt)+1

If (base == nextseqnum)

stop_timer

else

start_timer

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

base=1

nextseqnum=1

rdt_rcv(rcvpkt)

ampamp corrupt(rcvpkt)

L

Somente ACKs satildeo usados (sem NAKs)

Camada Transporte 3-47

GBN FSM do receptor estendida

ACK-only sempre envia ACK para pacote recebido ldquona ordemrdquo corretamente com de seq mais elevado Pode gerar ACKs duplicados Precisa recordar somente o de seq esperado

(expectedseqnum)

Pkt fora de ordem descarta (natildeo armazena) -gt receptor natildeo possui buffer Re-ACK pkt com o de seq mais elevado e em ordem

Wait

udt_send(sndpkt)

default

rdt_rcv(rcvpkt)

ampamp notcurrupt(rcvpkt)

ampamp hasseqnum(rcvpktexpectedseqnum)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(expectedseqnumACKchksum)

udt_send(sndpkt)

expectedseqnum++

expectedseqnum=1

sndpkt =

make_pkt(expectedseqnumACKchksum)

L

Camada Transporte 3-48

GBN em accedilatildeo

Tamanho da janela = 4

Camada Transporte 3-49

SR - Selective Repeat

Receptor confirma individualmente cada pkt recebido corretamente armazena pkts quando necessaacuterio para eventual envio

de pacotes ordenados agrave camada superior

Emissor reenvia somente pkts para os quais o ACK natildeo foi recebido Emissor possui temporizador para cada pacote natildeo

confirmado (unACKed pkt)

Janela do emissor N consecutivos s de seq

Novamente limita s de seq de enviados pkts natildeo confirmados (unACKed pkts)

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 12: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-12

Demux com TCP

Socket TCP identificado pela tupla quaacutedrupla Endereccedilo IP de origem

Nuacutemero da porta de origem

Endereccedilo IP de destino

Nuacutemero da porta de destino

Host receptor usa todos esses quatro valores para enviar o segmento ao socket apropriado

host servidor pode suportar diversos sockets TCP simultaneamente cada socket eacute identificado

por sua prooacutepria tupla quaacutedrupla

Servidores Web possuem sockets diferentes para cada cliente conectado HTTP natildeo-persistente teraacute

diferentes sockets para cada requisiccedilatildeo

Camada Transporte 3-13

demux (cont) com TCP

cliente IPB

P1

cliente IP A

P1 P2 P4

servidor IP C

SP 9157

DP 80

SP 9157

DP 80

P5 P6 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Camada Transporte 3-14

Demux com TCP Web Server com Threads

Client IPB

P1

client IP A

P1 P2

server IP C

SP 9157

DP 80

SP 9157

DP 80

P4 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Camada Transporte 3-15

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-16

UDP User Datagram Protocol [RFC 768]

Protocolo Internet de transporte ldquosem ornamentosrdquo e com ldquoelementos baacutesicosrdquo

Serviccedilo ldquobest effortrdquo segmentos UDP podem ser

perdidos

entregues fora de ordem agrave aplicaccedilatildeo

natildeo-orientado agrave conexatildeo sem handshaking entre

o emissor e receptor UDP

Cada segmento UDP eacute tratado de forma independente dos outros

Por que existe o UDP Sem estabelecimento de

conexatildeo (que pode adicionar atraso)

simples sem estado de conexatildeo no emissor nem no receptor

Cabeccedilalho do segmento pequeno

nenhum controle de congestionamento

Camada Transporte 3-17

UDP mais hellip

Frequumlentemente usado para aplicaccedilotildees multimiacutedia de streaming Tolerante agrave perdas Sensiacutevel agrave taxa de

dados

Outros usos do UDP DNS SNMP

Transferecircncia confiaacutevel sobre UDP confiabilidade adicionada na camada aplicaccedilatildeo Recuperaccedilatildeo de erros

especiacutefica da camada aplicaccedilatildeo

porta de origem porta de destino

32 bits

Dados da aplicaccedilatildeo

(mensagem)

Formato do segmento UDP

tamanho checksum

tamanho em bytes do

segmento UDP incluindo

o cabeccedilalho

Camada Transporte 3-18

Checksum UDP

Emissor Trata o conteuacutedo de

segmentos como uma sequumlecircncia de inteiros de 16 bits

checksum adiccedilatildeo (soma complemento 1) do conteuacutedo do segmento

Emissor coloca o valor do checksum no campo checksum do UDP

Receptor computa o checksum do

segmento recebido

Verifica se o checksum computado bate com o valor informado no campo checksum

Natildeo - erro detectado

Sim - nenhum erro detectado Mas pode haver erros Mais em breve hellip

Objetivo detectar ldquoerrosrdquo (eg bits trocados) no segmento transmitido

Camada Transporte 3-19

Exemplo de Checksum Internet Nota

Ao adicionar nuacutemeros natildeo esquecer do ldquovai umrdquo

Examplo adiccedilatildeo de dois inteiros de 16 bits

1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1

wraparound

soma

checksum

Camada Transporte 3-20

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-21

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace

Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-22

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-23

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-24

Transferecircncia confiaacutevel de dados introduccedilatildeo hellip

lado emissor

lado receptor

rdt_send() chamado pela camada superior (eg aplic) Passagem de

dados da camada superior

udt_send() chamado por rdt para transferir pacote pelo canal

natildeo-confiaacutevel ao receptor

rdt_rcv() chamado quando pacote chega no lado receptor do canal

deliver_data() chamado pelo rdt para enviar dados agrave camada superior

Camada Transporte 3-25

Transferecircncia confiaacutevel de dados introduccedilatildeo hellip Iremos

Desenvolver incrementalmente os lados receptor e emissor do protocolo de transferecircncia confiaacutevel de dados (rdt)

considere somente transferecircncia de dados unidirecional mas informaccedilotildees de controle transitaratildeo em ambos

sentidos

usar maacutequinas de estado finitas (FSM) para especificar o emissor e o receptor

estado 1

estado 2

Evento causando transiccedilatildeo de estado

Accedilotildees tomadas na transiccedilatildeo de estados

estado quando estiver neste ldquoestadordquo

proacuteximo estado eacute unicamente

determinado pelo proacuteximo evento

evento

accedilotildees

Camada Transporte 3-26

Rdt10 transferecircncia confiaacutevel sobre um canal confiaacutevel Canal de base perfeitamente confiaacutevel

Nenhum erro nos bits

Nenhuma perda de pacotes

FSMs separadas para emissor e receptor Emissor envia dados no canal

Receptor lecirc dados do canal

Wait for

call from

above packet = make_pkt(data)

udt_send(packet)

rdt_send(data)

extract (packetdata)

deliver_data(data)

Wait for

call from

below

rdt_rcv(packet)

emissor receptor

Camada Transporte 3-27

Rdt20 canal com erros em bits

Canal de base pode trocar bits dos pacotes checksum para detectar erros nos bits

a questatildeo como se recuperar de erros acknowledgements (ACKs) receptor informa

explicitamente ao emissor que pacote recebido estaacute OK

negative acknowledgements (NAKs) receptor informa explicitamente ao emissor que o pacote possui erros

Emissor retransmite pacote ao receber um NAK

novos mecanismos no rdt20 (aleacutem de rdt10) Detecccedilatildeo de erro

Feedback do receptor msgs de controle (ACKNAK) do recptor para o emissor

Camada Transporte 3-28

rdt20 especificaccedilatildeo FSM

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below emissor

receptor rdt_send(data)

Camada Transporte 3-29

rdt20 operaccedilatildeo na ausecircncia de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-30

rdt20 cenaacuterio na presenccedila de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-31

rdt20 tem um problema fatal

O que acontece se um ACKNAK eacute corrompido

emissor natildeo sabe o que aconteceu no receptor

Natildeo pode somente retransmitir possibilidade de duplicaccedilatildeo de pacotes

Tratando duplicaccedilotildees Emissor retransmitepacote

atual se ACKNAK eacute corrompido

Emissor adiciona nuacutemeros de sequumlecircncia a cada pacote

Receptor descarta (natildeo entrega para a camada superior) pacotes duplicados

Emissor envia 1 pacote e entatildeo aguarda pela Resposta do receptor

stop and wait

Camada Transporte 3-32

rdt21 emissor trata ACKNAKs corrompidos

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

Wait for

ACK or

NAK 0 udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

Wait for

call 1 from

above

Wait for

ACK or

NAK 1

L L

Camada Transporte 3-33

rdt21 receptor trata ACKNAKs corrompidos

Wait for

0 from

below

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq0(rcvpkt)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

Wait for

1 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq0(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq1(rcvpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

Camada Transporte 3-34

rdt21 discussatildeo

Emissor

de seq adicionado a pkt

2 ‟s de seq (01) satildeo suficientes Por que

Deve verificar se ACKNAK recebido estaacute corrompido

2x mais estados state deve ldquorecordarrdquo

se pacote ldquoatualrdquo possui de seq 0 ou 1

Receptor

Deve verificar se pacote recebido eacute um duplicado estado indica se de

seq do pacote esperado eacute 0 ou 1

nota receptor natildeo pode saber se seu uacuteltimo ACKNAK foi recebido OK no emissor

Camada Transporte 3-35

rdt22 um protocolo sem NAKs

Igual ao rdt21 mas usando ACKs somente

Ao inveacutes de NAK receptor envia ACK do uacuteltimo pacote recebido corretamente (OK) Receptor deve incluir explicitamente o de seq do pacote

sendo confirmado

ACK duplicado no emissor resulta na mesma accedilatildeo como para o NAK retransmiccedilatildeo do pacote atual

Camada Transporte 3-36

rdt22 fragmentos do emissor e receptor

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

Wait for

ACK

0

Fragmento da FSM do emissor

Wait for

0 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK1 chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

(corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento da FSM Do receptor

Camada Transporte 3-37

rdt30 canais com erros e perdas

Nova hipoacutetese canal de base pode agora perder pacotes (dados ou ACKs) checksum de seq

ACKs retransmissotildees ajudaratildeo mas natildeo seratildeo suficientes

Abordagem emissor aguarda um tempo ldquorazoaacutevelrdquo a recepccedilatildeo de ACKs

retransmite se nenhum ACK eacute recebido neste tempo

se pkt (ou ACK) apenas atrasado (natildeo foi perdido)

retransmissatildeo causaraacute duplicaccedilatildeo mas uso de de seq tratam isso

receptor deve especificar de seq do pacote sendo confirmado

requer temporizador

Camada Transporte 3-38

Emissor rdt30

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

Wait

for

ACK0

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

Wait for

call 1 from

above

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt0) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt1)

stop_timer

stop_timer

udt_send(sndpkt)

start_timer

timeout

udt_send(sndpkt)

start_timer

timeout

rdt_rcv(rcvpkt)

Wait for

call 0from

above

Wait

for

ACK1

L

rdt_rcv(rcvpkt)

L

L

L

Camada Transporte 3-39

rdt30 em accedilatildeo

Camada Transporte 3-40

rdt30 em accedilatildeo

Camada Transporte 3-41

Desempenho do rdt30

rdt30 funciona mas desempenho eacute ruim examplo enlace de 1 Gbps 15 ms de atraso

de propagaccedilatildeo fim-a-fim pacote de 1KB

T transmit = 8kbpkt

109 bsec = 8 microsec

U sender utilizaccedilatildeo fraccedilatildeo do tempo em que o emissor estaacute ocupado enviando

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R =

L (tamanho do pacote bits) R (taxa de transmissatildeo bps)

=

Pacote de 1KB a cada 30 msec -gt 33kBsec de vazatildeo em um enlace de 1 Gbps

O protocolo de rede limita o uso de recursos fiacutesicos

= 0027

Camada Transporte 3-42

rdt30 funcionamento do stop-and-wait

Primeiro bit do pacote transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit do pkt transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega ACK

envidado

ACK chega envia proacuteximo

pacote t = RTT + L R

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R = = 0027

Camada Transporte 3-43

Protocolos com Pipeline

Pipelining emissor permite muacuteltiplos pacotes enviados e que ainda natildeo foram confirmados range do nuacutemero de sequumlecircncia deve ser aumentado

ldquobufferizaccedilatildeordquo no emissor eou receptor

2 formas geneacutericas de protocolos pipeline go-Back-N selective repeat (SR)

Camada Transporte 3-44

Pipelining aumento da utilizaccedilatildeo

Primeiro bit do pkt transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega envia ACK

ACK chega envia proacuteximo

pacote t = RTT + L R

Uacuteltimo bit do 2o pacote chega envia ACK

Uacuteltimo bit do 3o pacote chega envia

ACK

U sender

= 024

30008 = 00008

microseconds

3 L R

RTT + L R =

Utilizaccedilatildeo aumenta de um fator de 3 (neste

exemplo)

= 008

Camada Transporte 3-45

Go-Back-N Emissor de seq de k bits no cabeccedilalho do pacote

ldquojanelardquo de ateacute N consecutivos pacotes natildeo confirmados permitida

ACK(n) confirma todos os pacotes ateacute o n - ldquoACK cumulativordquo

Pode receber ACKs duplicados ACKs (veja receptor)

Temporizador para cada pacote enviado

timeout(n) retransmite pkt n e todos pacotes com s de seq maiores que estatildeo dentro da janela

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Camada Transporte 3-46

GBN FSM do emissor estendida

Wait start_timer

udt_send(sndpkt[base])

udt_send(sndpkt[base+1])

hellip

udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

if (nextseqnum lt base+N)

sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)

udt_send(sndpkt[nextseqnum])

if (base == nextseqnum)

start_timer

nextseqnum++

else

refuse_data(data)

base = getacknum(rcvpkt)+1

If (base == nextseqnum)

stop_timer

else

start_timer

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

base=1

nextseqnum=1

rdt_rcv(rcvpkt)

ampamp corrupt(rcvpkt)

L

Somente ACKs satildeo usados (sem NAKs)

Camada Transporte 3-47

GBN FSM do receptor estendida

ACK-only sempre envia ACK para pacote recebido ldquona ordemrdquo corretamente com de seq mais elevado Pode gerar ACKs duplicados Precisa recordar somente o de seq esperado

(expectedseqnum)

Pkt fora de ordem descarta (natildeo armazena) -gt receptor natildeo possui buffer Re-ACK pkt com o de seq mais elevado e em ordem

Wait

udt_send(sndpkt)

default

rdt_rcv(rcvpkt)

ampamp notcurrupt(rcvpkt)

ampamp hasseqnum(rcvpktexpectedseqnum)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(expectedseqnumACKchksum)

udt_send(sndpkt)

expectedseqnum++

expectedseqnum=1

sndpkt =

make_pkt(expectedseqnumACKchksum)

L

Camada Transporte 3-48

GBN em accedilatildeo

Tamanho da janela = 4

Camada Transporte 3-49

SR - Selective Repeat

Receptor confirma individualmente cada pkt recebido corretamente armazena pkts quando necessaacuterio para eventual envio

de pacotes ordenados agrave camada superior

Emissor reenvia somente pkts para os quais o ACK natildeo foi recebido Emissor possui temporizador para cada pacote natildeo

confirmado (unACKed pkt)

Janela do emissor N consecutivos s de seq

Novamente limita s de seq de enviados pkts natildeo confirmados (unACKed pkts)

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 13: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-13

demux (cont) com TCP

cliente IPB

P1

cliente IP A

P1 P2 P4

servidor IP C

SP 9157

DP 80

SP 9157

DP 80

P5 P6 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Camada Transporte 3-14

Demux com TCP Web Server com Threads

Client IPB

P1

client IP A

P1 P2

server IP C

SP 9157

DP 80

SP 9157

DP 80

P4 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Camada Transporte 3-15

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-16

UDP User Datagram Protocol [RFC 768]

Protocolo Internet de transporte ldquosem ornamentosrdquo e com ldquoelementos baacutesicosrdquo

Serviccedilo ldquobest effortrdquo segmentos UDP podem ser

perdidos

entregues fora de ordem agrave aplicaccedilatildeo

natildeo-orientado agrave conexatildeo sem handshaking entre

o emissor e receptor UDP

Cada segmento UDP eacute tratado de forma independente dos outros

Por que existe o UDP Sem estabelecimento de

conexatildeo (que pode adicionar atraso)

simples sem estado de conexatildeo no emissor nem no receptor

Cabeccedilalho do segmento pequeno

nenhum controle de congestionamento

Camada Transporte 3-17

UDP mais hellip

Frequumlentemente usado para aplicaccedilotildees multimiacutedia de streaming Tolerante agrave perdas Sensiacutevel agrave taxa de

dados

Outros usos do UDP DNS SNMP

Transferecircncia confiaacutevel sobre UDP confiabilidade adicionada na camada aplicaccedilatildeo Recuperaccedilatildeo de erros

especiacutefica da camada aplicaccedilatildeo

porta de origem porta de destino

32 bits

Dados da aplicaccedilatildeo

(mensagem)

Formato do segmento UDP

tamanho checksum

tamanho em bytes do

segmento UDP incluindo

o cabeccedilalho

Camada Transporte 3-18

Checksum UDP

Emissor Trata o conteuacutedo de

segmentos como uma sequumlecircncia de inteiros de 16 bits

checksum adiccedilatildeo (soma complemento 1) do conteuacutedo do segmento

Emissor coloca o valor do checksum no campo checksum do UDP

Receptor computa o checksum do

segmento recebido

Verifica se o checksum computado bate com o valor informado no campo checksum

Natildeo - erro detectado

Sim - nenhum erro detectado Mas pode haver erros Mais em breve hellip

Objetivo detectar ldquoerrosrdquo (eg bits trocados) no segmento transmitido

Camada Transporte 3-19

Exemplo de Checksum Internet Nota

Ao adicionar nuacutemeros natildeo esquecer do ldquovai umrdquo

Examplo adiccedilatildeo de dois inteiros de 16 bits

1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1

wraparound

soma

checksum

Camada Transporte 3-20

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-21

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace

Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-22

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-23

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-24

Transferecircncia confiaacutevel de dados introduccedilatildeo hellip

lado emissor

lado receptor

rdt_send() chamado pela camada superior (eg aplic) Passagem de

dados da camada superior

udt_send() chamado por rdt para transferir pacote pelo canal

natildeo-confiaacutevel ao receptor

rdt_rcv() chamado quando pacote chega no lado receptor do canal

deliver_data() chamado pelo rdt para enviar dados agrave camada superior

Camada Transporte 3-25

Transferecircncia confiaacutevel de dados introduccedilatildeo hellip Iremos

Desenvolver incrementalmente os lados receptor e emissor do protocolo de transferecircncia confiaacutevel de dados (rdt)

considere somente transferecircncia de dados unidirecional mas informaccedilotildees de controle transitaratildeo em ambos

sentidos

usar maacutequinas de estado finitas (FSM) para especificar o emissor e o receptor

estado 1

estado 2

Evento causando transiccedilatildeo de estado

Accedilotildees tomadas na transiccedilatildeo de estados

estado quando estiver neste ldquoestadordquo

proacuteximo estado eacute unicamente

determinado pelo proacuteximo evento

evento

accedilotildees

Camada Transporte 3-26

Rdt10 transferecircncia confiaacutevel sobre um canal confiaacutevel Canal de base perfeitamente confiaacutevel

Nenhum erro nos bits

Nenhuma perda de pacotes

FSMs separadas para emissor e receptor Emissor envia dados no canal

Receptor lecirc dados do canal

Wait for

call from

above packet = make_pkt(data)

udt_send(packet)

rdt_send(data)

extract (packetdata)

deliver_data(data)

Wait for

call from

below

rdt_rcv(packet)

emissor receptor

Camada Transporte 3-27

Rdt20 canal com erros em bits

Canal de base pode trocar bits dos pacotes checksum para detectar erros nos bits

a questatildeo como se recuperar de erros acknowledgements (ACKs) receptor informa

explicitamente ao emissor que pacote recebido estaacute OK

negative acknowledgements (NAKs) receptor informa explicitamente ao emissor que o pacote possui erros

Emissor retransmite pacote ao receber um NAK

novos mecanismos no rdt20 (aleacutem de rdt10) Detecccedilatildeo de erro

Feedback do receptor msgs de controle (ACKNAK) do recptor para o emissor

Camada Transporte 3-28

rdt20 especificaccedilatildeo FSM

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below emissor

receptor rdt_send(data)

Camada Transporte 3-29

rdt20 operaccedilatildeo na ausecircncia de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-30

rdt20 cenaacuterio na presenccedila de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-31

rdt20 tem um problema fatal

O que acontece se um ACKNAK eacute corrompido

emissor natildeo sabe o que aconteceu no receptor

Natildeo pode somente retransmitir possibilidade de duplicaccedilatildeo de pacotes

Tratando duplicaccedilotildees Emissor retransmitepacote

atual se ACKNAK eacute corrompido

Emissor adiciona nuacutemeros de sequumlecircncia a cada pacote

Receptor descarta (natildeo entrega para a camada superior) pacotes duplicados

Emissor envia 1 pacote e entatildeo aguarda pela Resposta do receptor

stop and wait

Camada Transporte 3-32

rdt21 emissor trata ACKNAKs corrompidos

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

Wait for

ACK or

NAK 0 udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

Wait for

call 1 from

above

Wait for

ACK or

NAK 1

L L

Camada Transporte 3-33

rdt21 receptor trata ACKNAKs corrompidos

Wait for

0 from

below

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq0(rcvpkt)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

Wait for

1 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq0(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq1(rcvpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

Camada Transporte 3-34

rdt21 discussatildeo

Emissor

de seq adicionado a pkt

2 ‟s de seq (01) satildeo suficientes Por que

Deve verificar se ACKNAK recebido estaacute corrompido

2x mais estados state deve ldquorecordarrdquo

se pacote ldquoatualrdquo possui de seq 0 ou 1

Receptor

Deve verificar se pacote recebido eacute um duplicado estado indica se de

seq do pacote esperado eacute 0 ou 1

nota receptor natildeo pode saber se seu uacuteltimo ACKNAK foi recebido OK no emissor

Camada Transporte 3-35

rdt22 um protocolo sem NAKs

Igual ao rdt21 mas usando ACKs somente

Ao inveacutes de NAK receptor envia ACK do uacuteltimo pacote recebido corretamente (OK) Receptor deve incluir explicitamente o de seq do pacote

sendo confirmado

ACK duplicado no emissor resulta na mesma accedilatildeo como para o NAK retransmiccedilatildeo do pacote atual

Camada Transporte 3-36

rdt22 fragmentos do emissor e receptor

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

Wait for

ACK

0

Fragmento da FSM do emissor

Wait for

0 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK1 chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

(corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento da FSM Do receptor

Camada Transporte 3-37

rdt30 canais com erros e perdas

Nova hipoacutetese canal de base pode agora perder pacotes (dados ou ACKs) checksum de seq

ACKs retransmissotildees ajudaratildeo mas natildeo seratildeo suficientes

Abordagem emissor aguarda um tempo ldquorazoaacutevelrdquo a recepccedilatildeo de ACKs

retransmite se nenhum ACK eacute recebido neste tempo

se pkt (ou ACK) apenas atrasado (natildeo foi perdido)

retransmissatildeo causaraacute duplicaccedilatildeo mas uso de de seq tratam isso

receptor deve especificar de seq do pacote sendo confirmado

requer temporizador

Camada Transporte 3-38

Emissor rdt30

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

Wait

for

ACK0

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

Wait for

call 1 from

above

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt0) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt1)

stop_timer

stop_timer

udt_send(sndpkt)

start_timer

timeout

udt_send(sndpkt)

start_timer

timeout

rdt_rcv(rcvpkt)

Wait for

call 0from

above

Wait

for

ACK1

L

rdt_rcv(rcvpkt)

L

L

L

Camada Transporte 3-39

rdt30 em accedilatildeo

Camada Transporte 3-40

rdt30 em accedilatildeo

Camada Transporte 3-41

Desempenho do rdt30

rdt30 funciona mas desempenho eacute ruim examplo enlace de 1 Gbps 15 ms de atraso

de propagaccedilatildeo fim-a-fim pacote de 1KB

T transmit = 8kbpkt

109 bsec = 8 microsec

U sender utilizaccedilatildeo fraccedilatildeo do tempo em que o emissor estaacute ocupado enviando

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R =

L (tamanho do pacote bits) R (taxa de transmissatildeo bps)

=

Pacote de 1KB a cada 30 msec -gt 33kBsec de vazatildeo em um enlace de 1 Gbps

O protocolo de rede limita o uso de recursos fiacutesicos

= 0027

Camada Transporte 3-42

rdt30 funcionamento do stop-and-wait

Primeiro bit do pacote transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit do pkt transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega ACK

envidado

ACK chega envia proacuteximo

pacote t = RTT + L R

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R = = 0027

Camada Transporte 3-43

Protocolos com Pipeline

Pipelining emissor permite muacuteltiplos pacotes enviados e que ainda natildeo foram confirmados range do nuacutemero de sequumlecircncia deve ser aumentado

ldquobufferizaccedilatildeordquo no emissor eou receptor

2 formas geneacutericas de protocolos pipeline go-Back-N selective repeat (SR)

Camada Transporte 3-44

Pipelining aumento da utilizaccedilatildeo

Primeiro bit do pkt transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega envia ACK

ACK chega envia proacuteximo

pacote t = RTT + L R

Uacuteltimo bit do 2o pacote chega envia ACK

Uacuteltimo bit do 3o pacote chega envia

ACK

U sender

= 024

30008 = 00008

microseconds

3 L R

RTT + L R =

Utilizaccedilatildeo aumenta de um fator de 3 (neste

exemplo)

= 008

Camada Transporte 3-45

Go-Back-N Emissor de seq de k bits no cabeccedilalho do pacote

ldquojanelardquo de ateacute N consecutivos pacotes natildeo confirmados permitida

ACK(n) confirma todos os pacotes ateacute o n - ldquoACK cumulativordquo

Pode receber ACKs duplicados ACKs (veja receptor)

Temporizador para cada pacote enviado

timeout(n) retransmite pkt n e todos pacotes com s de seq maiores que estatildeo dentro da janela

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Camada Transporte 3-46

GBN FSM do emissor estendida

Wait start_timer

udt_send(sndpkt[base])

udt_send(sndpkt[base+1])

hellip

udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

if (nextseqnum lt base+N)

sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)

udt_send(sndpkt[nextseqnum])

if (base == nextseqnum)

start_timer

nextseqnum++

else

refuse_data(data)

base = getacknum(rcvpkt)+1

If (base == nextseqnum)

stop_timer

else

start_timer

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

base=1

nextseqnum=1

rdt_rcv(rcvpkt)

ampamp corrupt(rcvpkt)

L

Somente ACKs satildeo usados (sem NAKs)

Camada Transporte 3-47

GBN FSM do receptor estendida

ACK-only sempre envia ACK para pacote recebido ldquona ordemrdquo corretamente com de seq mais elevado Pode gerar ACKs duplicados Precisa recordar somente o de seq esperado

(expectedseqnum)

Pkt fora de ordem descarta (natildeo armazena) -gt receptor natildeo possui buffer Re-ACK pkt com o de seq mais elevado e em ordem

Wait

udt_send(sndpkt)

default

rdt_rcv(rcvpkt)

ampamp notcurrupt(rcvpkt)

ampamp hasseqnum(rcvpktexpectedseqnum)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(expectedseqnumACKchksum)

udt_send(sndpkt)

expectedseqnum++

expectedseqnum=1

sndpkt =

make_pkt(expectedseqnumACKchksum)

L

Camada Transporte 3-48

GBN em accedilatildeo

Tamanho da janela = 4

Camada Transporte 3-49

SR - Selective Repeat

Receptor confirma individualmente cada pkt recebido corretamente armazena pkts quando necessaacuterio para eventual envio

de pacotes ordenados agrave camada superior

Emissor reenvia somente pkts para os quais o ACK natildeo foi recebido Emissor possui temporizador para cada pacote natildeo

confirmado (unACKed pkt)

Janela do emissor N consecutivos s de seq

Novamente limita s de seq de enviados pkts natildeo confirmados (unACKed pkts)

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 14: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-14

Demux com TCP Web Server com Threads

Client IPB

P1

client IP A

P1 P2

server IP C

SP 9157

DP 80

SP 9157

DP 80

P4 P3

D-IPC

S-IP A

D-IPC

S-IP B

SP 5775

DP 80

D-IPC

S-IP B

Camada Transporte 3-15

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-16

UDP User Datagram Protocol [RFC 768]

Protocolo Internet de transporte ldquosem ornamentosrdquo e com ldquoelementos baacutesicosrdquo

Serviccedilo ldquobest effortrdquo segmentos UDP podem ser

perdidos

entregues fora de ordem agrave aplicaccedilatildeo

natildeo-orientado agrave conexatildeo sem handshaking entre

o emissor e receptor UDP

Cada segmento UDP eacute tratado de forma independente dos outros

Por que existe o UDP Sem estabelecimento de

conexatildeo (que pode adicionar atraso)

simples sem estado de conexatildeo no emissor nem no receptor

Cabeccedilalho do segmento pequeno

nenhum controle de congestionamento

Camada Transporte 3-17

UDP mais hellip

Frequumlentemente usado para aplicaccedilotildees multimiacutedia de streaming Tolerante agrave perdas Sensiacutevel agrave taxa de

dados

Outros usos do UDP DNS SNMP

Transferecircncia confiaacutevel sobre UDP confiabilidade adicionada na camada aplicaccedilatildeo Recuperaccedilatildeo de erros

especiacutefica da camada aplicaccedilatildeo

porta de origem porta de destino

32 bits

Dados da aplicaccedilatildeo

(mensagem)

Formato do segmento UDP

tamanho checksum

tamanho em bytes do

segmento UDP incluindo

o cabeccedilalho

Camada Transporte 3-18

Checksum UDP

Emissor Trata o conteuacutedo de

segmentos como uma sequumlecircncia de inteiros de 16 bits

checksum adiccedilatildeo (soma complemento 1) do conteuacutedo do segmento

Emissor coloca o valor do checksum no campo checksum do UDP

Receptor computa o checksum do

segmento recebido

Verifica se o checksum computado bate com o valor informado no campo checksum

Natildeo - erro detectado

Sim - nenhum erro detectado Mas pode haver erros Mais em breve hellip

Objetivo detectar ldquoerrosrdquo (eg bits trocados) no segmento transmitido

Camada Transporte 3-19

Exemplo de Checksum Internet Nota

Ao adicionar nuacutemeros natildeo esquecer do ldquovai umrdquo

Examplo adiccedilatildeo de dois inteiros de 16 bits

1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1

wraparound

soma

checksum

Camada Transporte 3-20

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-21

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace

Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-22

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-23

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-24

Transferecircncia confiaacutevel de dados introduccedilatildeo hellip

lado emissor

lado receptor

rdt_send() chamado pela camada superior (eg aplic) Passagem de

dados da camada superior

udt_send() chamado por rdt para transferir pacote pelo canal

natildeo-confiaacutevel ao receptor

rdt_rcv() chamado quando pacote chega no lado receptor do canal

deliver_data() chamado pelo rdt para enviar dados agrave camada superior

Camada Transporte 3-25

Transferecircncia confiaacutevel de dados introduccedilatildeo hellip Iremos

Desenvolver incrementalmente os lados receptor e emissor do protocolo de transferecircncia confiaacutevel de dados (rdt)

considere somente transferecircncia de dados unidirecional mas informaccedilotildees de controle transitaratildeo em ambos

sentidos

usar maacutequinas de estado finitas (FSM) para especificar o emissor e o receptor

estado 1

estado 2

Evento causando transiccedilatildeo de estado

Accedilotildees tomadas na transiccedilatildeo de estados

estado quando estiver neste ldquoestadordquo

proacuteximo estado eacute unicamente

determinado pelo proacuteximo evento

evento

accedilotildees

Camada Transporte 3-26

Rdt10 transferecircncia confiaacutevel sobre um canal confiaacutevel Canal de base perfeitamente confiaacutevel

Nenhum erro nos bits

Nenhuma perda de pacotes

FSMs separadas para emissor e receptor Emissor envia dados no canal

Receptor lecirc dados do canal

Wait for

call from

above packet = make_pkt(data)

udt_send(packet)

rdt_send(data)

extract (packetdata)

deliver_data(data)

Wait for

call from

below

rdt_rcv(packet)

emissor receptor

Camada Transporte 3-27

Rdt20 canal com erros em bits

Canal de base pode trocar bits dos pacotes checksum para detectar erros nos bits

a questatildeo como se recuperar de erros acknowledgements (ACKs) receptor informa

explicitamente ao emissor que pacote recebido estaacute OK

negative acknowledgements (NAKs) receptor informa explicitamente ao emissor que o pacote possui erros

Emissor retransmite pacote ao receber um NAK

novos mecanismos no rdt20 (aleacutem de rdt10) Detecccedilatildeo de erro

Feedback do receptor msgs de controle (ACKNAK) do recptor para o emissor

Camada Transporte 3-28

rdt20 especificaccedilatildeo FSM

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below emissor

receptor rdt_send(data)

Camada Transporte 3-29

rdt20 operaccedilatildeo na ausecircncia de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-30

rdt20 cenaacuterio na presenccedila de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-31

rdt20 tem um problema fatal

O que acontece se um ACKNAK eacute corrompido

emissor natildeo sabe o que aconteceu no receptor

Natildeo pode somente retransmitir possibilidade de duplicaccedilatildeo de pacotes

Tratando duplicaccedilotildees Emissor retransmitepacote

atual se ACKNAK eacute corrompido

Emissor adiciona nuacutemeros de sequumlecircncia a cada pacote

Receptor descarta (natildeo entrega para a camada superior) pacotes duplicados

Emissor envia 1 pacote e entatildeo aguarda pela Resposta do receptor

stop and wait

Camada Transporte 3-32

rdt21 emissor trata ACKNAKs corrompidos

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

Wait for

ACK or

NAK 0 udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

Wait for

call 1 from

above

Wait for

ACK or

NAK 1

L L

Camada Transporte 3-33

rdt21 receptor trata ACKNAKs corrompidos

Wait for

0 from

below

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq0(rcvpkt)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

Wait for

1 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq0(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq1(rcvpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

Camada Transporte 3-34

rdt21 discussatildeo

Emissor

de seq adicionado a pkt

2 ‟s de seq (01) satildeo suficientes Por que

Deve verificar se ACKNAK recebido estaacute corrompido

2x mais estados state deve ldquorecordarrdquo

se pacote ldquoatualrdquo possui de seq 0 ou 1

Receptor

Deve verificar se pacote recebido eacute um duplicado estado indica se de

seq do pacote esperado eacute 0 ou 1

nota receptor natildeo pode saber se seu uacuteltimo ACKNAK foi recebido OK no emissor

Camada Transporte 3-35

rdt22 um protocolo sem NAKs

Igual ao rdt21 mas usando ACKs somente

Ao inveacutes de NAK receptor envia ACK do uacuteltimo pacote recebido corretamente (OK) Receptor deve incluir explicitamente o de seq do pacote

sendo confirmado

ACK duplicado no emissor resulta na mesma accedilatildeo como para o NAK retransmiccedilatildeo do pacote atual

Camada Transporte 3-36

rdt22 fragmentos do emissor e receptor

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

Wait for

ACK

0

Fragmento da FSM do emissor

Wait for

0 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK1 chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

(corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento da FSM Do receptor

Camada Transporte 3-37

rdt30 canais com erros e perdas

Nova hipoacutetese canal de base pode agora perder pacotes (dados ou ACKs) checksum de seq

ACKs retransmissotildees ajudaratildeo mas natildeo seratildeo suficientes

Abordagem emissor aguarda um tempo ldquorazoaacutevelrdquo a recepccedilatildeo de ACKs

retransmite se nenhum ACK eacute recebido neste tempo

se pkt (ou ACK) apenas atrasado (natildeo foi perdido)

retransmissatildeo causaraacute duplicaccedilatildeo mas uso de de seq tratam isso

receptor deve especificar de seq do pacote sendo confirmado

requer temporizador

Camada Transporte 3-38

Emissor rdt30

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

Wait

for

ACK0

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

Wait for

call 1 from

above

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt0) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt1)

stop_timer

stop_timer

udt_send(sndpkt)

start_timer

timeout

udt_send(sndpkt)

start_timer

timeout

rdt_rcv(rcvpkt)

Wait for

call 0from

above

Wait

for

ACK1

L

rdt_rcv(rcvpkt)

L

L

L

Camada Transporte 3-39

rdt30 em accedilatildeo

Camada Transporte 3-40

rdt30 em accedilatildeo

Camada Transporte 3-41

Desempenho do rdt30

rdt30 funciona mas desempenho eacute ruim examplo enlace de 1 Gbps 15 ms de atraso

de propagaccedilatildeo fim-a-fim pacote de 1KB

T transmit = 8kbpkt

109 bsec = 8 microsec

U sender utilizaccedilatildeo fraccedilatildeo do tempo em que o emissor estaacute ocupado enviando

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R =

L (tamanho do pacote bits) R (taxa de transmissatildeo bps)

=

Pacote de 1KB a cada 30 msec -gt 33kBsec de vazatildeo em um enlace de 1 Gbps

O protocolo de rede limita o uso de recursos fiacutesicos

= 0027

Camada Transporte 3-42

rdt30 funcionamento do stop-and-wait

Primeiro bit do pacote transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit do pkt transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega ACK

envidado

ACK chega envia proacuteximo

pacote t = RTT + L R

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R = = 0027

Camada Transporte 3-43

Protocolos com Pipeline

Pipelining emissor permite muacuteltiplos pacotes enviados e que ainda natildeo foram confirmados range do nuacutemero de sequumlecircncia deve ser aumentado

ldquobufferizaccedilatildeordquo no emissor eou receptor

2 formas geneacutericas de protocolos pipeline go-Back-N selective repeat (SR)

Camada Transporte 3-44

Pipelining aumento da utilizaccedilatildeo

Primeiro bit do pkt transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega envia ACK

ACK chega envia proacuteximo

pacote t = RTT + L R

Uacuteltimo bit do 2o pacote chega envia ACK

Uacuteltimo bit do 3o pacote chega envia

ACK

U sender

= 024

30008 = 00008

microseconds

3 L R

RTT + L R =

Utilizaccedilatildeo aumenta de um fator de 3 (neste

exemplo)

= 008

Camada Transporte 3-45

Go-Back-N Emissor de seq de k bits no cabeccedilalho do pacote

ldquojanelardquo de ateacute N consecutivos pacotes natildeo confirmados permitida

ACK(n) confirma todos os pacotes ateacute o n - ldquoACK cumulativordquo

Pode receber ACKs duplicados ACKs (veja receptor)

Temporizador para cada pacote enviado

timeout(n) retransmite pkt n e todos pacotes com s de seq maiores que estatildeo dentro da janela

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Camada Transporte 3-46

GBN FSM do emissor estendida

Wait start_timer

udt_send(sndpkt[base])

udt_send(sndpkt[base+1])

hellip

udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

if (nextseqnum lt base+N)

sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)

udt_send(sndpkt[nextseqnum])

if (base == nextseqnum)

start_timer

nextseqnum++

else

refuse_data(data)

base = getacknum(rcvpkt)+1

If (base == nextseqnum)

stop_timer

else

start_timer

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

base=1

nextseqnum=1

rdt_rcv(rcvpkt)

ampamp corrupt(rcvpkt)

L

Somente ACKs satildeo usados (sem NAKs)

Camada Transporte 3-47

GBN FSM do receptor estendida

ACK-only sempre envia ACK para pacote recebido ldquona ordemrdquo corretamente com de seq mais elevado Pode gerar ACKs duplicados Precisa recordar somente o de seq esperado

(expectedseqnum)

Pkt fora de ordem descarta (natildeo armazena) -gt receptor natildeo possui buffer Re-ACK pkt com o de seq mais elevado e em ordem

Wait

udt_send(sndpkt)

default

rdt_rcv(rcvpkt)

ampamp notcurrupt(rcvpkt)

ampamp hasseqnum(rcvpktexpectedseqnum)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(expectedseqnumACKchksum)

udt_send(sndpkt)

expectedseqnum++

expectedseqnum=1

sndpkt =

make_pkt(expectedseqnumACKchksum)

L

Camada Transporte 3-48

GBN em accedilatildeo

Tamanho da janela = 4

Camada Transporte 3-49

SR - Selective Repeat

Receptor confirma individualmente cada pkt recebido corretamente armazena pkts quando necessaacuterio para eventual envio

de pacotes ordenados agrave camada superior

Emissor reenvia somente pkts para os quais o ACK natildeo foi recebido Emissor possui temporizador para cada pacote natildeo

confirmado (unACKed pkt)

Janela do emissor N consecutivos s de seq

Novamente limita s de seq de enviados pkts natildeo confirmados (unACKed pkts)

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 15: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-15

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-16

UDP User Datagram Protocol [RFC 768]

Protocolo Internet de transporte ldquosem ornamentosrdquo e com ldquoelementos baacutesicosrdquo

Serviccedilo ldquobest effortrdquo segmentos UDP podem ser

perdidos

entregues fora de ordem agrave aplicaccedilatildeo

natildeo-orientado agrave conexatildeo sem handshaking entre

o emissor e receptor UDP

Cada segmento UDP eacute tratado de forma independente dos outros

Por que existe o UDP Sem estabelecimento de

conexatildeo (que pode adicionar atraso)

simples sem estado de conexatildeo no emissor nem no receptor

Cabeccedilalho do segmento pequeno

nenhum controle de congestionamento

Camada Transporte 3-17

UDP mais hellip

Frequumlentemente usado para aplicaccedilotildees multimiacutedia de streaming Tolerante agrave perdas Sensiacutevel agrave taxa de

dados

Outros usos do UDP DNS SNMP

Transferecircncia confiaacutevel sobre UDP confiabilidade adicionada na camada aplicaccedilatildeo Recuperaccedilatildeo de erros

especiacutefica da camada aplicaccedilatildeo

porta de origem porta de destino

32 bits

Dados da aplicaccedilatildeo

(mensagem)

Formato do segmento UDP

tamanho checksum

tamanho em bytes do

segmento UDP incluindo

o cabeccedilalho

Camada Transporte 3-18

Checksum UDP

Emissor Trata o conteuacutedo de

segmentos como uma sequumlecircncia de inteiros de 16 bits

checksum adiccedilatildeo (soma complemento 1) do conteuacutedo do segmento

Emissor coloca o valor do checksum no campo checksum do UDP

Receptor computa o checksum do

segmento recebido

Verifica se o checksum computado bate com o valor informado no campo checksum

Natildeo - erro detectado

Sim - nenhum erro detectado Mas pode haver erros Mais em breve hellip

Objetivo detectar ldquoerrosrdquo (eg bits trocados) no segmento transmitido

Camada Transporte 3-19

Exemplo de Checksum Internet Nota

Ao adicionar nuacutemeros natildeo esquecer do ldquovai umrdquo

Examplo adiccedilatildeo de dois inteiros de 16 bits

1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1

wraparound

soma

checksum

Camada Transporte 3-20

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-21

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace

Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-22

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-23

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-24

Transferecircncia confiaacutevel de dados introduccedilatildeo hellip

lado emissor

lado receptor

rdt_send() chamado pela camada superior (eg aplic) Passagem de

dados da camada superior

udt_send() chamado por rdt para transferir pacote pelo canal

natildeo-confiaacutevel ao receptor

rdt_rcv() chamado quando pacote chega no lado receptor do canal

deliver_data() chamado pelo rdt para enviar dados agrave camada superior

Camada Transporte 3-25

Transferecircncia confiaacutevel de dados introduccedilatildeo hellip Iremos

Desenvolver incrementalmente os lados receptor e emissor do protocolo de transferecircncia confiaacutevel de dados (rdt)

considere somente transferecircncia de dados unidirecional mas informaccedilotildees de controle transitaratildeo em ambos

sentidos

usar maacutequinas de estado finitas (FSM) para especificar o emissor e o receptor

estado 1

estado 2

Evento causando transiccedilatildeo de estado

Accedilotildees tomadas na transiccedilatildeo de estados

estado quando estiver neste ldquoestadordquo

proacuteximo estado eacute unicamente

determinado pelo proacuteximo evento

evento

accedilotildees

Camada Transporte 3-26

Rdt10 transferecircncia confiaacutevel sobre um canal confiaacutevel Canal de base perfeitamente confiaacutevel

Nenhum erro nos bits

Nenhuma perda de pacotes

FSMs separadas para emissor e receptor Emissor envia dados no canal

Receptor lecirc dados do canal

Wait for

call from

above packet = make_pkt(data)

udt_send(packet)

rdt_send(data)

extract (packetdata)

deliver_data(data)

Wait for

call from

below

rdt_rcv(packet)

emissor receptor

Camada Transporte 3-27

Rdt20 canal com erros em bits

Canal de base pode trocar bits dos pacotes checksum para detectar erros nos bits

a questatildeo como se recuperar de erros acknowledgements (ACKs) receptor informa

explicitamente ao emissor que pacote recebido estaacute OK

negative acknowledgements (NAKs) receptor informa explicitamente ao emissor que o pacote possui erros

Emissor retransmite pacote ao receber um NAK

novos mecanismos no rdt20 (aleacutem de rdt10) Detecccedilatildeo de erro

Feedback do receptor msgs de controle (ACKNAK) do recptor para o emissor

Camada Transporte 3-28

rdt20 especificaccedilatildeo FSM

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below emissor

receptor rdt_send(data)

Camada Transporte 3-29

rdt20 operaccedilatildeo na ausecircncia de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-30

rdt20 cenaacuterio na presenccedila de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-31

rdt20 tem um problema fatal

O que acontece se um ACKNAK eacute corrompido

emissor natildeo sabe o que aconteceu no receptor

Natildeo pode somente retransmitir possibilidade de duplicaccedilatildeo de pacotes

Tratando duplicaccedilotildees Emissor retransmitepacote

atual se ACKNAK eacute corrompido

Emissor adiciona nuacutemeros de sequumlecircncia a cada pacote

Receptor descarta (natildeo entrega para a camada superior) pacotes duplicados

Emissor envia 1 pacote e entatildeo aguarda pela Resposta do receptor

stop and wait

Camada Transporte 3-32

rdt21 emissor trata ACKNAKs corrompidos

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

Wait for

ACK or

NAK 0 udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

Wait for

call 1 from

above

Wait for

ACK or

NAK 1

L L

Camada Transporte 3-33

rdt21 receptor trata ACKNAKs corrompidos

Wait for

0 from

below

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq0(rcvpkt)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

Wait for

1 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq0(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq1(rcvpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

Camada Transporte 3-34

rdt21 discussatildeo

Emissor

de seq adicionado a pkt

2 ‟s de seq (01) satildeo suficientes Por que

Deve verificar se ACKNAK recebido estaacute corrompido

2x mais estados state deve ldquorecordarrdquo

se pacote ldquoatualrdquo possui de seq 0 ou 1

Receptor

Deve verificar se pacote recebido eacute um duplicado estado indica se de

seq do pacote esperado eacute 0 ou 1

nota receptor natildeo pode saber se seu uacuteltimo ACKNAK foi recebido OK no emissor

Camada Transporte 3-35

rdt22 um protocolo sem NAKs

Igual ao rdt21 mas usando ACKs somente

Ao inveacutes de NAK receptor envia ACK do uacuteltimo pacote recebido corretamente (OK) Receptor deve incluir explicitamente o de seq do pacote

sendo confirmado

ACK duplicado no emissor resulta na mesma accedilatildeo como para o NAK retransmiccedilatildeo do pacote atual

Camada Transporte 3-36

rdt22 fragmentos do emissor e receptor

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

Wait for

ACK

0

Fragmento da FSM do emissor

Wait for

0 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK1 chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

(corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento da FSM Do receptor

Camada Transporte 3-37

rdt30 canais com erros e perdas

Nova hipoacutetese canal de base pode agora perder pacotes (dados ou ACKs) checksum de seq

ACKs retransmissotildees ajudaratildeo mas natildeo seratildeo suficientes

Abordagem emissor aguarda um tempo ldquorazoaacutevelrdquo a recepccedilatildeo de ACKs

retransmite se nenhum ACK eacute recebido neste tempo

se pkt (ou ACK) apenas atrasado (natildeo foi perdido)

retransmissatildeo causaraacute duplicaccedilatildeo mas uso de de seq tratam isso

receptor deve especificar de seq do pacote sendo confirmado

requer temporizador

Camada Transporte 3-38

Emissor rdt30

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

Wait

for

ACK0

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

Wait for

call 1 from

above

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt0) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt1)

stop_timer

stop_timer

udt_send(sndpkt)

start_timer

timeout

udt_send(sndpkt)

start_timer

timeout

rdt_rcv(rcvpkt)

Wait for

call 0from

above

Wait

for

ACK1

L

rdt_rcv(rcvpkt)

L

L

L

Camada Transporte 3-39

rdt30 em accedilatildeo

Camada Transporte 3-40

rdt30 em accedilatildeo

Camada Transporte 3-41

Desempenho do rdt30

rdt30 funciona mas desempenho eacute ruim examplo enlace de 1 Gbps 15 ms de atraso

de propagaccedilatildeo fim-a-fim pacote de 1KB

T transmit = 8kbpkt

109 bsec = 8 microsec

U sender utilizaccedilatildeo fraccedilatildeo do tempo em que o emissor estaacute ocupado enviando

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R =

L (tamanho do pacote bits) R (taxa de transmissatildeo bps)

=

Pacote de 1KB a cada 30 msec -gt 33kBsec de vazatildeo em um enlace de 1 Gbps

O protocolo de rede limita o uso de recursos fiacutesicos

= 0027

Camada Transporte 3-42

rdt30 funcionamento do stop-and-wait

Primeiro bit do pacote transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit do pkt transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega ACK

envidado

ACK chega envia proacuteximo

pacote t = RTT + L R

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R = = 0027

Camada Transporte 3-43

Protocolos com Pipeline

Pipelining emissor permite muacuteltiplos pacotes enviados e que ainda natildeo foram confirmados range do nuacutemero de sequumlecircncia deve ser aumentado

ldquobufferizaccedilatildeordquo no emissor eou receptor

2 formas geneacutericas de protocolos pipeline go-Back-N selective repeat (SR)

Camada Transporte 3-44

Pipelining aumento da utilizaccedilatildeo

Primeiro bit do pkt transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega envia ACK

ACK chega envia proacuteximo

pacote t = RTT + L R

Uacuteltimo bit do 2o pacote chega envia ACK

Uacuteltimo bit do 3o pacote chega envia

ACK

U sender

= 024

30008 = 00008

microseconds

3 L R

RTT + L R =

Utilizaccedilatildeo aumenta de um fator de 3 (neste

exemplo)

= 008

Camada Transporte 3-45

Go-Back-N Emissor de seq de k bits no cabeccedilalho do pacote

ldquojanelardquo de ateacute N consecutivos pacotes natildeo confirmados permitida

ACK(n) confirma todos os pacotes ateacute o n - ldquoACK cumulativordquo

Pode receber ACKs duplicados ACKs (veja receptor)

Temporizador para cada pacote enviado

timeout(n) retransmite pkt n e todos pacotes com s de seq maiores que estatildeo dentro da janela

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Camada Transporte 3-46

GBN FSM do emissor estendida

Wait start_timer

udt_send(sndpkt[base])

udt_send(sndpkt[base+1])

hellip

udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

if (nextseqnum lt base+N)

sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)

udt_send(sndpkt[nextseqnum])

if (base == nextseqnum)

start_timer

nextseqnum++

else

refuse_data(data)

base = getacknum(rcvpkt)+1

If (base == nextseqnum)

stop_timer

else

start_timer

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

base=1

nextseqnum=1

rdt_rcv(rcvpkt)

ampamp corrupt(rcvpkt)

L

Somente ACKs satildeo usados (sem NAKs)

Camada Transporte 3-47

GBN FSM do receptor estendida

ACK-only sempre envia ACK para pacote recebido ldquona ordemrdquo corretamente com de seq mais elevado Pode gerar ACKs duplicados Precisa recordar somente o de seq esperado

(expectedseqnum)

Pkt fora de ordem descarta (natildeo armazena) -gt receptor natildeo possui buffer Re-ACK pkt com o de seq mais elevado e em ordem

Wait

udt_send(sndpkt)

default

rdt_rcv(rcvpkt)

ampamp notcurrupt(rcvpkt)

ampamp hasseqnum(rcvpktexpectedseqnum)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(expectedseqnumACKchksum)

udt_send(sndpkt)

expectedseqnum++

expectedseqnum=1

sndpkt =

make_pkt(expectedseqnumACKchksum)

L

Camada Transporte 3-48

GBN em accedilatildeo

Tamanho da janela = 4

Camada Transporte 3-49

SR - Selective Repeat

Receptor confirma individualmente cada pkt recebido corretamente armazena pkts quando necessaacuterio para eventual envio

de pacotes ordenados agrave camada superior

Emissor reenvia somente pkts para os quais o ACK natildeo foi recebido Emissor possui temporizador para cada pacote natildeo

confirmado (unACKed pkt)

Janela do emissor N consecutivos s de seq

Novamente limita s de seq de enviados pkts natildeo confirmados (unACKed pkts)

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 16: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-16

UDP User Datagram Protocol [RFC 768]

Protocolo Internet de transporte ldquosem ornamentosrdquo e com ldquoelementos baacutesicosrdquo

Serviccedilo ldquobest effortrdquo segmentos UDP podem ser

perdidos

entregues fora de ordem agrave aplicaccedilatildeo

natildeo-orientado agrave conexatildeo sem handshaking entre

o emissor e receptor UDP

Cada segmento UDP eacute tratado de forma independente dos outros

Por que existe o UDP Sem estabelecimento de

conexatildeo (que pode adicionar atraso)

simples sem estado de conexatildeo no emissor nem no receptor

Cabeccedilalho do segmento pequeno

nenhum controle de congestionamento

Camada Transporte 3-17

UDP mais hellip

Frequumlentemente usado para aplicaccedilotildees multimiacutedia de streaming Tolerante agrave perdas Sensiacutevel agrave taxa de

dados

Outros usos do UDP DNS SNMP

Transferecircncia confiaacutevel sobre UDP confiabilidade adicionada na camada aplicaccedilatildeo Recuperaccedilatildeo de erros

especiacutefica da camada aplicaccedilatildeo

porta de origem porta de destino

32 bits

Dados da aplicaccedilatildeo

(mensagem)

Formato do segmento UDP

tamanho checksum

tamanho em bytes do

segmento UDP incluindo

o cabeccedilalho

Camada Transporte 3-18

Checksum UDP

Emissor Trata o conteuacutedo de

segmentos como uma sequumlecircncia de inteiros de 16 bits

checksum adiccedilatildeo (soma complemento 1) do conteuacutedo do segmento

Emissor coloca o valor do checksum no campo checksum do UDP

Receptor computa o checksum do

segmento recebido

Verifica se o checksum computado bate com o valor informado no campo checksum

Natildeo - erro detectado

Sim - nenhum erro detectado Mas pode haver erros Mais em breve hellip

Objetivo detectar ldquoerrosrdquo (eg bits trocados) no segmento transmitido

Camada Transporte 3-19

Exemplo de Checksum Internet Nota

Ao adicionar nuacutemeros natildeo esquecer do ldquovai umrdquo

Examplo adiccedilatildeo de dois inteiros de 16 bits

1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1

wraparound

soma

checksum

Camada Transporte 3-20

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-21

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace

Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-22

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-23

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-24

Transferecircncia confiaacutevel de dados introduccedilatildeo hellip

lado emissor

lado receptor

rdt_send() chamado pela camada superior (eg aplic) Passagem de

dados da camada superior

udt_send() chamado por rdt para transferir pacote pelo canal

natildeo-confiaacutevel ao receptor

rdt_rcv() chamado quando pacote chega no lado receptor do canal

deliver_data() chamado pelo rdt para enviar dados agrave camada superior

Camada Transporte 3-25

Transferecircncia confiaacutevel de dados introduccedilatildeo hellip Iremos

Desenvolver incrementalmente os lados receptor e emissor do protocolo de transferecircncia confiaacutevel de dados (rdt)

considere somente transferecircncia de dados unidirecional mas informaccedilotildees de controle transitaratildeo em ambos

sentidos

usar maacutequinas de estado finitas (FSM) para especificar o emissor e o receptor

estado 1

estado 2

Evento causando transiccedilatildeo de estado

Accedilotildees tomadas na transiccedilatildeo de estados

estado quando estiver neste ldquoestadordquo

proacuteximo estado eacute unicamente

determinado pelo proacuteximo evento

evento

accedilotildees

Camada Transporte 3-26

Rdt10 transferecircncia confiaacutevel sobre um canal confiaacutevel Canal de base perfeitamente confiaacutevel

Nenhum erro nos bits

Nenhuma perda de pacotes

FSMs separadas para emissor e receptor Emissor envia dados no canal

Receptor lecirc dados do canal

Wait for

call from

above packet = make_pkt(data)

udt_send(packet)

rdt_send(data)

extract (packetdata)

deliver_data(data)

Wait for

call from

below

rdt_rcv(packet)

emissor receptor

Camada Transporte 3-27

Rdt20 canal com erros em bits

Canal de base pode trocar bits dos pacotes checksum para detectar erros nos bits

a questatildeo como se recuperar de erros acknowledgements (ACKs) receptor informa

explicitamente ao emissor que pacote recebido estaacute OK

negative acknowledgements (NAKs) receptor informa explicitamente ao emissor que o pacote possui erros

Emissor retransmite pacote ao receber um NAK

novos mecanismos no rdt20 (aleacutem de rdt10) Detecccedilatildeo de erro

Feedback do receptor msgs de controle (ACKNAK) do recptor para o emissor

Camada Transporte 3-28

rdt20 especificaccedilatildeo FSM

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below emissor

receptor rdt_send(data)

Camada Transporte 3-29

rdt20 operaccedilatildeo na ausecircncia de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-30

rdt20 cenaacuterio na presenccedila de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-31

rdt20 tem um problema fatal

O que acontece se um ACKNAK eacute corrompido

emissor natildeo sabe o que aconteceu no receptor

Natildeo pode somente retransmitir possibilidade de duplicaccedilatildeo de pacotes

Tratando duplicaccedilotildees Emissor retransmitepacote

atual se ACKNAK eacute corrompido

Emissor adiciona nuacutemeros de sequumlecircncia a cada pacote

Receptor descarta (natildeo entrega para a camada superior) pacotes duplicados

Emissor envia 1 pacote e entatildeo aguarda pela Resposta do receptor

stop and wait

Camada Transporte 3-32

rdt21 emissor trata ACKNAKs corrompidos

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

Wait for

ACK or

NAK 0 udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

Wait for

call 1 from

above

Wait for

ACK or

NAK 1

L L

Camada Transporte 3-33

rdt21 receptor trata ACKNAKs corrompidos

Wait for

0 from

below

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq0(rcvpkt)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

Wait for

1 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq0(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq1(rcvpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

Camada Transporte 3-34

rdt21 discussatildeo

Emissor

de seq adicionado a pkt

2 ‟s de seq (01) satildeo suficientes Por que

Deve verificar se ACKNAK recebido estaacute corrompido

2x mais estados state deve ldquorecordarrdquo

se pacote ldquoatualrdquo possui de seq 0 ou 1

Receptor

Deve verificar se pacote recebido eacute um duplicado estado indica se de

seq do pacote esperado eacute 0 ou 1

nota receptor natildeo pode saber se seu uacuteltimo ACKNAK foi recebido OK no emissor

Camada Transporte 3-35

rdt22 um protocolo sem NAKs

Igual ao rdt21 mas usando ACKs somente

Ao inveacutes de NAK receptor envia ACK do uacuteltimo pacote recebido corretamente (OK) Receptor deve incluir explicitamente o de seq do pacote

sendo confirmado

ACK duplicado no emissor resulta na mesma accedilatildeo como para o NAK retransmiccedilatildeo do pacote atual

Camada Transporte 3-36

rdt22 fragmentos do emissor e receptor

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

Wait for

ACK

0

Fragmento da FSM do emissor

Wait for

0 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK1 chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

(corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento da FSM Do receptor

Camada Transporte 3-37

rdt30 canais com erros e perdas

Nova hipoacutetese canal de base pode agora perder pacotes (dados ou ACKs) checksum de seq

ACKs retransmissotildees ajudaratildeo mas natildeo seratildeo suficientes

Abordagem emissor aguarda um tempo ldquorazoaacutevelrdquo a recepccedilatildeo de ACKs

retransmite se nenhum ACK eacute recebido neste tempo

se pkt (ou ACK) apenas atrasado (natildeo foi perdido)

retransmissatildeo causaraacute duplicaccedilatildeo mas uso de de seq tratam isso

receptor deve especificar de seq do pacote sendo confirmado

requer temporizador

Camada Transporte 3-38

Emissor rdt30

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

Wait

for

ACK0

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

Wait for

call 1 from

above

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt0) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt1)

stop_timer

stop_timer

udt_send(sndpkt)

start_timer

timeout

udt_send(sndpkt)

start_timer

timeout

rdt_rcv(rcvpkt)

Wait for

call 0from

above

Wait

for

ACK1

L

rdt_rcv(rcvpkt)

L

L

L

Camada Transporte 3-39

rdt30 em accedilatildeo

Camada Transporte 3-40

rdt30 em accedilatildeo

Camada Transporte 3-41

Desempenho do rdt30

rdt30 funciona mas desempenho eacute ruim examplo enlace de 1 Gbps 15 ms de atraso

de propagaccedilatildeo fim-a-fim pacote de 1KB

T transmit = 8kbpkt

109 bsec = 8 microsec

U sender utilizaccedilatildeo fraccedilatildeo do tempo em que o emissor estaacute ocupado enviando

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R =

L (tamanho do pacote bits) R (taxa de transmissatildeo bps)

=

Pacote de 1KB a cada 30 msec -gt 33kBsec de vazatildeo em um enlace de 1 Gbps

O protocolo de rede limita o uso de recursos fiacutesicos

= 0027

Camada Transporte 3-42

rdt30 funcionamento do stop-and-wait

Primeiro bit do pacote transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit do pkt transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega ACK

envidado

ACK chega envia proacuteximo

pacote t = RTT + L R

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R = = 0027

Camada Transporte 3-43

Protocolos com Pipeline

Pipelining emissor permite muacuteltiplos pacotes enviados e que ainda natildeo foram confirmados range do nuacutemero de sequumlecircncia deve ser aumentado

ldquobufferizaccedilatildeordquo no emissor eou receptor

2 formas geneacutericas de protocolos pipeline go-Back-N selective repeat (SR)

Camada Transporte 3-44

Pipelining aumento da utilizaccedilatildeo

Primeiro bit do pkt transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega envia ACK

ACK chega envia proacuteximo

pacote t = RTT + L R

Uacuteltimo bit do 2o pacote chega envia ACK

Uacuteltimo bit do 3o pacote chega envia

ACK

U sender

= 024

30008 = 00008

microseconds

3 L R

RTT + L R =

Utilizaccedilatildeo aumenta de um fator de 3 (neste

exemplo)

= 008

Camada Transporte 3-45

Go-Back-N Emissor de seq de k bits no cabeccedilalho do pacote

ldquojanelardquo de ateacute N consecutivos pacotes natildeo confirmados permitida

ACK(n) confirma todos os pacotes ateacute o n - ldquoACK cumulativordquo

Pode receber ACKs duplicados ACKs (veja receptor)

Temporizador para cada pacote enviado

timeout(n) retransmite pkt n e todos pacotes com s de seq maiores que estatildeo dentro da janela

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Camada Transporte 3-46

GBN FSM do emissor estendida

Wait start_timer

udt_send(sndpkt[base])

udt_send(sndpkt[base+1])

hellip

udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

if (nextseqnum lt base+N)

sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)

udt_send(sndpkt[nextseqnum])

if (base == nextseqnum)

start_timer

nextseqnum++

else

refuse_data(data)

base = getacknum(rcvpkt)+1

If (base == nextseqnum)

stop_timer

else

start_timer

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

base=1

nextseqnum=1

rdt_rcv(rcvpkt)

ampamp corrupt(rcvpkt)

L

Somente ACKs satildeo usados (sem NAKs)

Camada Transporte 3-47

GBN FSM do receptor estendida

ACK-only sempre envia ACK para pacote recebido ldquona ordemrdquo corretamente com de seq mais elevado Pode gerar ACKs duplicados Precisa recordar somente o de seq esperado

(expectedseqnum)

Pkt fora de ordem descarta (natildeo armazena) -gt receptor natildeo possui buffer Re-ACK pkt com o de seq mais elevado e em ordem

Wait

udt_send(sndpkt)

default

rdt_rcv(rcvpkt)

ampamp notcurrupt(rcvpkt)

ampamp hasseqnum(rcvpktexpectedseqnum)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(expectedseqnumACKchksum)

udt_send(sndpkt)

expectedseqnum++

expectedseqnum=1

sndpkt =

make_pkt(expectedseqnumACKchksum)

L

Camada Transporte 3-48

GBN em accedilatildeo

Tamanho da janela = 4

Camada Transporte 3-49

SR - Selective Repeat

Receptor confirma individualmente cada pkt recebido corretamente armazena pkts quando necessaacuterio para eventual envio

de pacotes ordenados agrave camada superior

Emissor reenvia somente pkts para os quais o ACK natildeo foi recebido Emissor possui temporizador para cada pacote natildeo

confirmado (unACKed pkt)

Janela do emissor N consecutivos s de seq

Novamente limita s de seq de enviados pkts natildeo confirmados (unACKed pkts)

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 17: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-17

UDP mais hellip

Frequumlentemente usado para aplicaccedilotildees multimiacutedia de streaming Tolerante agrave perdas Sensiacutevel agrave taxa de

dados

Outros usos do UDP DNS SNMP

Transferecircncia confiaacutevel sobre UDP confiabilidade adicionada na camada aplicaccedilatildeo Recuperaccedilatildeo de erros

especiacutefica da camada aplicaccedilatildeo

porta de origem porta de destino

32 bits

Dados da aplicaccedilatildeo

(mensagem)

Formato do segmento UDP

tamanho checksum

tamanho em bytes do

segmento UDP incluindo

o cabeccedilalho

Camada Transporte 3-18

Checksum UDP

Emissor Trata o conteuacutedo de

segmentos como uma sequumlecircncia de inteiros de 16 bits

checksum adiccedilatildeo (soma complemento 1) do conteuacutedo do segmento

Emissor coloca o valor do checksum no campo checksum do UDP

Receptor computa o checksum do

segmento recebido

Verifica se o checksum computado bate com o valor informado no campo checksum

Natildeo - erro detectado

Sim - nenhum erro detectado Mas pode haver erros Mais em breve hellip

Objetivo detectar ldquoerrosrdquo (eg bits trocados) no segmento transmitido

Camada Transporte 3-19

Exemplo de Checksum Internet Nota

Ao adicionar nuacutemeros natildeo esquecer do ldquovai umrdquo

Examplo adiccedilatildeo de dois inteiros de 16 bits

1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1

wraparound

soma

checksum

Camada Transporte 3-20

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-21

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace

Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-22

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-23

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-24

Transferecircncia confiaacutevel de dados introduccedilatildeo hellip

lado emissor

lado receptor

rdt_send() chamado pela camada superior (eg aplic) Passagem de

dados da camada superior

udt_send() chamado por rdt para transferir pacote pelo canal

natildeo-confiaacutevel ao receptor

rdt_rcv() chamado quando pacote chega no lado receptor do canal

deliver_data() chamado pelo rdt para enviar dados agrave camada superior

Camada Transporte 3-25

Transferecircncia confiaacutevel de dados introduccedilatildeo hellip Iremos

Desenvolver incrementalmente os lados receptor e emissor do protocolo de transferecircncia confiaacutevel de dados (rdt)

considere somente transferecircncia de dados unidirecional mas informaccedilotildees de controle transitaratildeo em ambos

sentidos

usar maacutequinas de estado finitas (FSM) para especificar o emissor e o receptor

estado 1

estado 2

Evento causando transiccedilatildeo de estado

Accedilotildees tomadas na transiccedilatildeo de estados

estado quando estiver neste ldquoestadordquo

proacuteximo estado eacute unicamente

determinado pelo proacuteximo evento

evento

accedilotildees

Camada Transporte 3-26

Rdt10 transferecircncia confiaacutevel sobre um canal confiaacutevel Canal de base perfeitamente confiaacutevel

Nenhum erro nos bits

Nenhuma perda de pacotes

FSMs separadas para emissor e receptor Emissor envia dados no canal

Receptor lecirc dados do canal

Wait for

call from

above packet = make_pkt(data)

udt_send(packet)

rdt_send(data)

extract (packetdata)

deliver_data(data)

Wait for

call from

below

rdt_rcv(packet)

emissor receptor

Camada Transporte 3-27

Rdt20 canal com erros em bits

Canal de base pode trocar bits dos pacotes checksum para detectar erros nos bits

a questatildeo como se recuperar de erros acknowledgements (ACKs) receptor informa

explicitamente ao emissor que pacote recebido estaacute OK

negative acknowledgements (NAKs) receptor informa explicitamente ao emissor que o pacote possui erros

Emissor retransmite pacote ao receber um NAK

novos mecanismos no rdt20 (aleacutem de rdt10) Detecccedilatildeo de erro

Feedback do receptor msgs de controle (ACKNAK) do recptor para o emissor

Camada Transporte 3-28

rdt20 especificaccedilatildeo FSM

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below emissor

receptor rdt_send(data)

Camada Transporte 3-29

rdt20 operaccedilatildeo na ausecircncia de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-30

rdt20 cenaacuterio na presenccedila de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-31

rdt20 tem um problema fatal

O que acontece se um ACKNAK eacute corrompido

emissor natildeo sabe o que aconteceu no receptor

Natildeo pode somente retransmitir possibilidade de duplicaccedilatildeo de pacotes

Tratando duplicaccedilotildees Emissor retransmitepacote

atual se ACKNAK eacute corrompido

Emissor adiciona nuacutemeros de sequumlecircncia a cada pacote

Receptor descarta (natildeo entrega para a camada superior) pacotes duplicados

Emissor envia 1 pacote e entatildeo aguarda pela Resposta do receptor

stop and wait

Camada Transporte 3-32

rdt21 emissor trata ACKNAKs corrompidos

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

Wait for

ACK or

NAK 0 udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

Wait for

call 1 from

above

Wait for

ACK or

NAK 1

L L

Camada Transporte 3-33

rdt21 receptor trata ACKNAKs corrompidos

Wait for

0 from

below

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq0(rcvpkt)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

Wait for

1 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq0(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq1(rcvpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

Camada Transporte 3-34

rdt21 discussatildeo

Emissor

de seq adicionado a pkt

2 ‟s de seq (01) satildeo suficientes Por que

Deve verificar se ACKNAK recebido estaacute corrompido

2x mais estados state deve ldquorecordarrdquo

se pacote ldquoatualrdquo possui de seq 0 ou 1

Receptor

Deve verificar se pacote recebido eacute um duplicado estado indica se de

seq do pacote esperado eacute 0 ou 1

nota receptor natildeo pode saber se seu uacuteltimo ACKNAK foi recebido OK no emissor

Camada Transporte 3-35

rdt22 um protocolo sem NAKs

Igual ao rdt21 mas usando ACKs somente

Ao inveacutes de NAK receptor envia ACK do uacuteltimo pacote recebido corretamente (OK) Receptor deve incluir explicitamente o de seq do pacote

sendo confirmado

ACK duplicado no emissor resulta na mesma accedilatildeo como para o NAK retransmiccedilatildeo do pacote atual

Camada Transporte 3-36

rdt22 fragmentos do emissor e receptor

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

Wait for

ACK

0

Fragmento da FSM do emissor

Wait for

0 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK1 chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

(corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento da FSM Do receptor

Camada Transporte 3-37

rdt30 canais com erros e perdas

Nova hipoacutetese canal de base pode agora perder pacotes (dados ou ACKs) checksum de seq

ACKs retransmissotildees ajudaratildeo mas natildeo seratildeo suficientes

Abordagem emissor aguarda um tempo ldquorazoaacutevelrdquo a recepccedilatildeo de ACKs

retransmite se nenhum ACK eacute recebido neste tempo

se pkt (ou ACK) apenas atrasado (natildeo foi perdido)

retransmissatildeo causaraacute duplicaccedilatildeo mas uso de de seq tratam isso

receptor deve especificar de seq do pacote sendo confirmado

requer temporizador

Camada Transporte 3-38

Emissor rdt30

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

Wait

for

ACK0

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

Wait for

call 1 from

above

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt0) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt1)

stop_timer

stop_timer

udt_send(sndpkt)

start_timer

timeout

udt_send(sndpkt)

start_timer

timeout

rdt_rcv(rcvpkt)

Wait for

call 0from

above

Wait

for

ACK1

L

rdt_rcv(rcvpkt)

L

L

L

Camada Transporte 3-39

rdt30 em accedilatildeo

Camada Transporte 3-40

rdt30 em accedilatildeo

Camada Transporte 3-41

Desempenho do rdt30

rdt30 funciona mas desempenho eacute ruim examplo enlace de 1 Gbps 15 ms de atraso

de propagaccedilatildeo fim-a-fim pacote de 1KB

T transmit = 8kbpkt

109 bsec = 8 microsec

U sender utilizaccedilatildeo fraccedilatildeo do tempo em que o emissor estaacute ocupado enviando

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R =

L (tamanho do pacote bits) R (taxa de transmissatildeo bps)

=

Pacote de 1KB a cada 30 msec -gt 33kBsec de vazatildeo em um enlace de 1 Gbps

O protocolo de rede limita o uso de recursos fiacutesicos

= 0027

Camada Transporte 3-42

rdt30 funcionamento do stop-and-wait

Primeiro bit do pacote transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit do pkt transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega ACK

envidado

ACK chega envia proacuteximo

pacote t = RTT + L R

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R = = 0027

Camada Transporte 3-43

Protocolos com Pipeline

Pipelining emissor permite muacuteltiplos pacotes enviados e que ainda natildeo foram confirmados range do nuacutemero de sequumlecircncia deve ser aumentado

ldquobufferizaccedilatildeordquo no emissor eou receptor

2 formas geneacutericas de protocolos pipeline go-Back-N selective repeat (SR)

Camada Transporte 3-44

Pipelining aumento da utilizaccedilatildeo

Primeiro bit do pkt transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega envia ACK

ACK chega envia proacuteximo

pacote t = RTT + L R

Uacuteltimo bit do 2o pacote chega envia ACK

Uacuteltimo bit do 3o pacote chega envia

ACK

U sender

= 024

30008 = 00008

microseconds

3 L R

RTT + L R =

Utilizaccedilatildeo aumenta de um fator de 3 (neste

exemplo)

= 008

Camada Transporte 3-45

Go-Back-N Emissor de seq de k bits no cabeccedilalho do pacote

ldquojanelardquo de ateacute N consecutivos pacotes natildeo confirmados permitida

ACK(n) confirma todos os pacotes ateacute o n - ldquoACK cumulativordquo

Pode receber ACKs duplicados ACKs (veja receptor)

Temporizador para cada pacote enviado

timeout(n) retransmite pkt n e todos pacotes com s de seq maiores que estatildeo dentro da janela

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Camada Transporte 3-46

GBN FSM do emissor estendida

Wait start_timer

udt_send(sndpkt[base])

udt_send(sndpkt[base+1])

hellip

udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

if (nextseqnum lt base+N)

sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)

udt_send(sndpkt[nextseqnum])

if (base == nextseqnum)

start_timer

nextseqnum++

else

refuse_data(data)

base = getacknum(rcvpkt)+1

If (base == nextseqnum)

stop_timer

else

start_timer

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

base=1

nextseqnum=1

rdt_rcv(rcvpkt)

ampamp corrupt(rcvpkt)

L

Somente ACKs satildeo usados (sem NAKs)

Camada Transporte 3-47

GBN FSM do receptor estendida

ACK-only sempre envia ACK para pacote recebido ldquona ordemrdquo corretamente com de seq mais elevado Pode gerar ACKs duplicados Precisa recordar somente o de seq esperado

(expectedseqnum)

Pkt fora de ordem descarta (natildeo armazena) -gt receptor natildeo possui buffer Re-ACK pkt com o de seq mais elevado e em ordem

Wait

udt_send(sndpkt)

default

rdt_rcv(rcvpkt)

ampamp notcurrupt(rcvpkt)

ampamp hasseqnum(rcvpktexpectedseqnum)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(expectedseqnumACKchksum)

udt_send(sndpkt)

expectedseqnum++

expectedseqnum=1

sndpkt =

make_pkt(expectedseqnumACKchksum)

L

Camada Transporte 3-48

GBN em accedilatildeo

Tamanho da janela = 4

Camada Transporte 3-49

SR - Selective Repeat

Receptor confirma individualmente cada pkt recebido corretamente armazena pkts quando necessaacuterio para eventual envio

de pacotes ordenados agrave camada superior

Emissor reenvia somente pkts para os quais o ACK natildeo foi recebido Emissor possui temporizador para cada pacote natildeo

confirmado (unACKed pkt)

Janela do emissor N consecutivos s de seq

Novamente limita s de seq de enviados pkts natildeo confirmados (unACKed pkts)

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 18: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-18

Checksum UDP

Emissor Trata o conteuacutedo de

segmentos como uma sequumlecircncia de inteiros de 16 bits

checksum adiccedilatildeo (soma complemento 1) do conteuacutedo do segmento

Emissor coloca o valor do checksum no campo checksum do UDP

Receptor computa o checksum do

segmento recebido

Verifica se o checksum computado bate com o valor informado no campo checksum

Natildeo - erro detectado

Sim - nenhum erro detectado Mas pode haver erros Mais em breve hellip

Objetivo detectar ldquoerrosrdquo (eg bits trocados) no segmento transmitido

Camada Transporte 3-19

Exemplo de Checksum Internet Nota

Ao adicionar nuacutemeros natildeo esquecer do ldquovai umrdquo

Examplo adiccedilatildeo de dois inteiros de 16 bits

1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1

wraparound

soma

checksum

Camada Transporte 3-20

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-21

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace

Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-22

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-23

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-24

Transferecircncia confiaacutevel de dados introduccedilatildeo hellip

lado emissor

lado receptor

rdt_send() chamado pela camada superior (eg aplic) Passagem de

dados da camada superior

udt_send() chamado por rdt para transferir pacote pelo canal

natildeo-confiaacutevel ao receptor

rdt_rcv() chamado quando pacote chega no lado receptor do canal

deliver_data() chamado pelo rdt para enviar dados agrave camada superior

Camada Transporte 3-25

Transferecircncia confiaacutevel de dados introduccedilatildeo hellip Iremos

Desenvolver incrementalmente os lados receptor e emissor do protocolo de transferecircncia confiaacutevel de dados (rdt)

considere somente transferecircncia de dados unidirecional mas informaccedilotildees de controle transitaratildeo em ambos

sentidos

usar maacutequinas de estado finitas (FSM) para especificar o emissor e o receptor

estado 1

estado 2

Evento causando transiccedilatildeo de estado

Accedilotildees tomadas na transiccedilatildeo de estados

estado quando estiver neste ldquoestadordquo

proacuteximo estado eacute unicamente

determinado pelo proacuteximo evento

evento

accedilotildees

Camada Transporte 3-26

Rdt10 transferecircncia confiaacutevel sobre um canal confiaacutevel Canal de base perfeitamente confiaacutevel

Nenhum erro nos bits

Nenhuma perda de pacotes

FSMs separadas para emissor e receptor Emissor envia dados no canal

Receptor lecirc dados do canal

Wait for

call from

above packet = make_pkt(data)

udt_send(packet)

rdt_send(data)

extract (packetdata)

deliver_data(data)

Wait for

call from

below

rdt_rcv(packet)

emissor receptor

Camada Transporte 3-27

Rdt20 canal com erros em bits

Canal de base pode trocar bits dos pacotes checksum para detectar erros nos bits

a questatildeo como se recuperar de erros acknowledgements (ACKs) receptor informa

explicitamente ao emissor que pacote recebido estaacute OK

negative acknowledgements (NAKs) receptor informa explicitamente ao emissor que o pacote possui erros

Emissor retransmite pacote ao receber um NAK

novos mecanismos no rdt20 (aleacutem de rdt10) Detecccedilatildeo de erro

Feedback do receptor msgs de controle (ACKNAK) do recptor para o emissor

Camada Transporte 3-28

rdt20 especificaccedilatildeo FSM

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below emissor

receptor rdt_send(data)

Camada Transporte 3-29

rdt20 operaccedilatildeo na ausecircncia de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-30

rdt20 cenaacuterio na presenccedila de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-31

rdt20 tem um problema fatal

O que acontece se um ACKNAK eacute corrompido

emissor natildeo sabe o que aconteceu no receptor

Natildeo pode somente retransmitir possibilidade de duplicaccedilatildeo de pacotes

Tratando duplicaccedilotildees Emissor retransmitepacote

atual se ACKNAK eacute corrompido

Emissor adiciona nuacutemeros de sequumlecircncia a cada pacote

Receptor descarta (natildeo entrega para a camada superior) pacotes duplicados

Emissor envia 1 pacote e entatildeo aguarda pela Resposta do receptor

stop and wait

Camada Transporte 3-32

rdt21 emissor trata ACKNAKs corrompidos

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

Wait for

ACK or

NAK 0 udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

Wait for

call 1 from

above

Wait for

ACK or

NAK 1

L L

Camada Transporte 3-33

rdt21 receptor trata ACKNAKs corrompidos

Wait for

0 from

below

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq0(rcvpkt)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

Wait for

1 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq0(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq1(rcvpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

Camada Transporte 3-34

rdt21 discussatildeo

Emissor

de seq adicionado a pkt

2 ‟s de seq (01) satildeo suficientes Por que

Deve verificar se ACKNAK recebido estaacute corrompido

2x mais estados state deve ldquorecordarrdquo

se pacote ldquoatualrdquo possui de seq 0 ou 1

Receptor

Deve verificar se pacote recebido eacute um duplicado estado indica se de

seq do pacote esperado eacute 0 ou 1

nota receptor natildeo pode saber se seu uacuteltimo ACKNAK foi recebido OK no emissor

Camada Transporte 3-35

rdt22 um protocolo sem NAKs

Igual ao rdt21 mas usando ACKs somente

Ao inveacutes de NAK receptor envia ACK do uacuteltimo pacote recebido corretamente (OK) Receptor deve incluir explicitamente o de seq do pacote

sendo confirmado

ACK duplicado no emissor resulta na mesma accedilatildeo como para o NAK retransmiccedilatildeo do pacote atual

Camada Transporte 3-36

rdt22 fragmentos do emissor e receptor

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

Wait for

ACK

0

Fragmento da FSM do emissor

Wait for

0 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK1 chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

(corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento da FSM Do receptor

Camada Transporte 3-37

rdt30 canais com erros e perdas

Nova hipoacutetese canal de base pode agora perder pacotes (dados ou ACKs) checksum de seq

ACKs retransmissotildees ajudaratildeo mas natildeo seratildeo suficientes

Abordagem emissor aguarda um tempo ldquorazoaacutevelrdquo a recepccedilatildeo de ACKs

retransmite se nenhum ACK eacute recebido neste tempo

se pkt (ou ACK) apenas atrasado (natildeo foi perdido)

retransmissatildeo causaraacute duplicaccedilatildeo mas uso de de seq tratam isso

receptor deve especificar de seq do pacote sendo confirmado

requer temporizador

Camada Transporte 3-38

Emissor rdt30

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

Wait

for

ACK0

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

Wait for

call 1 from

above

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt0) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt1)

stop_timer

stop_timer

udt_send(sndpkt)

start_timer

timeout

udt_send(sndpkt)

start_timer

timeout

rdt_rcv(rcvpkt)

Wait for

call 0from

above

Wait

for

ACK1

L

rdt_rcv(rcvpkt)

L

L

L

Camada Transporte 3-39

rdt30 em accedilatildeo

Camada Transporte 3-40

rdt30 em accedilatildeo

Camada Transporte 3-41

Desempenho do rdt30

rdt30 funciona mas desempenho eacute ruim examplo enlace de 1 Gbps 15 ms de atraso

de propagaccedilatildeo fim-a-fim pacote de 1KB

T transmit = 8kbpkt

109 bsec = 8 microsec

U sender utilizaccedilatildeo fraccedilatildeo do tempo em que o emissor estaacute ocupado enviando

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R =

L (tamanho do pacote bits) R (taxa de transmissatildeo bps)

=

Pacote de 1KB a cada 30 msec -gt 33kBsec de vazatildeo em um enlace de 1 Gbps

O protocolo de rede limita o uso de recursos fiacutesicos

= 0027

Camada Transporte 3-42

rdt30 funcionamento do stop-and-wait

Primeiro bit do pacote transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit do pkt transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega ACK

envidado

ACK chega envia proacuteximo

pacote t = RTT + L R

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R = = 0027

Camada Transporte 3-43

Protocolos com Pipeline

Pipelining emissor permite muacuteltiplos pacotes enviados e que ainda natildeo foram confirmados range do nuacutemero de sequumlecircncia deve ser aumentado

ldquobufferizaccedilatildeordquo no emissor eou receptor

2 formas geneacutericas de protocolos pipeline go-Back-N selective repeat (SR)

Camada Transporte 3-44

Pipelining aumento da utilizaccedilatildeo

Primeiro bit do pkt transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega envia ACK

ACK chega envia proacuteximo

pacote t = RTT + L R

Uacuteltimo bit do 2o pacote chega envia ACK

Uacuteltimo bit do 3o pacote chega envia

ACK

U sender

= 024

30008 = 00008

microseconds

3 L R

RTT + L R =

Utilizaccedilatildeo aumenta de um fator de 3 (neste

exemplo)

= 008

Camada Transporte 3-45

Go-Back-N Emissor de seq de k bits no cabeccedilalho do pacote

ldquojanelardquo de ateacute N consecutivos pacotes natildeo confirmados permitida

ACK(n) confirma todos os pacotes ateacute o n - ldquoACK cumulativordquo

Pode receber ACKs duplicados ACKs (veja receptor)

Temporizador para cada pacote enviado

timeout(n) retransmite pkt n e todos pacotes com s de seq maiores que estatildeo dentro da janela

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Camada Transporte 3-46

GBN FSM do emissor estendida

Wait start_timer

udt_send(sndpkt[base])

udt_send(sndpkt[base+1])

hellip

udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

if (nextseqnum lt base+N)

sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)

udt_send(sndpkt[nextseqnum])

if (base == nextseqnum)

start_timer

nextseqnum++

else

refuse_data(data)

base = getacknum(rcvpkt)+1

If (base == nextseqnum)

stop_timer

else

start_timer

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

base=1

nextseqnum=1

rdt_rcv(rcvpkt)

ampamp corrupt(rcvpkt)

L

Somente ACKs satildeo usados (sem NAKs)

Camada Transporte 3-47

GBN FSM do receptor estendida

ACK-only sempre envia ACK para pacote recebido ldquona ordemrdquo corretamente com de seq mais elevado Pode gerar ACKs duplicados Precisa recordar somente o de seq esperado

(expectedseqnum)

Pkt fora de ordem descarta (natildeo armazena) -gt receptor natildeo possui buffer Re-ACK pkt com o de seq mais elevado e em ordem

Wait

udt_send(sndpkt)

default

rdt_rcv(rcvpkt)

ampamp notcurrupt(rcvpkt)

ampamp hasseqnum(rcvpktexpectedseqnum)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(expectedseqnumACKchksum)

udt_send(sndpkt)

expectedseqnum++

expectedseqnum=1

sndpkt =

make_pkt(expectedseqnumACKchksum)

L

Camada Transporte 3-48

GBN em accedilatildeo

Tamanho da janela = 4

Camada Transporte 3-49

SR - Selective Repeat

Receptor confirma individualmente cada pkt recebido corretamente armazena pkts quando necessaacuterio para eventual envio

de pacotes ordenados agrave camada superior

Emissor reenvia somente pkts para os quais o ACK natildeo foi recebido Emissor possui temporizador para cada pacote natildeo

confirmado (unACKed pkt)

Janela do emissor N consecutivos s de seq

Novamente limita s de seq de enviados pkts natildeo confirmados (unACKed pkts)

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 19: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-19

Exemplo de Checksum Internet Nota

Ao adicionar nuacutemeros natildeo esquecer do ldquovai umrdquo

Examplo adiccedilatildeo de dois inteiros de 16 bits

1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1

wraparound

soma

checksum

Camada Transporte 3-20

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-21

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace

Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-22

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-23

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-24

Transferecircncia confiaacutevel de dados introduccedilatildeo hellip

lado emissor

lado receptor

rdt_send() chamado pela camada superior (eg aplic) Passagem de

dados da camada superior

udt_send() chamado por rdt para transferir pacote pelo canal

natildeo-confiaacutevel ao receptor

rdt_rcv() chamado quando pacote chega no lado receptor do canal

deliver_data() chamado pelo rdt para enviar dados agrave camada superior

Camada Transporte 3-25

Transferecircncia confiaacutevel de dados introduccedilatildeo hellip Iremos

Desenvolver incrementalmente os lados receptor e emissor do protocolo de transferecircncia confiaacutevel de dados (rdt)

considere somente transferecircncia de dados unidirecional mas informaccedilotildees de controle transitaratildeo em ambos

sentidos

usar maacutequinas de estado finitas (FSM) para especificar o emissor e o receptor

estado 1

estado 2

Evento causando transiccedilatildeo de estado

Accedilotildees tomadas na transiccedilatildeo de estados

estado quando estiver neste ldquoestadordquo

proacuteximo estado eacute unicamente

determinado pelo proacuteximo evento

evento

accedilotildees

Camada Transporte 3-26

Rdt10 transferecircncia confiaacutevel sobre um canal confiaacutevel Canal de base perfeitamente confiaacutevel

Nenhum erro nos bits

Nenhuma perda de pacotes

FSMs separadas para emissor e receptor Emissor envia dados no canal

Receptor lecirc dados do canal

Wait for

call from

above packet = make_pkt(data)

udt_send(packet)

rdt_send(data)

extract (packetdata)

deliver_data(data)

Wait for

call from

below

rdt_rcv(packet)

emissor receptor

Camada Transporte 3-27

Rdt20 canal com erros em bits

Canal de base pode trocar bits dos pacotes checksum para detectar erros nos bits

a questatildeo como se recuperar de erros acknowledgements (ACKs) receptor informa

explicitamente ao emissor que pacote recebido estaacute OK

negative acknowledgements (NAKs) receptor informa explicitamente ao emissor que o pacote possui erros

Emissor retransmite pacote ao receber um NAK

novos mecanismos no rdt20 (aleacutem de rdt10) Detecccedilatildeo de erro

Feedback do receptor msgs de controle (ACKNAK) do recptor para o emissor

Camada Transporte 3-28

rdt20 especificaccedilatildeo FSM

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below emissor

receptor rdt_send(data)

Camada Transporte 3-29

rdt20 operaccedilatildeo na ausecircncia de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-30

rdt20 cenaacuterio na presenccedila de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-31

rdt20 tem um problema fatal

O que acontece se um ACKNAK eacute corrompido

emissor natildeo sabe o que aconteceu no receptor

Natildeo pode somente retransmitir possibilidade de duplicaccedilatildeo de pacotes

Tratando duplicaccedilotildees Emissor retransmitepacote

atual se ACKNAK eacute corrompido

Emissor adiciona nuacutemeros de sequumlecircncia a cada pacote

Receptor descarta (natildeo entrega para a camada superior) pacotes duplicados

Emissor envia 1 pacote e entatildeo aguarda pela Resposta do receptor

stop and wait

Camada Transporte 3-32

rdt21 emissor trata ACKNAKs corrompidos

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

Wait for

ACK or

NAK 0 udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

Wait for

call 1 from

above

Wait for

ACK or

NAK 1

L L

Camada Transporte 3-33

rdt21 receptor trata ACKNAKs corrompidos

Wait for

0 from

below

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq0(rcvpkt)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

Wait for

1 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq0(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq1(rcvpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

Camada Transporte 3-34

rdt21 discussatildeo

Emissor

de seq adicionado a pkt

2 ‟s de seq (01) satildeo suficientes Por que

Deve verificar se ACKNAK recebido estaacute corrompido

2x mais estados state deve ldquorecordarrdquo

se pacote ldquoatualrdquo possui de seq 0 ou 1

Receptor

Deve verificar se pacote recebido eacute um duplicado estado indica se de

seq do pacote esperado eacute 0 ou 1

nota receptor natildeo pode saber se seu uacuteltimo ACKNAK foi recebido OK no emissor

Camada Transporte 3-35

rdt22 um protocolo sem NAKs

Igual ao rdt21 mas usando ACKs somente

Ao inveacutes de NAK receptor envia ACK do uacuteltimo pacote recebido corretamente (OK) Receptor deve incluir explicitamente o de seq do pacote

sendo confirmado

ACK duplicado no emissor resulta na mesma accedilatildeo como para o NAK retransmiccedilatildeo do pacote atual

Camada Transporte 3-36

rdt22 fragmentos do emissor e receptor

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

Wait for

ACK

0

Fragmento da FSM do emissor

Wait for

0 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK1 chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

(corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento da FSM Do receptor

Camada Transporte 3-37

rdt30 canais com erros e perdas

Nova hipoacutetese canal de base pode agora perder pacotes (dados ou ACKs) checksum de seq

ACKs retransmissotildees ajudaratildeo mas natildeo seratildeo suficientes

Abordagem emissor aguarda um tempo ldquorazoaacutevelrdquo a recepccedilatildeo de ACKs

retransmite se nenhum ACK eacute recebido neste tempo

se pkt (ou ACK) apenas atrasado (natildeo foi perdido)

retransmissatildeo causaraacute duplicaccedilatildeo mas uso de de seq tratam isso

receptor deve especificar de seq do pacote sendo confirmado

requer temporizador

Camada Transporte 3-38

Emissor rdt30

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

Wait

for

ACK0

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

Wait for

call 1 from

above

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt0) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt1)

stop_timer

stop_timer

udt_send(sndpkt)

start_timer

timeout

udt_send(sndpkt)

start_timer

timeout

rdt_rcv(rcvpkt)

Wait for

call 0from

above

Wait

for

ACK1

L

rdt_rcv(rcvpkt)

L

L

L

Camada Transporte 3-39

rdt30 em accedilatildeo

Camada Transporte 3-40

rdt30 em accedilatildeo

Camada Transporte 3-41

Desempenho do rdt30

rdt30 funciona mas desempenho eacute ruim examplo enlace de 1 Gbps 15 ms de atraso

de propagaccedilatildeo fim-a-fim pacote de 1KB

T transmit = 8kbpkt

109 bsec = 8 microsec

U sender utilizaccedilatildeo fraccedilatildeo do tempo em que o emissor estaacute ocupado enviando

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R =

L (tamanho do pacote bits) R (taxa de transmissatildeo bps)

=

Pacote de 1KB a cada 30 msec -gt 33kBsec de vazatildeo em um enlace de 1 Gbps

O protocolo de rede limita o uso de recursos fiacutesicos

= 0027

Camada Transporte 3-42

rdt30 funcionamento do stop-and-wait

Primeiro bit do pacote transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit do pkt transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega ACK

envidado

ACK chega envia proacuteximo

pacote t = RTT + L R

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R = = 0027

Camada Transporte 3-43

Protocolos com Pipeline

Pipelining emissor permite muacuteltiplos pacotes enviados e que ainda natildeo foram confirmados range do nuacutemero de sequumlecircncia deve ser aumentado

ldquobufferizaccedilatildeordquo no emissor eou receptor

2 formas geneacutericas de protocolos pipeline go-Back-N selective repeat (SR)

Camada Transporte 3-44

Pipelining aumento da utilizaccedilatildeo

Primeiro bit do pkt transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega envia ACK

ACK chega envia proacuteximo

pacote t = RTT + L R

Uacuteltimo bit do 2o pacote chega envia ACK

Uacuteltimo bit do 3o pacote chega envia

ACK

U sender

= 024

30008 = 00008

microseconds

3 L R

RTT + L R =

Utilizaccedilatildeo aumenta de um fator de 3 (neste

exemplo)

= 008

Camada Transporte 3-45

Go-Back-N Emissor de seq de k bits no cabeccedilalho do pacote

ldquojanelardquo de ateacute N consecutivos pacotes natildeo confirmados permitida

ACK(n) confirma todos os pacotes ateacute o n - ldquoACK cumulativordquo

Pode receber ACKs duplicados ACKs (veja receptor)

Temporizador para cada pacote enviado

timeout(n) retransmite pkt n e todos pacotes com s de seq maiores que estatildeo dentro da janela

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Camada Transporte 3-46

GBN FSM do emissor estendida

Wait start_timer

udt_send(sndpkt[base])

udt_send(sndpkt[base+1])

hellip

udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

if (nextseqnum lt base+N)

sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)

udt_send(sndpkt[nextseqnum])

if (base == nextseqnum)

start_timer

nextseqnum++

else

refuse_data(data)

base = getacknum(rcvpkt)+1

If (base == nextseqnum)

stop_timer

else

start_timer

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

base=1

nextseqnum=1

rdt_rcv(rcvpkt)

ampamp corrupt(rcvpkt)

L

Somente ACKs satildeo usados (sem NAKs)

Camada Transporte 3-47

GBN FSM do receptor estendida

ACK-only sempre envia ACK para pacote recebido ldquona ordemrdquo corretamente com de seq mais elevado Pode gerar ACKs duplicados Precisa recordar somente o de seq esperado

(expectedseqnum)

Pkt fora de ordem descarta (natildeo armazena) -gt receptor natildeo possui buffer Re-ACK pkt com o de seq mais elevado e em ordem

Wait

udt_send(sndpkt)

default

rdt_rcv(rcvpkt)

ampamp notcurrupt(rcvpkt)

ampamp hasseqnum(rcvpktexpectedseqnum)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(expectedseqnumACKchksum)

udt_send(sndpkt)

expectedseqnum++

expectedseqnum=1

sndpkt =

make_pkt(expectedseqnumACKchksum)

L

Camada Transporte 3-48

GBN em accedilatildeo

Tamanho da janela = 4

Camada Transporte 3-49

SR - Selective Repeat

Receptor confirma individualmente cada pkt recebido corretamente armazena pkts quando necessaacuterio para eventual envio

de pacotes ordenados agrave camada superior

Emissor reenvia somente pkts para os quais o ACK natildeo foi recebido Emissor possui temporizador para cada pacote natildeo

confirmado (unACKed pkt)

Janela do emissor N consecutivos s de seq

Novamente limita s de seq de enviados pkts natildeo confirmados (unACKed pkts)

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 20: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-20

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-21

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace

Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-22

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-23

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-24

Transferecircncia confiaacutevel de dados introduccedilatildeo hellip

lado emissor

lado receptor

rdt_send() chamado pela camada superior (eg aplic) Passagem de

dados da camada superior

udt_send() chamado por rdt para transferir pacote pelo canal

natildeo-confiaacutevel ao receptor

rdt_rcv() chamado quando pacote chega no lado receptor do canal

deliver_data() chamado pelo rdt para enviar dados agrave camada superior

Camada Transporte 3-25

Transferecircncia confiaacutevel de dados introduccedilatildeo hellip Iremos

Desenvolver incrementalmente os lados receptor e emissor do protocolo de transferecircncia confiaacutevel de dados (rdt)

considere somente transferecircncia de dados unidirecional mas informaccedilotildees de controle transitaratildeo em ambos

sentidos

usar maacutequinas de estado finitas (FSM) para especificar o emissor e o receptor

estado 1

estado 2

Evento causando transiccedilatildeo de estado

Accedilotildees tomadas na transiccedilatildeo de estados

estado quando estiver neste ldquoestadordquo

proacuteximo estado eacute unicamente

determinado pelo proacuteximo evento

evento

accedilotildees

Camada Transporte 3-26

Rdt10 transferecircncia confiaacutevel sobre um canal confiaacutevel Canal de base perfeitamente confiaacutevel

Nenhum erro nos bits

Nenhuma perda de pacotes

FSMs separadas para emissor e receptor Emissor envia dados no canal

Receptor lecirc dados do canal

Wait for

call from

above packet = make_pkt(data)

udt_send(packet)

rdt_send(data)

extract (packetdata)

deliver_data(data)

Wait for

call from

below

rdt_rcv(packet)

emissor receptor

Camada Transporte 3-27

Rdt20 canal com erros em bits

Canal de base pode trocar bits dos pacotes checksum para detectar erros nos bits

a questatildeo como se recuperar de erros acknowledgements (ACKs) receptor informa

explicitamente ao emissor que pacote recebido estaacute OK

negative acknowledgements (NAKs) receptor informa explicitamente ao emissor que o pacote possui erros

Emissor retransmite pacote ao receber um NAK

novos mecanismos no rdt20 (aleacutem de rdt10) Detecccedilatildeo de erro

Feedback do receptor msgs de controle (ACKNAK) do recptor para o emissor

Camada Transporte 3-28

rdt20 especificaccedilatildeo FSM

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below emissor

receptor rdt_send(data)

Camada Transporte 3-29

rdt20 operaccedilatildeo na ausecircncia de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-30

rdt20 cenaacuterio na presenccedila de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-31

rdt20 tem um problema fatal

O que acontece se um ACKNAK eacute corrompido

emissor natildeo sabe o que aconteceu no receptor

Natildeo pode somente retransmitir possibilidade de duplicaccedilatildeo de pacotes

Tratando duplicaccedilotildees Emissor retransmitepacote

atual se ACKNAK eacute corrompido

Emissor adiciona nuacutemeros de sequumlecircncia a cada pacote

Receptor descarta (natildeo entrega para a camada superior) pacotes duplicados

Emissor envia 1 pacote e entatildeo aguarda pela Resposta do receptor

stop and wait

Camada Transporte 3-32

rdt21 emissor trata ACKNAKs corrompidos

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

Wait for

ACK or

NAK 0 udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

Wait for

call 1 from

above

Wait for

ACK or

NAK 1

L L

Camada Transporte 3-33

rdt21 receptor trata ACKNAKs corrompidos

Wait for

0 from

below

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq0(rcvpkt)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

Wait for

1 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq0(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq1(rcvpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

Camada Transporte 3-34

rdt21 discussatildeo

Emissor

de seq adicionado a pkt

2 ‟s de seq (01) satildeo suficientes Por que

Deve verificar se ACKNAK recebido estaacute corrompido

2x mais estados state deve ldquorecordarrdquo

se pacote ldquoatualrdquo possui de seq 0 ou 1

Receptor

Deve verificar se pacote recebido eacute um duplicado estado indica se de

seq do pacote esperado eacute 0 ou 1

nota receptor natildeo pode saber se seu uacuteltimo ACKNAK foi recebido OK no emissor

Camada Transporte 3-35

rdt22 um protocolo sem NAKs

Igual ao rdt21 mas usando ACKs somente

Ao inveacutes de NAK receptor envia ACK do uacuteltimo pacote recebido corretamente (OK) Receptor deve incluir explicitamente o de seq do pacote

sendo confirmado

ACK duplicado no emissor resulta na mesma accedilatildeo como para o NAK retransmiccedilatildeo do pacote atual

Camada Transporte 3-36

rdt22 fragmentos do emissor e receptor

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

Wait for

ACK

0

Fragmento da FSM do emissor

Wait for

0 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK1 chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

(corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento da FSM Do receptor

Camada Transporte 3-37

rdt30 canais com erros e perdas

Nova hipoacutetese canal de base pode agora perder pacotes (dados ou ACKs) checksum de seq

ACKs retransmissotildees ajudaratildeo mas natildeo seratildeo suficientes

Abordagem emissor aguarda um tempo ldquorazoaacutevelrdquo a recepccedilatildeo de ACKs

retransmite se nenhum ACK eacute recebido neste tempo

se pkt (ou ACK) apenas atrasado (natildeo foi perdido)

retransmissatildeo causaraacute duplicaccedilatildeo mas uso de de seq tratam isso

receptor deve especificar de seq do pacote sendo confirmado

requer temporizador

Camada Transporte 3-38

Emissor rdt30

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

Wait

for

ACK0

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

Wait for

call 1 from

above

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt0) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt1)

stop_timer

stop_timer

udt_send(sndpkt)

start_timer

timeout

udt_send(sndpkt)

start_timer

timeout

rdt_rcv(rcvpkt)

Wait for

call 0from

above

Wait

for

ACK1

L

rdt_rcv(rcvpkt)

L

L

L

Camada Transporte 3-39

rdt30 em accedilatildeo

Camada Transporte 3-40

rdt30 em accedilatildeo

Camada Transporte 3-41

Desempenho do rdt30

rdt30 funciona mas desempenho eacute ruim examplo enlace de 1 Gbps 15 ms de atraso

de propagaccedilatildeo fim-a-fim pacote de 1KB

T transmit = 8kbpkt

109 bsec = 8 microsec

U sender utilizaccedilatildeo fraccedilatildeo do tempo em que o emissor estaacute ocupado enviando

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R =

L (tamanho do pacote bits) R (taxa de transmissatildeo bps)

=

Pacote de 1KB a cada 30 msec -gt 33kBsec de vazatildeo em um enlace de 1 Gbps

O protocolo de rede limita o uso de recursos fiacutesicos

= 0027

Camada Transporte 3-42

rdt30 funcionamento do stop-and-wait

Primeiro bit do pacote transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit do pkt transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega ACK

envidado

ACK chega envia proacuteximo

pacote t = RTT + L R

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R = = 0027

Camada Transporte 3-43

Protocolos com Pipeline

Pipelining emissor permite muacuteltiplos pacotes enviados e que ainda natildeo foram confirmados range do nuacutemero de sequumlecircncia deve ser aumentado

ldquobufferizaccedilatildeordquo no emissor eou receptor

2 formas geneacutericas de protocolos pipeline go-Back-N selective repeat (SR)

Camada Transporte 3-44

Pipelining aumento da utilizaccedilatildeo

Primeiro bit do pkt transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega envia ACK

ACK chega envia proacuteximo

pacote t = RTT + L R

Uacuteltimo bit do 2o pacote chega envia ACK

Uacuteltimo bit do 3o pacote chega envia

ACK

U sender

= 024

30008 = 00008

microseconds

3 L R

RTT + L R =

Utilizaccedilatildeo aumenta de um fator de 3 (neste

exemplo)

= 008

Camada Transporte 3-45

Go-Back-N Emissor de seq de k bits no cabeccedilalho do pacote

ldquojanelardquo de ateacute N consecutivos pacotes natildeo confirmados permitida

ACK(n) confirma todos os pacotes ateacute o n - ldquoACK cumulativordquo

Pode receber ACKs duplicados ACKs (veja receptor)

Temporizador para cada pacote enviado

timeout(n) retransmite pkt n e todos pacotes com s de seq maiores que estatildeo dentro da janela

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Camada Transporte 3-46

GBN FSM do emissor estendida

Wait start_timer

udt_send(sndpkt[base])

udt_send(sndpkt[base+1])

hellip

udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

if (nextseqnum lt base+N)

sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)

udt_send(sndpkt[nextseqnum])

if (base == nextseqnum)

start_timer

nextseqnum++

else

refuse_data(data)

base = getacknum(rcvpkt)+1

If (base == nextseqnum)

stop_timer

else

start_timer

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

base=1

nextseqnum=1

rdt_rcv(rcvpkt)

ampamp corrupt(rcvpkt)

L

Somente ACKs satildeo usados (sem NAKs)

Camada Transporte 3-47

GBN FSM do receptor estendida

ACK-only sempre envia ACK para pacote recebido ldquona ordemrdquo corretamente com de seq mais elevado Pode gerar ACKs duplicados Precisa recordar somente o de seq esperado

(expectedseqnum)

Pkt fora de ordem descarta (natildeo armazena) -gt receptor natildeo possui buffer Re-ACK pkt com o de seq mais elevado e em ordem

Wait

udt_send(sndpkt)

default

rdt_rcv(rcvpkt)

ampamp notcurrupt(rcvpkt)

ampamp hasseqnum(rcvpktexpectedseqnum)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(expectedseqnumACKchksum)

udt_send(sndpkt)

expectedseqnum++

expectedseqnum=1

sndpkt =

make_pkt(expectedseqnumACKchksum)

L

Camada Transporte 3-48

GBN em accedilatildeo

Tamanho da janela = 4

Camada Transporte 3-49

SR - Selective Repeat

Receptor confirma individualmente cada pkt recebido corretamente armazena pkts quando necessaacuterio para eventual envio

de pacotes ordenados agrave camada superior

Emissor reenvia somente pkts para os quais o ACK natildeo foi recebido Emissor possui temporizador para cada pacote natildeo

confirmado (unACKed pkt)

Janela do emissor N consecutivos s de seq

Novamente limita s de seq de enviados pkts natildeo confirmados (unACKed pkts)

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 21: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-21

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace

Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-22

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-23

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-24

Transferecircncia confiaacutevel de dados introduccedilatildeo hellip

lado emissor

lado receptor

rdt_send() chamado pela camada superior (eg aplic) Passagem de

dados da camada superior

udt_send() chamado por rdt para transferir pacote pelo canal

natildeo-confiaacutevel ao receptor

rdt_rcv() chamado quando pacote chega no lado receptor do canal

deliver_data() chamado pelo rdt para enviar dados agrave camada superior

Camada Transporte 3-25

Transferecircncia confiaacutevel de dados introduccedilatildeo hellip Iremos

Desenvolver incrementalmente os lados receptor e emissor do protocolo de transferecircncia confiaacutevel de dados (rdt)

considere somente transferecircncia de dados unidirecional mas informaccedilotildees de controle transitaratildeo em ambos

sentidos

usar maacutequinas de estado finitas (FSM) para especificar o emissor e o receptor

estado 1

estado 2

Evento causando transiccedilatildeo de estado

Accedilotildees tomadas na transiccedilatildeo de estados

estado quando estiver neste ldquoestadordquo

proacuteximo estado eacute unicamente

determinado pelo proacuteximo evento

evento

accedilotildees

Camada Transporte 3-26

Rdt10 transferecircncia confiaacutevel sobre um canal confiaacutevel Canal de base perfeitamente confiaacutevel

Nenhum erro nos bits

Nenhuma perda de pacotes

FSMs separadas para emissor e receptor Emissor envia dados no canal

Receptor lecirc dados do canal

Wait for

call from

above packet = make_pkt(data)

udt_send(packet)

rdt_send(data)

extract (packetdata)

deliver_data(data)

Wait for

call from

below

rdt_rcv(packet)

emissor receptor

Camada Transporte 3-27

Rdt20 canal com erros em bits

Canal de base pode trocar bits dos pacotes checksum para detectar erros nos bits

a questatildeo como se recuperar de erros acknowledgements (ACKs) receptor informa

explicitamente ao emissor que pacote recebido estaacute OK

negative acknowledgements (NAKs) receptor informa explicitamente ao emissor que o pacote possui erros

Emissor retransmite pacote ao receber um NAK

novos mecanismos no rdt20 (aleacutem de rdt10) Detecccedilatildeo de erro

Feedback do receptor msgs de controle (ACKNAK) do recptor para o emissor

Camada Transporte 3-28

rdt20 especificaccedilatildeo FSM

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below emissor

receptor rdt_send(data)

Camada Transporte 3-29

rdt20 operaccedilatildeo na ausecircncia de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-30

rdt20 cenaacuterio na presenccedila de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-31

rdt20 tem um problema fatal

O que acontece se um ACKNAK eacute corrompido

emissor natildeo sabe o que aconteceu no receptor

Natildeo pode somente retransmitir possibilidade de duplicaccedilatildeo de pacotes

Tratando duplicaccedilotildees Emissor retransmitepacote

atual se ACKNAK eacute corrompido

Emissor adiciona nuacutemeros de sequumlecircncia a cada pacote

Receptor descarta (natildeo entrega para a camada superior) pacotes duplicados

Emissor envia 1 pacote e entatildeo aguarda pela Resposta do receptor

stop and wait

Camada Transporte 3-32

rdt21 emissor trata ACKNAKs corrompidos

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

Wait for

ACK or

NAK 0 udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

Wait for

call 1 from

above

Wait for

ACK or

NAK 1

L L

Camada Transporte 3-33

rdt21 receptor trata ACKNAKs corrompidos

Wait for

0 from

below

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq0(rcvpkt)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

Wait for

1 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq0(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq1(rcvpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

Camada Transporte 3-34

rdt21 discussatildeo

Emissor

de seq adicionado a pkt

2 ‟s de seq (01) satildeo suficientes Por que

Deve verificar se ACKNAK recebido estaacute corrompido

2x mais estados state deve ldquorecordarrdquo

se pacote ldquoatualrdquo possui de seq 0 ou 1

Receptor

Deve verificar se pacote recebido eacute um duplicado estado indica se de

seq do pacote esperado eacute 0 ou 1

nota receptor natildeo pode saber se seu uacuteltimo ACKNAK foi recebido OK no emissor

Camada Transporte 3-35

rdt22 um protocolo sem NAKs

Igual ao rdt21 mas usando ACKs somente

Ao inveacutes de NAK receptor envia ACK do uacuteltimo pacote recebido corretamente (OK) Receptor deve incluir explicitamente o de seq do pacote

sendo confirmado

ACK duplicado no emissor resulta na mesma accedilatildeo como para o NAK retransmiccedilatildeo do pacote atual

Camada Transporte 3-36

rdt22 fragmentos do emissor e receptor

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

Wait for

ACK

0

Fragmento da FSM do emissor

Wait for

0 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK1 chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

(corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento da FSM Do receptor

Camada Transporte 3-37

rdt30 canais com erros e perdas

Nova hipoacutetese canal de base pode agora perder pacotes (dados ou ACKs) checksum de seq

ACKs retransmissotildees ajudaratildeo mas natildeo seratildeo suficientes

Abordagem emissor aguarda um tempo ldquorazoaacutevelrdquo a recepccedilatildeo de ACKs

retransmite se nenhum ACK eacute recebido neste tempo

se pkt (ou ACK) apenas atrasado (natildeo foi perdido)

retransmissatildeo causaraacute duplicaccedilatildeo mas uso de de seq tratam isso

receptor deve especificar de seq do pacote sendo confirmado

requer temporizador

Camada Transporte 3-38

Emissor rdt30

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

Wait

for

ACK0

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

Wait for

call 1 from

above

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt0) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt1)

stop_timer

stop_timer

udt_send(sndpkt)

start_timer

timeout

udt_send(sndpkt)

start_timer

timeout

rdt_rcv(rcvpkt)

Wait for

call 0from

above

Wait

for

ACK1

L

rdt_rcv(rcvpkt)

L

L

L

Camada Transporte 3-39

rdt30 em accedilatildeo

Camada Transporte 3-40

rdt30 em accedilatildeo

Camada Transporte 3-41

Desempenho do rdt30

rdt30 funciona mas desempenho eacute ruim examplo enlace de 1 Gbps 15 ms de atraso

de propagaccedilatildeo fim-a-fim pacote de 1KB

T transmit = 8kbpkt

109 bsec = 8 microsec

U sender utilizaccedilatildeo fraccedilatildeo do tempo em que o emissor estaacute ocupado enviando

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R =

L (tamanho do pacote bits) R (taxa de transmissatildeo bps)

=

Pacote de 1KB a cada 30 msec -gt 33kBsec de vazatildeo em um enlace de 1 Gbps

O protocolo de rede limita o uso de recursos fiacutesicos

= 0027

Camada Transporte 3-42

rdt30 funcionamento do stop-and-wait

Primeiro bit do pacote transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit do pkt transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega ACK

envidado

ACK chega envia proacuteximo

pacote t = RTT + L R

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R = = 0027

Camada Transporte 3-43

Protocolos com Pipeline

Pipelining emissor permite muacuteltiplos pacotes enviados e que ainda natildeo foram confirmados range do nuacutemero de sequumlecircncia deve ser aumentado

ldquobufferizaccedilatildeordquo no emissor eou receptor

2 formas geneacutericas de protocolos pipeline go-Back-N selective repeat (SR)

Camada Transporte 3-44

Pipelining aumento da utilizaccedilatildeo

Primeiro bit do pkt transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega envia ACK

ACK chega envia proacuteximo

pacote t = RTT + L R

Uacuteltimo bit do 2o pacote chega envia ACK

Uacuteltimo bit do 3o pacote chega envia

ACK

U sender

= 024

30008 = 00008

microseconds

3 L R

RTT + L R =

Utilizaccedilatildeo aumenta de um fator de 3 (neste

exemplo)

= 008

Camada Transporte 3-45

Go-Back-N Emissor de seq de k bits no cabeccedilalho do pacote

ldquojanelardquo de ateacute N consecutivos pacotes natildeo confirmados permitida

ACK(n) confirma todos os pacotes ateacute o n - ldquoACK cumulativordquo

Pode receber ACKs duplicados ACKs (veja receptor)

Temporizador para cada pacote enviado

timeout(n) retransmite pkt n e todos pacotes com s de seq maiores que estatildeo dentro da janela

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Camada Transporte 3-46

GBN FSM do emissor estendida

Wait start_timer

udt_send(sndpkt[base])

udt_send(sndpkt[base+1])

hellip

udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

if (nextseqnum lt base+N)

sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)

udt_send(sndpkt[nextseqnum])

if (base == nextseqnum)

start_timer

nextseqnum++

else

refuse_data(data)

base = getacknum(rcvpkt)+1

If (base == nextseqnum)

stop_timer

else

start_timer

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

base=1

nextseqnum=1

rdt_rcv(rcvpkt)

ampamp corrupt(rcvpkt)

L

Somente ACKs satildeo usados (sem NAKs)

Camada Transporte 3-47

GBN FSM do receptor estendida

ACK-only sempre envia ACK para pacote recebido ldquona ordemrdquo corretamente com de seq mais elevado Pode gerar ACKs duplicados Precisa recordar somente o de seq esperado

(expectedseqnum)

Pkt fora de ordem descarta (natildeo armazena) -gt receptor natildeo possui buffer Re-ACK pkt com o de seq mais elevado e em ordem

Wait

udt_send(sndpkt)

default

rdt_rcv(rcvpkt)

ampamp notcurrupt(rcvpkt)

ampamp hasseqnum(rcvpktexpectedseqnum)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(expectedseqnumACKchksum)

udt_send(sndpkt)

expectedseqnum++

expectedseqnum=1

sndpkt =

make_pkt(expectedseqnumACKchksum)

L

Camada Transporte 3-48

GBN em accedilatildeo

Tamanho da janela = 4

Camada Transporte 3-49

SR - Selective Repeat

Receptor confirma individualmente cada pkt recebido corretamente armazena pkts quando necessaacuterio para eventual envio

de pacotes ordenados agrave camada superior

Emissor reenvia somente pkts para os quais o ACK natildeo foi recebido Emissor possui temporizador para cada pacote natildeo

confirmado (unACKed pkt)

Janela do emissor N consecutivos s de seq

Novamente limita s de seq de enviados pkts natildeo confirmados (unACKed pkts)

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 22: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-22

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-23

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-24

Transferecircncia confiaacutevel de dados introduccedilatildeo hellip

lado emissor

lado receptor

rdt_send() chamado pela camada superior (eg aplic) Passagem de

dados da camada superior

udt_send() chamado por rdt para transferir pacote pelo canal

natildeo-confiaacutevel ao receptor

rdt_rcv() chamado quando pacote chega no lado receptor do canal

deliver_data() chamado pelo rdt para enviar dados agrave camada superior

Camada Transporte 3-25

Transferecircncia confiaacutevel de dados introduccedilatildeo hellip Iremos

Desenvolver incrementalmente os lados receptor e emissor do protocolo de transferecircncia confiaacutevel de dados (rdt)

considere somente transferecircncia de dados unidirecional mas informaccedilotildees de controle transitaratildeo em ambos

sentidos

usar maacutequinas de estado finitas (FSM) para especificar o emissor e o receptor

estado 1

estado 2

Evento causando transiccedilatildeo de estado

Accedilotildees tomadas na transiccedilatildeo de estados

estado quando estiver neste ldquoestadordquo

proacuteximo estado eacute unicamente

determinado pelo proacuteximo evento

evento

accedilotildees

Camada Transporte 3-26

Rdt10 transferecircncia confiaacutevel sobre um canal confiaacutevel Canal de base perfeitamente confiaacutevel

Nenhum erro nos bits

Nenhuma perda de pacotes

FSMs separadas para emissor e receptor Emissor envia dados no canal

Receptor lecirc dados do canal

Wait for

call from

above packet = make_pkt(data)

udt_send(packet)

rdt_send(data)

extract (packetdata)

deliver_data(data)

Wait for

call from

below

rdt_rcv(packet)

emissor receptor

Camada Transporte 3-27

Rdt20 canal com erros em bits

Canal de base pode trocar bits dos pacotes checksum para detectar erros nos bits

a questatildeo como se recuperar de erros acknowledgements (ACKs) receptor informa

explicitamente ao emissor que pacote recebido estaacute OK

negative acknowledgements (NAKs) receptor informa explicitamente ao emissor que o pacote possui erros

Emissor retransmite pacote ao receber um NAK

novos mecanismos no rdt20 (aleacutem de rdt10) Detecccedilatildeo de erro

Feedback do receptor msgs de controle (ACKNAK) do recptor para o emissor

Camada Transporte 3-28

rdt20 especificaccedilatildeo FSM

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below emissor

receptor rdt_send(data)

Camada Transporte 3-29

rdt20 operaccedilatildeo na ausecircncia de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-30

rdt20 cenaacuterio na presenccedila de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-31

rdt20 tem um problema fatal

O que acontece se um ACKNAK eacute corrompido

emissor natildeo sabe o que aconteceu no receptor

Natildeo pode somente retransmitir possibilidade de duplicaccedilatildeo de pacotes

Tratando duplicaccedilotildees Emissor retransmitepacote

atual se ACKNAK eacute corrompido

Emissor adiciona nuacutemeros de sequumlecircncia a cada pacote

Receptor descarta (natildeo entrega para a camada superior) pacotes duplicados

Emissor envia 1 pacote e entatildeo aguarda pela Resposta do receptor

stop and wait

Camada Transporte 3-32

rdt21 emissor trata ACKNAKs corrompidos

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

Wait for

ACK or

NAK 0 udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

Wait for

call 1 from

above

Wait for

ACK or

NAK 1

L L

Camada Transporte 3-33

rdt21 receptor trata ACKNAKs corrompidos

Wait for

0 from

below

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq0(rcvpkt)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

Wait for

1 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq0(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq1(rcvpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

Camada Transporte 3-34

rdt21 discussatildeo

Emissor

de seq adicionado a pkt

2 ‟s de seq (01) satildeo suficientes Por que

Deve verificar se ACKNAK recebido estaacute corrompido

2x mais estados state deve ldquorecordarrdquo

se pacote ldquoatualrdquo possui de seq 0 ou 1

Receptor

Deve verificar se pacote recebido eacute um duplicado estado indica se de

seq do pacote esperado eacute 0 ou 1

nota receptor natildeo pode saber se seu uacuteltimo ACKNAK foi recebido OK no emissor

Camada Transporte 3-35

rdt22 um protocolo sem NAKs

Igual ao rdt21 mas usando ACKs somente

Ao inveacutes de NAK receptor envia ACK do uacuteltimo pacote recebido corretamente (OK) Receptor deve incluir explicitamente o de seq do pacote

sendo confirmado

ACK duplicado no emissor resulta na mesma accedilatildeo como para o NAK retransmiccedilatildeo do pacote atual

Camada Transporte 3-36

rdt22 fragmentos do emissor e receptor

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

Wait for

ACK

0

Fragmento da FSM do emissor

Wait for

0 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK1 chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

(corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento da FSM Do receptor

Camada Transporte 3-37

rdt30 canais com erros e perdas

Nova hipoacutetese canal de base pode agora perder pacotes (dados ou ACKs) checksum de seq

ACKs retransmissotildees ajudaratildeo mas natildeo seratildeo suficientes

Abordagem emissor aguarda um tempo ldquorazoaacutevelrdquo a recepccedilatildeo de ACKs

retransmite se nenhum ACK eacute recebido neste tempo

se pkt (ou ACK) apenas atrasado (natildeo foi perdido)

retransmissatildeo causaraacute duplicaccedilatildeo mas uso de de seq tratam isso

receptor deve especificar de seq do pacote sendo confirmado

requer temporizador

Camada Transporte 3-38

Emissor rdt30

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

Wait

for

ACK0

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

Wait for

call 1 from

above

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt0) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt1)

stop_timer

stop_timer

udt_send(sndpkt)

start_timer

timeout

udt_send(sndpkt)

start_timer

timeout

rdt_rcv(rcvpkt)

Wait for

call 0from

above

Wait

for

ACK1

L

rdt_rcv(rcvpkt)

L

L

L

Camada Transporte 3-39

rdt30 em accedilatildeo

Camada Transporte 3-40

rdt30 em accedilatildeo

Camada Transporte 3-41

Desempenho do rdt30

rdt30 funciona mas desempenho eacute ruim examplo enlace de 1 Gbps 15 ms de atraso

de propagaccedilatildeo fim-a-fim pacote de 1KB

T transmit = 8kbpkt

109 bsec = 8 microsec

U sender utilizaccedilatildeo fraccedilatildeo do tempo em que o emissor estaacute ocupado enviando

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R =

L (tamanho do pacote bits) R (taxa de transmissatildeo bps)

=

Pacote de 1KB a cada 30 msec -gt 33kBsec de vazatildeo em um enlace de 1 Gbps

O protocolo de rede limita o uso de recursos fiacutesicos

= 0027

Camada Transporte 3-42

rdt30 funcionamento do stop-and-wait

Primeiro bit do pacote transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit do pkt transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega ACK

envidado

ACK chega envia proacuteximo

pacote t = RTT + L R

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R = = 0027

Camada Transporte 3-43

Protocolos com Pipeline

Pipelining emissor permite muacuteltiplos pacotes enviados e que ainda natildeo foram confirmados range do nuacutemero de sequumlecircncia deve ser aumentado

ldquobufferizaccedilatildeordquo no emissor eou receptor

2 formas geneacutericas de protocolos pipeline go-Back-N selective repeat (SR)

Camada Transporte 3-44

Pipelining aumento da utilizaccedilatildeo

Primeiro bit do pkt transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega envia ACK

ACK chega envia proacuteximo

pacote t = RTT + L R

Uacuteltimo bit do 2o pacote chega envia ACK

Uacuteltimo bit do 3o pacote chega envia

ACK

U sender

= 024

30008 = 00008

microseconds

3 L R

RTT + L R =

Utilizaccedilatildeo aumenta de um fator de 3 (neste

exemplo)

= 008

Camada Transporte 3-45

Go-Back-N Emissor de seq de k bits no cabeccedilalho do pacote

ldquojanelardquo de ateacute N consecutivos pacotes natildeo confirmados permitida

ACK(n) confirma todos os pacotes ateacute o n - ldquoACK cumulativordquo

Pode receber ACKs duplicados ACKs (veja receptor)

Temporizador para cada pacote enviado

timeout(n) retransmite pkt n e todos pacotes com s de seq maiores que estatildeo dentro da janela

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Camada Transporte 3-46

GBN FSM do emissor estendida

Wait start_timer

udt_send(sndpkt[base])

udt_send(sndpkt[base+1])

hellip

udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

if (nextseqnum lt base+N)

sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)

udt_send(sndpkt[nextseqnum])

if (base == nextseqnum)

start_timer

nextseqnum++

else

refuse_data(data)

base = getacknum(rcvpkt)+1

If (base == nextseqnum)

stop_timer

else

start_timer

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

base=1

nextseqnum=1

rdt_rcv(rcvpkt)

ampamp corrupt(rcvpkt)

L

Somente ACKs satildeo usados (sem NAKs)

Camada Transporte 3-47

GBN FSM do receptor estendida

ACK-only sempre envia ACK para pacote recebido ldquona ordemrdquo corretamente com de seq mais elevado Pode gerar ACKs duplicados Precisa recordar somente o de seq esperado

(expectedseqnum)

Pkt fora de ordem descarta (natildeo armazena) -gt receptor natildeo possui buffer Re-ACK pkt com o de seq mais elevado e em ordem

Wait

udt_send(sndpkt)

default

rdt_rcv(rcvpkt)

ampamp notcurrupt(rcvpkt)

ampamp hasseqnum(rcvpktexpectedseqnum)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(expectedseqnumACKchksum)

udt_send(sndpkt)

expectedseqnum++

expectedseqnum=1

sndpkt =

make_pkt(expectedseqnumACKchksum)

L

Camada Transporte 3-48

GBN em accedilatildeo

Tamanho da janela = 4

Camada Transporte 3-49

SR - Selective Repeat

Receptor confirma individualmente cada pkt recebido corretamente armazena pkts quando necessaacuterio para eventual envio

de pacotes ordenados agrave camada superior

Emissor reenvia somente pkts para os quais o ACK natildeo foi recebido Emissor possui temporizador para cada pacote natildeo

confirmado (unACKed pkt)

Janela do emissor N consecutivos s de seq

Novamente limita s de seq de enviados pkts natildeo confirmados (unACKed pkts)

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 23: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-23

Princiacutepios da transferecircncia confiaacutevel de dados

importante nas camadas aplicaccedilatildeo transporte e enlace Estaacute na lista dos 10 toacutepicos mais importantes em redes

caracteriacutesticas do canal natildeo confiaacutevel determinaraacute a complexidade do protocolo de transferecircncia confiaacutevel (rdt)

Camada Transporte 3-24

Transferecircncia confiaacutevel de dados introduccedilatildeo hellip

lado emissor

lado receptor

rdt_send() chamado pela camada superior (eg aplic) Passagem de

dados da camada superior

udt_send() chamado por rdt para transferir pacote pelo canal

natildeo-confiaacutevel ao receptor

rdt_rcv() chamado quando pacote chega no lado receptor do canal

deliver_data() chamado pelo rdt para enviar dados agrave camada superior

Camada Transporte 3-25

Transferecircncia confiaacutevel de dados introduccedilatildeo hellip Iremos

Desenvolver incrementalmente os lados receptor e emissor do protocolo de transferecircncia confiaacutevel de dados (rdt)

considere somente transferecircncia de dados unidirecional mas informaccedilotildees de controle transitaratildeo em ambos

sentidos

usar maacutequinas de estado finitas (FSM) para especificar o emissor e o receptor

estado 1

estado 2

Evento causando transiccedilatildeo de estado

Accedilotildees tomadas na transiccedilatildeo de estados

estado quando estiver neste ldquoestadordquo

proacuteximo estado eacute unicamente

determinado pelo proacuteximo evento

evento

accedilotildees

Camada Transporte 3-26

Rdt10 transferecircncia confiaacutevel sobre um canal confiaacutevel Canal de base perfeitamente confiaacutevel

Nenhum erro nos bits

Nenhuma perda de pacotes

FSMs separadas para emissor e receptor Emissor envia dados no canal

Receptor lecirc dados do canal

Wait for

call from

above packet = make_pkt(data)

udt_send(packet)

rdt_send(data)

extract (packetdata)

deliver_data(data)

Wait for

call from

below

rdt_rcv(packet)

emissor receptor

Camada Transporte 3-27

Rdt20 canal com erros em bits

Canal de base pode trocar bits dos pacotes checksum para detectar erros nos bits

a questatildeo como se recuperar de erros acknowledgements (ACKs) receptor informa

explicitamente ao emissor que pacote recebido estaacute OK

negative acknowledgements (NAKs) receptor informa explicitamente ao emissor que o pacote possui erros

Emissor retransmite pacote ao receber um NAK

novos mecanismos no rdt20 (aleacutem de rdt10) Detecccedilatildeo de erro

Feedback do receptor msgs de controle (ACKNAK) do recptor para o emissor

Camada Transporte 3-28

rdt20 especificaccedilatildeo FSM

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below emissor

receptor rdt_send(data)

Camada Transporte 3-29

rdt20 operaccedilatildeo na ausecircncia de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-30

rdt20 cenaacuterio na presenccedila de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-31

rdt20 tem um problema fatal

O que acontece se um ACKNAK eacute corrompido

emissor natildeo sabe o que aconteceu no receptor

Natildeo pode somente retransmitir possibilidade de duplicaccedilatildeo de pacotes

Tratando duplicaccedilotildees Emissor retransmitepacote

atual se ACKNAK eacute corrompido

Emissor adiciona nuacutemeros de sequumlecircncia a cada pacote

Receptor descarta (natildeo entrega para a camada superior) pacotes duplicados

Emissor envia 1 pacote e entatildeo aguarda pela Resposta do receptor

stop and wait

Camada Transporte 3-32

rdt21 emissor trata ACKNAKs corrompidos

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

Wait for

ACK or

NAK 0 udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

Wait for

call 1 from

above

Wait for

ACK or

NAK 1

L L

Camada Transporte 3-33

rdt21 receptor trata ACKNAKs corrompidos

Wait for

0 from

below

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq0(rcvpkt)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

Wait for

1 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq0(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq1(rcvpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

Camada Transporte 3-34

rdt21 discussatildeo

Emissor

de seq adicionado a pkt

2 ‟s de seq (01) satildeo suficientes Por que

Deve verificar se ACKNAK recebido estaacute corrompido

2x mais estados state deve ldquorecordarrdquo

se pacote ldquoatualrdquo possui de seq 0 ou 1

Receptor

Deve verificar se pacote recebido eacute um duplicado estado indica se de

seq do pacote esperado eacute 0 ou 1

nota receptor natildeo pode saber se seu uacuteltimo ACKNAK foi recebido OK no emissor

Camada Transporte 3-35

rdt22 um protocolo sem NAKs

Igual ao rdt21 mas usando ACKs somente

Ao inveacutes de NAK receptor envia ACK do uacuteltimo pacote recebido corretamente (OK) Receptor deve incluir explicitamente o de seq do pacote

sendo confirmado

ACK duplicado no emissor resulta na mesma accedilatildeo como para o NAK retransmiccedilatildeo do pacote atual

Camada Transporte 3-36

rdt22 fragmentos do emissor e receptor

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

Wait for

ACK

0

Fragmento da FSM do emissor

Wait for

0 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK1 chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

(corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento da FSM Do receptor

Camada Transporte 3-37

rdt30 canais com erros e perdas

Nova hipoacutetese canal de base pode agora perder pacotes (dados ou ACKs) checksum de seq

ACKs retransmissotildees ajudaratildeo mas natildeo seratildeo suficientes

Abordagem emissor aguarda um tempo ldquorazoaacutevelrdquo a recepccedilatildeo de ACKs

retransmite se nenhum ACK eacute recebido neste tempo

se pkt (ou ACK) apenas atrasado (natildeo foi perdido)

retransmissatildeo causaraacute duplicaccedilatildeo mas uso de de seq tratam isso

receptor deve especificar de seq do pacote sendo confirmado

requer temporizador

Camada Transporte 3-38

Emissor rdt30

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

Wait

for

ACK0

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

Wait for

call 1 from

above

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt0) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt1)

stop_timer

stop_timer

udt_send(sndpkt)

start_timer

timeout

udt_send(sndpkt)

start_timer

timeout

rdt_rcv(rcvpkt)

Wait for

call 0from

above

Wait

for

ACK1

L

rdt_rcv(rcvpkt)

L

L

L

Camada Transporte 3-39

rdt30 em accedilatildeo

Camada Transporte 3-40

rdt30 em accedilatildeo

Camada Transporte 3-41

Desempenho do rdt30

rdt30 funciona mas desempenho eacute ruim examplo enlace de 1 Gbps 15 ms de atraso

de propagaccedilatildeo fim-a-fim pacote de 1KB

T transmit = 8kbpkt

109 bsec = 8 microsec

U sender utilizaccedilatildeo fraccedilatildeo do tempo em que o emissor estaacute ocupado enviando

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R =

L (tamanho do pacote bits) R (taxa de transmissatildeo bps)

=

Pacote de 1KB a cada 30 msec -gt 33kBsec de vazatildeo em um enlace de 1 Gbps

O protocolo de rede limita o uso de recursos fiacutesicos

= 0027

Camada Transporte 3-42

rdt30 funcionamento do stop-and-wait

Primeiro bit do pacote transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit do pkt transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega ACK

envidado

ACK chega envia proacuteximo

pacote t = RTT + L R

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R = = 0027

Camada Transporte 3-43

Protocolos com Pipeline

Pipelining emissor permite muacuteltiplos pacotes enviados e que ainda natildeo foram confirmados range do nuacutemero de sequumlecircncia deve ser aumentado

ldquobufferizaccedilatildeordquo no emissor eou receptor

2 formas geneacutericas de protocolos pipeline go-Back-N selective repeat (SR)

Camada Transporte 3-44

Pipelining aumento da utilizaccedilatildeo

Primeiro bit do pkt transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega envia ACK

ACK chega envia proacuteximo

pacote t = RTT + L R

Uacuteltimo bit do 2o pacote chega envia ACK

Uacuteltimo bit do 3o pacote chega envia

ACK

U sender

= 024

30008 = 00008

microseconds

3 L R

RTT + L R =

Utilizaccedilatildeo aumenta de um fator de 3 (neste

exemplo)

= 008

Camada Transporte 3-45

Go-Back-N Emissor de seq de k bits no cabeccedilalho do pacote

ldquojanelardquo de ateacute N consecutivos pacotes natildeo confirmados permitida

ACK(n) confirma todos os pacotes ateacute o n - ldquoACK cumulativordquo

Pode receber ACKs duplicados ACKs (veja receptor)

Temporizador para cada pacote enviado

timeout(n) retransmite pkt n e todos pacotes com s de seq maiores que estatildeo dentro da janela

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Camada Transporte 3-46

GBN FSM do emissor estendida

Wait start_timer

udt_send(sndpkt[base])

udt_send(sndpkt[base+1])

hellip

udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

if (nextseqnum lt base+N)

sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)

udt_send(sndpkt[nextseqnum])

if (base == nextseqnum)

start_timer

nextseqnum++

else

refuse_data(data)

base = getacknum(rcvpkt)+1

If (base == nextseqnum)

stop_timer

else

start_timer

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

base=1

nextseqnum=1

rdt_rcv(rcvpkt)

ampamp corrupt(rcvpkt)

L

Somente ACKs satildeo usados (sem NAKs)

Camada Transporte 3-47

GBN FSM do receptor estendida

ACK-only sempre envia ACK para pacote recebido ldquona ordemrdquo corretamente com de seq mais elevado Pode gerar ACKs duplicados Precisa recordar somente o de seq esperado

(expectedseqnum)

Pkt fora de ordem descarta (natildeo armazena) -gt receptor natildeo possui buffer Re-ACK pkt com o de seq mais elevado e em ordem

Wait

udt_send(sndpkt)

default

rdt_rcv(rcvpkt)

ampamp notcurrupt(rcvpkt)

ampamp hasseqnum(rcvpktexpectedseqnum)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(expectedseqnumACKchksum)

udt_send(sndpkt)

expectedseqnum++

expectedseqnum=1

sndpkt =

make_pkt(expectedseqnumACKchksum)

L

Camada Transporte 3-48

GBN em accedilatildeo

Tamanho da janela = 4

Camada Transporte 3-49

SR - Selective Repeat

Receptor confirma individualmente cada pkt recebido corretamente armazena pkts quando necessaacuterio para eventual envio

de pacotes ordenados agrave camada superior

Emissor reenvia somente pkts para os quais o ACK natildeo foi recebido Emissor possui temporizador para cada pacote natildeo

confirmado (unACKed pkt)

Janela do emissor N consecutivos s de seq

Novamente limita s de seq de enviados pkts natildeo confirmados (unACKed pkts)

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 24: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-24

Transferecircncia confiaacutevel de dados introduccedilatildeo hellip

lado emissor

lado receptor

rdt_send() chamado pela camada superior (eg aplic) Passagem de

dados da camada superior

udt_send() chamado por rdt para transferir pacote pelo canal

natildeo-confiaacutevel ao receptor

rdt_rcv() chamado quando pacote chega no lado receptor do canal

deliver_data() chamado pelo rdt para enviar dados agrave camada superior

Camada Transporte 3-25

Transferecircncia confiaacutevel de dados introduccedilatildeo hellip Iremos

Desenvolver incrementalmente os lados receptor e emissor do protocolo de transferecircncia confiaacutevel de dados (rdt)

considere somente transferecircncia de dados unidirecional mas informaccedilotildees de controle transitaratildeo em ambos

sentidos

usar maacutequinas de estado finitas (FSM) para especificar o emissor e o receptor

estado 1

estado 2

Evento causando transiccedilatildeo de estado

Accedilotildees tomadas na transiccedilatildeo de estados

estado quando estiver neste ldquoestadordquo

proacuteximo estado eacute unicamente

determinado pelo proacuteximo evento

evento

accedilotildees

Camada Transporte 3-26

Rdt10 transferecircncia confiaacutevel sobre um canal confiaacutevel Canal de base perfeitamente confiaacutevel

Nenhum erro nos bits

Nenhuma perda de pacotes

FSMs separadas para emissor e receptor Emissor envia dados no canal

Receptor lecirc dados do canal

Wait for

call from

above packet = make_pkt(data)

udt_send(packet)

rdt_send(data)

extract (packetdata)

deliver_data(data)

Wait for

call from

below

rdt_rcv(packet)

emissor receptor

Camada Transporte 3-27

Rdt20 canal com erros em bits

Canal de base pode trocar bits dos pacotes checksum para detectar erros nos bits

a questatildeo como se recuperar de erros acknowledgements (ACKs) receptor informa

explicitamente ao emissor que pacote recebido estaacute OK

negative acknowledgements (NAKs) receptor informa explicitamente ao emissor que o pacote possui erros

Emissor retransmite pacote ao receber um NAK

novos mecanismos no rdt20 (aleacutem de rdt10) Detecccedilatildeo de erro

Feedback do receptor msgs de controle (ACKNAK) do recptor para o emissor

Camada Transporte 3-28

rdt20 especificaccedilatildeo FSM

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below emissor

receptor rdt_send(data)

Camada Transporte 3-29

rdt20 operaccedilatildeo na ausecircncia de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-30

rdt20 cenaacuterio na presenccedila de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-31

rdt20 tem um problema fatal

O que acontece se um ACKNAK eacute corrompido

emissor natildeo sabe o que aconteceu no receptor

Natildeo pode somente retransmitir possibilidade de duplicaccedilatildeo de pacotes

Tratando duplicaccedilotildees Emissor retransmitepacote

atual se ACKNAK eacute corrompido

Emissor adiciona nuacutemeros de sequumlecircncia a cada pacote

Receptor descarta (natildeo entrega para a camada superior) pacotes duplicados

Emissor envia 1 pacote e entatildeo aguarda pela Resposta do receptor

stop and wait

Camada Transporte 3-32

rdt21 emissor trata ACKNAKs corrompidos

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

Wait for

ACK or

NAK 0 udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

Wait for

call 1 from

above

Wait for

ACK or

NAK 1

L L

Camada Transporte 3-33

rdt21 receptor trata ACKNAKs corrompidos

Wait for

0 from

below

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq0(rcvpkt)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

Wait for

1 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq0(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq1(rcvpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

Camada Transporte 3-34

rdt21 discussatildeo

Emissor

de seq adicionado a pkt

2 ‟s de seq (01) satildeo suficientes Por que

Deve verificar se ACKNAK recebido estaacute corrompido

2x mais estados state deve ldquorecordarrdquo

se pacote ldquoatualrdquo possui de seq 0 ou 1

Receptor

Deve verificar se pacote recebido eacute um duplicado estado indica se de

seq do pacote esperado eacute 0 ou 1

nota receptor natildeo pode saber se seu uacuteltimo ACKNAK foi recebido OK no emissor

Camada Transporte 3-35

rdt22 um protocolo sem NAKs

Igual ao rdt21 mas usando ACKs somente

Ao inveacutes de NAK receptor envia ACK do uacuteltimo pacote recebido corretamente (OK) Receptor deve incluir explicitamente o de seq do pacote

sendo confirmado

ACK duplicado no emissor resulta na mesma accedilatildeo como para o NAK retransmiccedilatildeo do pacote atual

Camada Transporte 3-36

rdt22 fragmentos do emissor e receptor

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

Wait for

ACK

0

Fragmento da FSM do emissor

Wait for

0 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK1 chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

(corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento da FSM Do receptor

Camada Transporte 3-37

rdt30 canais com erros e perdas

Nova hipoacutetese canal de base pode agora perder pacotes (dados ou ACKs) checksum de seq

ACKs retransmissotildees ajudaratildeo mas natildeo seratildeo suficientes

Abordagem emissor aguarda um tempo ldquorazoaacutevelrdquo a recepccedilatildeo de ACKs

retransmite se nenhum ACK eacute recebido neste tempo

se pkt (ou ACK) apenas atrasado (natildeo foi perdido)

retransmissatildeo causaraacute duplicaccedilatildeo mas uso de de seq tratam isso

receptor deve especificar de seq do pacote sendo confirmado

requer temporizador

Camada Transporte 3-38

Emissor rdt30

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

Wait

for

ACK0

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

Wait for

call 1 from

above

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt0) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt1)

stop_timer

stop_timer

udt_send(sndpkt)

start_timer

timeout

udt_send(sndpkt)

start_timer

timeout

rdt_rcv(rcvpkt)

Wait for

call 0from

above

Wait

for

ACK1

L

rdt_rcv(rcvpkt)

L

L

L

Camada Transporte 3-39

rdt30 em accedilatildeo

Camada Transporte 3-40

rdt30 em accedilatildeo

Camada Transporte 3-41

Desempenho do rdt30

rdt30 funciona mas desempenho eacute ruim examplo enlace de 1 Gbps 15 ms de atraso

de propagaccedilatildeo fim-a-fim pacote de 1KB

T transmit = 8kbpkt

109 bsec = 8 microsec

U sender utilizaccedilatildeo fraccedilatildeo do tempo em que o emissor estaacute ocupado enviando

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R =

L (tamanho do pacote bits) R (taxa de transmissatildeo bps)

=

Pacote de 1KB a cada 30 msec -gt 33kBsec de vazatildeo em um enlace de 1 Gbps

O protocolo de rede limita o uso de recursos fiacutesicos

= 0027

Camada Transporte 3-42

rdt30 funcionamento do stop-and-wait

Primeiro bit do pacote transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit do pkt transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega ACK

envidado

ACK chega envia proacuteximo

pacote t = RTT + L R

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R = = 0027

Camada Transporte 3-43

Protocolos com Pipeline

Pipelining emissor permite muacuteltiplos pacotes enviados e que ainda natildeo foram confirmados range do nuacutemero de sequumlecircncia deve ser aumentado

ldquobufferizaccedilatildeordquo no emissor eou receptor

2 formas geneacutericas de protocolos pipeline go-Back-N selective repeat (SR)

Camada Transporte 3-44

Pipelining aumento da utilizaccedilatildeo

Primeiro bit do pkt transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega envia ACK

ACK chega envia proacuteximo

pacote t = RTT + L R

Uacuteltimo bit do 2o pacote chega envia ACK

Uacuteltimo bit do 3o pacote chega envia

ACK

U sender

= 024

30008 = 00008

microseconds

3 L R

RTT + L R =

Utilizaccedilatildeo aumenta de um fator de 3 (neste

exemplo)

= 008

Camada Transporte 3-45

Go-Back-N Emissor de seq de k bits no cabeccedilalho do pacote

ldquojanelardquo de ateacute N consecutivos pacotes natildeo confirmados permitida

ACK(n) confirma todos os pacotes ateacute o n - ldquoACK cumulativordquo

Pode receber ACKs duplicados ACKs (veja receptor)

Temporizador para cada pacote enviado

timeout(n) retransmite pkt n e todos pacotes com s de seq maiores que estatildeo dentro da janela

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Camada Transporte 3-46

GBN FSM do emissor estendida

Wait start_timer

udt_send(sndpkt[base])

udt_send(sndpkt[base+1])

hellip

udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

if (nextseqnum lt base+N)

sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)

udt_send(sndpkt[nextseqnum])

if (base == nextseqnum)

start_timer

nextseqnum++

else

refuse_data(data)

base = getacknum(rcvpkt)+1

If (base == nextseqnum)

stop_timer

else

start_timer

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

base=1

nextseqnum=1

rdt_rcv(rcvpkt)

ampamp corrupt(rcvpkt)

L

Somente ACKs satildeo usados (sem NAKs)

Camada Transporte 3-47

GBN FSM do receptor estendida

ACK-only sempre envia ACK para pacote recebido ldquona ordemrdquo corretamente com de seq mais elevado Pode gerar ACKs duplicados Precisa recordar somente o de seq esperado

(expectedseqnum)

Pkt fora de ordem descarta (natildeo armazena) -gt receptor natildeo possui buffer Re-ACK pkt com o de seq mais elevado e em ordem

Wait

udt_send(sndpkt)

default

rdt_rcv(rcvpkt)

ampamp notcurrupt(rcvpkt)

ampamp hasseqnum(rcvpktexpectedseqnum)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(expectedseqnumACKchksum)

udt_send(sndpkt)

expectedseqnum++

expectedseqnum=1

sndpkt =

make_pkt(expectedseqnumACKchksum)

L

Camada Transporte 3-48

GBN em accedilatildeo

Tamanho da janela = 4

Camada Transporte 3-49

SR - Selective Repeat

Receptor confirma individualmente cada pkt recebido corretamente armazena pkts quando necessaacuterio para eventual envio

de pacotes ordenados agrave camada superior

Emissor reenvia somente pkts para os quais o ACK natildeo foi recebido Emissor possui temporizador para cada pacote natildeo

confirmado (unACKed pkt)

Janela do emissor N consecutivos s de seq

Novamente limita s de seq de enviados pkts natildeo confirmados (unACKed pkts)

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 25: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-25

Transferecircncia confiaacutevel de dados introduccedilatildeo hellip Iremos

Desenvolver incrementalmente os lados receptor e emissor do protocolo de transferecircncia confiaacutevel de dados (rdt)

considere somente transferecircncia de dados unidirecional mas informaccedilotildees de controle transitaratildeo em ambos

sentidos

usar maacutequinas de estado finitas (FSM) para especificar o emissor e o receptor

estado 1

estado 2

Evento causando transiccedilatildeo de estado

Accedilotildees tomadas na transiccedilatildeo de estados

estado quando estiver neste ldquoestadordquo

proacuteximo estado eacute unicamente

determinado pelo proacuteximo evento

evento

accedilotildees

Camada Transporte 3-26

Rdt10 transferecircncia confiaacutevel sobre um canal confiaacutevel Canal de base perfeitamente confiaacutevel

Nenhum erro nos bits

Nenhuma perda de pacotes

FSMs separadas para emissor e receptor Emissor envia dados no canal

Receptor lecirc dados do canal

Wait for

call from

above packet = make_pkt(data)

udt_send(packet)

rdt_send(data)

extract (packetdata)

deliver_data(data)

Wait for

call from

below

rdt_rcv(packet)

emissor receptor

Camada Transporte 3-27

Rdt20 canal com erros em bits

Canal de base pode trocar bits dos pacotes checksum para detectar erros nos bits

a questatildeo como se recuperar de erros acknowledgements (ACKs) receptor informa

explicitamente ao emissor que pacote recebido estaacute OK

negative acknowledgements (NAKs) receptor informa explicitamente ao emissor que o pacote possui erros

Emissor retransmite pacote ao receber um NAK

novos mecanismos no rdt20 (aleacutem de rdt10) Detecccedilatildeo de erro

Feedback do receptor msgs de controle (ACKNAK) do recptor para o emissor

Camada Transporte 3-28

rdt20 especificaccedilatildeo FSM

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below emissor

receptor rdt_send(data)

Camada Transporte 3-29

rdt20 operaccedilatildeo na ausecircncia de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-30

rdt20 cenaacuterio na presenccedila de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-31

rdt20 tem um problema fatal

O que acontece se um ACKNAK eacute corrompido

emissor natildeo sabe o que aconteceu no receptor

Natildeo pode somente retransmitir possibilidade de duplicaccedilatildeo de pacotes

Tratando duplicaccedilotildees Emissor retransmitepacote

atual se ACKNAK eacute corrompido

Emissor adiciona nuacutemeros de sequumlecircncia a cada pacote

Receptor descarta (natildeo entrega para a camada superior) pacotes duplicados

Emissor envia 1 pacote e entatildeo aguarda pela Resposta do receptor

stop and wait

Camada Transporte 3-32

rdt21 emissor trata ACKNAKs corrompidos

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

Wait for

ACK or

NAK 0 udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

Wait for

call 1 from

above

Wait for

ACK or

NAK 1

L L

Camada Transporte 3-33

rdt21 receptor trata ACKNAKs corrompidos

Wait for

0 from

below

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq0(rcvpkt)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

Wait for

1 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq0(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq1(rcvpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

Camada Transporte 3-34

rdt21 discussatildeo

Emissor

de seq adicionado a pkt

2 ‟s de seq (01) satildeo suficientes Por que

Deve verificar se ACKNAK recebido estaacute corrompido

2x mais estados state deve ldquorecordarrdquo

se pacote ldquoatualrdquo possui de seq 0 ou 1

Receptor

Deve verificar se pacote recebido eacute um duplicado estado indica se de

seq do pacote esperado eacute 0 ou 1

nota receptor natildeo pode saber se seu uacuteltimo ACKNAK foi recebido OK no emissor

Camada Transporte 3-35

rdt22 um protocolo sem NAKs

Igual ao rdt21 mas usando ACKs somente

Ao inveacutes de NAK receptor envia ACK do uacuteltimo pacote recebido corretamente (OK) Receptor deve incluir explicitamente o de seq do pacote

sendo confirmado

ACK duplicado no emissor resulta na mesma accedilatildeo como para o NAK retransmiccedilatildeo do pacote atual

Camada Transporte 3-36

rdt22 fragmentos do emissor e receptor

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

Wait for

ACK

0

Fragmento da FSM do emissor

Wait for

0 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK1 chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

(corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento da FSM Do receptor

Camada Transporte 3-37

rdt30 canais com erros e perdas

Nova hipoacutetese canal de base pode agora perder pacotes (dados ou ACKs) checksum de seq

ACKs retransmissotildees ajudaratildeo mas natildeo seratildeo suficientes

Abordagem emissor aguarda um tempo ldquorazoaacutevelrdquo a recepccedilatildeo de ACKs

retransmite se nenhum ACK eacute recebido neste tempo

se pkt (ou ACK) apenas atrasado (natildeo foi perdido)

retransmissatildeo causaraacute duplicaccedilatildeo mas uso de de seq tratam isso

receptor deve especificar de seq do pacote sendo confirmado

requer temporizador

Camada Transporte 3-38

Emissor rdt30

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

Wait

for

ACK0

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

Wait for

call 1 from

above

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt0) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt1)

stop_timer

stop_timer

udt_send(sndpkt)

start_timer

timeout

udt_send(sndpkt)

start_timer

timeout

rdt_rcv(rcvpkt)

Wait for

call 0from

above

Wait

for

ACK1

L

rdt_rcv(rcvpkt)

L

L

L

Camada Transporte 3-39

rdt30 em accedilatildeo

Camada Transporte 3-40

rdt30 em accedilatildeo

Camada Transporte 3-41

Desempenho do rdt30

rdt30 funciona mas desempenho eacute ruim examplo enlace de 1 Gbps 15 ms de atraso

de propagaccedilatildeo fim-a-fim pacote de 1KB

T transmit = 8kbpkt

109 bsec = 8 microsec

U sender utilizaccedilatildeo fraccedilatildeo do tempo em que o emissor estaacute ocupado enviando

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R =

L (tamanho do pacote bits) R (taxa de transmissatildeo bps)

=

Pacote de 1KB a cada 30 msec -gt 33kBsec de vazatildeo em um enlace de 1 Gbps

O protocolo de rede limita o uso de recursos fiacutesicos

= 0027

Camada Transporte 3-42

rdt30 funcionamento do stop-and-wait

Primeiro bit do pacote transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit do pkt transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega ACK

envidado

ACK chega envia proacuteximo

pacote t = RTT + L R

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R = = 0027

Camada Transporte 3-43

Protocolos com Pipeline

Pipelining emissor permite muacuteltiplos pacotes enviados e que ainda natildeo foram confirmados range do nuacutemero de sequumlecircncia deve ser aumentado

ldquobufferizaccedilatildeordquo no emissor eou receptor

2 formas geneacutericas de protocolos pipeline go-Back-N selective repeat (SR)

Camada Transporte 3-44

Pipelining aumento da utilizaccedilatildeo

Primeiro bit do pkt transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega envia ACK

ACK chega envia proacuteximo

pacote t = RTT + L R

Uacuteltimo bit do 2o pacote chega envia ACK

Uacuteltimo bit do 3o pacote chega envia

ACK

U sender

= 024

30008 = 00008

microseconds

3 L R

RTT + L R =

Utilizaccedilatildeo aumenta de um fator de 3 (neste

exemplo)

= 008

Camada Transporte 3-45

Go-Back-N Emissor de seq de k bits no cabeccedilalho do pacote

ldquojanelardquo de ateacute N consecutivos pacotes natildeo confirmados permitida

ACK(n) confirma todos os pacotes ateacute o n - ldquoACK cumulativordquo

Pode receber ACKs duplicados ACKs (veja receptor)

Temporizador para cada pacote enviado

timeout(n) retransmite pkt n e todos pacotes com s de seq maiores que estatildeo dentro da janela

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Camada Transporte 3-46

GBN FSM do emissor estendida

Wait start_timer

udt_send(sndpkt[base])

udt_send(sndpkt[base+1])

hellip

udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

if (nextseqnum lt base+N)

sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)

udt_send(sndpkt[nextseqnum])

if (base == nextseqnum)

start_timer

nextseqnum++

else

refuse_data(data)

base = getacknum(rcvpkt)+1

If (base == nextseqnum)

stop_timer

else

start_timer

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

base=1

nextseqnum=1

rdt_rcv(rcvpkt)

ampamp corrupt(rcvpkt)

L

Somente ACKs satildeo usados (sem NAKs)

Camada Transporte 3-47

GBN FSM do receptor estendida

ACK-only sempre envia ACK para pacote recebido ldquona ordemrdquo corretamente com de seq mais elevado Pode gerar ACKs duplicados Precisa recordar somente o de seq esperado

(expectedseqnum)

Pkt fora de ordem descarta (natildeo armazena) -gt receptor natildeo possui buffer Re-ACK pkt com o de seq mais elevado e em ordem

Wait

udt_send(sndpkt)

default

rdt_rcv(rcvpkt)

ampamp notcurrupt(rcvpkt)

ampamp hasseqnum(rcvpktexpectedseqnum)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(expectedseqnumACKchksum)

udt_send(sndpkt)

expectedseqnum++

expectedseqnum=1

sndpkt =

make_pkt(expectedseqnumACKchksum)

L

Camada Transporte 3-48

GBN em accedilatildeo

Tamanho da janela = 4

Camada Transporte 3-49

SR - Selective Repeat

Receptor confirma individualmente cada pkt recebido corretamente armazena pkts quando necessaacuterio para eventual envio

de pacotes ordenados agrave camada superior

Emissor reenvia somente pkts para os quais o ACK natildeo foi recebido Emissor possui temporizador para cada pacote natildeo

confirmado (unACKed pkt)

Janela do emissor N consecutivos s de seq

Novamente limita s de seq de enviados pkts natildeo confirmados (unACKed pkts)

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 26: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-26

Rdt10 transferecircncia confiaacutevel sobre um canal confiaacutevel Canal de base perfeitamente confiaacutevel

Nenhum erro nos bits

Nenhuma perda de pacotes

FSMs separadas para emissor e receptor Emissor envia dados no canal

Receptor lecirc dados do canal

Wait for

call from

above packet = make_pkt(data)

udt_send(packet)

rdt_send(data)

extract (packetdata)

deliver_data(data)

Wait for

call from

below

rdt_rcv(packet)

emissor receptor

Camada Transporte 3-27

Rdt20 canal com erros em bits

Canal de base pode trocar bits dos pacotes checksum para detectar erros nos bits

a questatildeo como se recuperar de erros acknowledgements (ACKs) receptor informa

explicitamente ao emissor que pacote recebido estaacute OK

negative acknowledgements (NAKs) receptor informa explicitamente ao emissor que o pacote possui erros

Emissor retransmite pacote ao receber um NAK

novos mecanismos no rdt20 (aleacutem de rdt10) Detecccedilatildeo de erro

Feedback do receptor msgs de controle (ACKNAK) do recptor para o emissor

Camada Transporte 3-28

rdt20 especificaccedilatildeo FSM

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below emissor

receptor rdt_send(data)

Camada Transporte 3-29

rdt20 operaccedilatildeo na ausecircncia de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-30

rdt20 cenaacuterio na presenccedila de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-31

rdt20 tem um problema fatal

O que acontece se um ACKNAK eacute corrompido

emissor natildeo sabe o que aconteceu no receptor

Natildeo pode somente retransmitir possibilidade de duplicaccedilatildeo de pacotes

Tratando duplicaccedilotildees Emissor retransmitepacote

atual se ACKNAK eacute corrompido

Emissor adiciona nuacutemeros de sequumlecircncia a cada pacote

Receptor descarta (natildeo entrega para a camada superior) pacotes duplicados

Emissor envia 1 pacote e entatildeo aguarda pela Resposta do receptor

stop and wait

Camada Transporte 3-32

rdt21 emissor trata ACKNAKs corrompidos

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

Wait for

ACK or

NAK 0 udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

Wait for

call 1 from

above

Wait for

ACK or

NAK 1

L L

Camada Transporte 3-33

rdt21 receptor trata ACKNAKs corrompidos

Wait for

0 from

below

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq0(rcvpkt)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

Wait for

1 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq0(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq1(rcvpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

Camada Transporte 3-34

rdt21 discussatildeo

Emissor

de seq adicionado a pkt

2 ‟s de seq (01) satildeo suficientes Por que

Deve verificar se ACKNAK recebido estaacute corrompido

2x mais estados state deve ldquorecordarrdquo

se pacote ldquoatualrdquo possui de seq 0 ou 1

Receptor

Deve verificar se pacote recebido eacute um duplicado estado indica se de

seq do pacote esperado eacute 0 ou 1

nota receptor natildeo pode saber se seu uacuteltimo ACKNAK foi recebido OK no emissor

Camada Transporte 3-35

rdt22 um protocolo sem NAKs

Igual ao rdt21 mas usando ACKs somente

Ao inveacutes de NAK receptor envia ACK do uacuteltimo pacote recebido corretamente (OK) Receptor deve incluir explicitamente o de seq do pacote

sendo confirmado

ACK duplicado no emissor resulta na mesma accedilatildeo como para o NAK retransmiccedilatildeo do pacote atual

Camada Transporte 3-36

rdt22 fragmentos do emissor e receptor

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

Wait for

ACK

0

Fragmento da FSM do emissor

Wait for

0 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK1 chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

(corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento da FSM Do receptor

Camada Transporte 3-37

rdt30 canais com erros e perdas

Nova hipoacutetese canal de base pode agora perder pacotes (dados ou ACKs) checksum de seq

ACKs retransmissotildees ajudaratildeo mas natildeo seratildeo suficientes

Abordagem emissor aguarda um tempo ldquorazoaacutevelrdquo a recepccedilatildeo de ACKs

retransmite se nenhum ACK eacute recebido neste tempo

se pkt (ou ACK) apenas atrasado (natildeo foi perdido)

retransmissatildeo causaraacute duplicaccedilatildeo mas uso de de seq tratam isso

receptor deve especificar de seq do pacote sendo confirmado

requer temporizador

Camada Transporte 3-38

Emissor rdt30

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

Wait

for

ACK0

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

Wait for

call 1 from

above

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt0) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt1)

stop_timer

stop_timer

udt_send(sndpkt)

start_timer

timeout

udt_send(sndpkt)

start_timer

timeout

rdt_rcv(rcvpkt)

Wait for

call 0from

above

Wait

for

ACK1

L

rdt_rcv(rcvpkt)

L

L

L

Camada Transporte 3-39

rdt30 em accedilatildeo

Camada Transporte 3-40

rdt30 em accedilatildeo

Camada Transporte 3-41

Desempenho do rdt30

rdt30 funciona mas desempenho eacute ruim examplo enlace de 1 Gbps 15 ms de atraso

de propagaccedilatildeo fim-a-fim pacote de 1KB

T transmit = 8kbpkt

109 bsec = 8 microsec

U sender utilizaccedilatildeo fraccedilatildeo do tempo em que o emissor estaacute ocupado enviando

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R =

L (tamanho do pacote bits) R (taxa de transmissatildeo bps)

=

Pacote de 1KB a cada 30 msec -gt 33kBsec de vazatildeo em um enlace de 1 Gbps

O protocolo de rede limita o uso de recursos fiacutesicos

= 0027

Camada Transporte 3-42

rdt30 funcionamento do stop-and-wait

Primeiro bit do pacote transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit do pkt transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega ACK

envidado

ACK chega envia proacuteximo

pacote t = RTT + L R

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R = = 0027

Camada Transporte 3-43

Protocolos com Pipeline

Pipelining emissor permite muacuteltiplos pacotes enviados e que ainda natildeo foram confirmados range do nuacutemero de sequumlecircncia deve ser aumentado

ldquobufferizaccedilatildeordquo no emissor eou receptor

2 formas geneacutericas de protocolos pipeline go-Back-N selective repeat (SR)

Camada Transporte 3-44

Pipelining aumento da utilizaccedilatildeo

Primeiro bit do pkt transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega envia ACK

ACK chega envia proacuteximo

pacote t = RTT + L R

Uacuteltimo bit do 2o pacote chega envia ACK

Uacuteltimo bit do 3o pacote chega envia

ACK

U sender

= 024

30008 = 00008

microseconds

3 L R

RTT + L R =

Utilizaccedilatildeo aumenta de um fator de 3 (neste

exemplo)

= 008

Camada Transporte 3-45

Go-Back-N Emissor de seq de k bits no cabeccedilalho do pacote

ldquojanelardquo de ateacute N consecutivos pacotes natildeo confirmados permitida

ACK(n) confirma todos os pacotes ateacute o n - ldquoACK cumulativordquo

Pode receber ACKs duplicados ACKs (veja receptor)

Temporizador para cada pacote enviado

timeout(n) retransmite pkt n e todos pacotes com s de seq maiores que estatildeo dentro da janela

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Camada Transporte 3-46

GBN FSM do emissor estendida

Wait start_timer

udt_send(sndpkt[base])

udt_send(sndpkt[base+1])

hellip

udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

if (nextseqnum lt base+N)

sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)

udt_send(sndpkt[nextseqnum])

if (base == nextseqnum)

start_timer

nextseqnum++

else

refuse_data(data)

base = getacknum(rcvpkt)+1

If (base == nextseqnum)

stop_timer

else

start_timer

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

base=1

nextseqnum=1

rdt_rcv(rcvpkt)

ampamp corrupt(rcvpkt)

L

Somente ACKs satildeo usados (sem NAKs)

Camada Transporte 3-47

GBN FSM do receptor estendida

ACK-only sempre envia ACK para pacote recebido ldquona ordemrdquo corretamente com de seq mais elevado Pode gerar ACKs duplicados Precisa recordar somente o de seq esperado

(expectedseqnum)

Pkt fora de ordem descarta (natildeo armazena) -gt receptor natildeo possui buffer Re-ACK pkt com o de seq mais elevado e em ordem

Wait

udt_send(sndpkt)

default

rdt_rcv(rcvpkt)

ampamp notcurrupt(rcvpkt)

ampamp hasseqnum(rcvpktexpectedseqnum)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(expectedseqnumACKchksum)

udt_send(sndpkt)

expectedseqnum++

expectedseqnum=1

sndpkt =

make_pkt(expectedseqnumACKchksum)

L

Camada Transporte 3-48

GBN em accedilatildeo

Tamanho da janela = 4

Camada Transporte 3-49

SR - Selective Repeat

Receptor confirma individualmente cada pkt recebido corretamente armazena pkts quando necessaacuterio para eventual envio

de pacotes ordenados agrave camada superior

Emissor reenvia somente pkts para os quais o ACK natildeo foi recebido Emissor possui temporizador para cada pacote natildeo

confirmado (unACKed pkt)

Janela do emissor N consecutivos s de seq

Novamente limita s de seq de enviados pkts natildeo confirmados (unACKed pkts)

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 27: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-27

Rdt20 canal com erros em bits

Canal de base pode trocar bits dos pacotes checksum para detectar erros nos bits

a questatildeo como se recuperar de erros acknowledgements (ACKs) receptor informa

explicitamente ao emissor que pacote recebido estaacute OK

negative acknowledgements (NAKs) receptor informa explicitamente ao emissor que o pacote possui erros

Emissor retransmite pacote ao receber um NAK

novos mecanismos no rdt20 (aleacutem de rdt10) Detecccedilatildeo de erro

Feedback do receptor msgs de controle (ACKNAK) do recptor para o emissor

Camada Transporte 3-28

rdt20 especificaccedilatildeo FSM

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below emissor

receptor rdt_send(data)

Camada Transporte 3-29

rdt20 operaccedilatildeo na ausecircncia de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-30

rdt20 cenaacuterio na presenccedila de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-31

rdt20 tem um problema fatal

O que acontece se um ACKNAK eacute corrompido

emissor natildeo sabe o que aconteceu no receptor

Natildeo pode somente retransmitir possibilidade de duplicaccedilatildeo de pacotes

Tratando duplicaccedilotildees Emissor retransmitepacote

atual se ACKNAK eacute corrompido

Emissor adiciona nuacutemeros de sequumlecircncia a cada pacote

Receptor descarta (natildeo entrega para a camada superior) pacotes duplicados

Emissor envia 1 pacote e entatildeo aguarda pela Resposta do receptor

stop and wait

Camada Transporte 3-32

rdt21 emissor trata ACKNAKs corrompidos

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

Wait for

ACK or

NAK 0 udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

Wait for

call 1 from

above

Wait for

ACK or

NAK 1

L L

Camada Transporte 3-33

rdt21 receptor trata ACKNAKs corrompidos

Wait for

0 from

below

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq0(rcvpkt)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

Wait for

1 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq0(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq1(rcvpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

Camada Transporte 3-34

rdt21 discussatildeo

Emissor

de seq adicionado a pkt

2 ‟s de seq (01) satildeo suficientes Por que

Deve verificar se ACKNAK recebido estaacute corrompido

2x mais estados state deve ldquorecordarrdquo

se pacote ldquoatualrdquo possui de seq 0 ou 1

Receptor

Deve verificar se pacote recebido eacute um duplicado estado indica se de

seq do pacote esperado eacute 0 ou 1

nota receptor natildeo pode saber se seu uacuteltimo ACKNAK foi recebido OK no emissor

Camada Transporte 3-35

rdt22 um protocolo sem NAKs

Igual ao rdt21 mas usando ACKs somente

Ao inveacutes de NAK receptor envia ACK do uacuteltimo pacote recebido corretamente (OK) Receptor deve incluir explicitamente o de seq do pacote

sendo confirmado

ACK duplicado no emissor resulta na mesma accedilatildeo como para o NAK retransmiccedilatildeo do pacote atual

Camada Transporte 3-36

rdt22 fragmentos do emissor e receptor

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

Wait for

ACK

0

Fragmento da FSM do emissor

Wait for

0 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK1 chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

(corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento da FSM Do receptor

Camada Transporte 3-37

rdt30 canais com erros e perdas

Nova hipoacutetese canal de base pode agora perder pacotes (dados ou ACKs) checksum de seq

ACKs retransmissotildees ajudaratildeo mas natildeo seratildeo suficientes

Abordagem emissor aguarda um tempo ldquorazoaacutevelrdquo a recepccedilatildeo de ACKs

retransmite se nenhum ACK eacute recebido neste tempo

se pkt (ou ACK) apenas atrasado (natildeo foi perdido)

retransmissatildeo causaraacute duplicaccedilatildeo mas uso de de seq tratam isso

receptor deve especificar de seq do pacote sendo confirmado

requer temporizador

Camada Transporte 3-38

Emissor rdt30

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

Wait

for

ACK0

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

Wait for

call 1 from

above

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt0) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt1)

stop_timer

stop_timer

udt_send(sndpkt)

start_timer

timeout

udt_send(sndpkt)

start_timer

timeout

rdt_rcv(rcvpkt)

Wait for

call 0from

above

Wait

for

ACK1

L

rdt_rcv(rcvpkt)

L

L

L

Camada Transporte 3-39

rdt30 em accedilatildeo

Camada Transporte 3-40

rdt30 em accedilatildeo

Camada Transporte 3-41

Desempenho do rdt30

rdt30 funciona mas desempenho eacute ruim examplo enlace de 1 Gbps 15 ms de atraso

de propagaccedilatildeo fim-a-fim pacote de 1KB

T transmit = 8kbpkt

109 bsec = 8 microsec

U sender utilizaccedilatildeo fraccedilatildeo do tempo em que o emissor estaacute ocupado enviando

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R =

L (tamanho do pacote bits) R (taxa de transmissatildeo bps)

=

Pacote de 1KB a cada 30 msec -gt 33kBsec de vazatildeo em um enlace de 1 Gbps

O protocolo de rede limita o uso de recursos fiacutesicos

= 0027

Camada Transporte 3-42

rdt30 funcionamento do stop-and-wait

Primeiro bit do pacote transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit do pkt transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega ACK

envidado

ACK chega envia proacuteximo

pacote t = RTT + L R

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R = = 0027

Camada Transporte 3-43

Protocolos com Pipeline

Pipelining emissor permite muacuteltiplos pacotes enviados e que ainda natildeo foram confirmados range do nuacutemero de sequumlecircncia deve ser aumentado

ldquobufferizaccedilatildeordquo no emissor eou receptor

2 formas geneacutericas de protocolos pipeline go-Back-N selective repeat (SR)

Camada Transporte 3-44

Pipelining aumento da utilizaccedilatildeo

Primeiro bit do pkt transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega envia ACK

ACK chega envia proacuteximo

pacote t = RTT + L R

Uacuteltimo bit do 2o pacote chega envia ACK

Uacuteltimo bit do 3o pacote chega envia

ACK

U sender

= 024

30008 = 00008

microseconds

3 L R

RTT + L R =

Utilizaccedilatildeo aumenta de um fator de 3 (neste

exemplo)

= 008

Camada Transporte 3-45

Go-Back-N Emissor de seq de k bits no cabeccedilalho do pacote

ldquojanelardquo de ateacute N consecutivos pacotes natildeo confirmados permitida

ACK(n) confirma todos os pacotes ateacute o n - ldquoACK cumulativordquo

Pode receber ACKs duplicados ACKs (veja receptor)

Temporizador para cada pacote enviado

timeout(n) retransmite pkt n e todos pacotes com s de seq maiores que estatildeo dentro da janela

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Camada Transporte 3-46

GBN FSM do emissor estendida

Wait start_timer

udt_send(sndpkt[base])

udt_send(sndpkt[base+1])

hellip

udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

if (nextseqnum lt base+N)

sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)

udt_send(sndpkt[nextseqnum])

if (base == nextseqnum)

start_timer

nextseqnum++

else

refuse_data(data)

base = getacknum(rcvpkt)+1

If (base == nextseqnum)

stop_timer

else

start_timer

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

base=1

nextseqnum=1

rdt_rcv(rcvpkt)

ampamp corrupt(rcvpkt)

L

Somente ACKs satildeo usados (sem NAKs)

Camada Transporte 3-47

GBN FSM do receptor estendida

ACK-only sempre envia ACK para pacote recebido ldquona ordemrdquo corretamente com de seq mais elevado Pode gerar ACKs duplicados Precisa recordar somente o de seq esperado

(expectedseqnum)

Pkt fora de ordem descarta (natildeo armazena) -gt receptor natildeo possui buffer Re-ACK pkt com o de seq mais elevado e em ordem

Wait

udt_send(sndpkt)

default

rdt_rcv(rcvpkt)

ampamp notcurrupt(rcvpkt)

ampamp hasseqnum(rcvpktexpectedseqnum)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(expectedseqnumACKchksum)

udt_send(sndpkt)

expectedseqnum++

expectedseqnum=1

sndpkt =

make_pkt(expectedseqnumACKchksum)

L

Camada Transporte 3-48

GBN em accedilatildeo

Tamanho da janela = 4

Camada Transporte 3-49

SR - Selective Repeat

Receptor confirma individualmente cada pkt recebido corretamente armazena pkts quando necessaacuterio para eventual envio

de pacotes ordenados agrave camada superior

Emissor reenvia somente pkts para os quais o ACK natildeo foi recebido Emissor possui temporizador para cada pacote natildeo

confirmado (unACKed pkt)

Janela do emissor N consecutivos s de seq

Novamente limita s de seq de enviados pkts natildeo confirmados (unACKed pkts)

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 28: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-28

rdt20 especificaccedilatildeo FSM

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below emissor

receptor rdt_send(data)

Camada Transporte 3-29

rdt20 operaccedilatildeo na ausecircncia de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-30

rdt20 cenaacuterio na presenccedila de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-31

rdt20 tem um problema fatal

O que acontece se um ACKNAK eacute corrompido

emissor natildeo sabe o que aconteceu no receptor

Natildeo pode somente retransmitir possibilidade de duplicaccedilatildeo de pacotes

Tratando duplicaccedilotildees Emissor retransmitepacote

atual se ACKNAK eacute corrompido

Emissor adiciona nuacutemeros de sequumlecircncia a cada pacote

Receptor descarta (natildeo entrega para a camada superior) pacotes duplicados

Emissor envia 1 pacote e entatildeo aguarda pela Resposta do receptor

stop and wait

Camada Transporte 3-32

rdt21 emissor trata ACKNAKs corrompidos

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

Wait for

ACK or

NAK 0 udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

Wait for

call 1 from

above

Wait for

ACK or

NAK 1

L L

Camada Transporte 3-33

rdt21 receptor trata ACKNAKs corrompidos

Wait for

0 from

below

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq0(rcvpkt)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

Wait for

1 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq0(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq1(rcvpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

Camada Transporte 3-34

rdt21 discussatildeo

Emissor

de seq adicionado a pkt

2 ‟s de seq (01) satildeo suficientes Por que

Deve verificar se ACKNAK recebido estaacute corrompido

2x mais estados state deve ldquorecordarrdquo

se pacote ldquoatualrdquo possui de seq 0 ou 1

Receptor

Deve verificar se pacote recebido eacute um duplicado estado indica se de

seq do pacote esperado eacute 0 ou 1

nota receptor natildeo pode saber se seu uacuteltimo ACKNAK foi recebido OK no emissor

Camada Transporte 3-35

rdt22 um protocolo sem NAKs

Igual ao rdt21 mas usando ACKs somente

Ao inveacutes de NAK receptor envia ACK do uacuteltimo pacote recebido corretamente (OK) Receptor deve incluir explicitamente o de seq do pacote

sendo confirmado

ACK duplicado no emissor resulta na mesma accedilatildeo como para o NAK retransmiccedilatildeo do pacote atual

Camada Transporte 3-36

rdt22 fragmentos do emissor e receptor

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

Wait for

ACK

0

Fragmento da FSM do emissor

Wait for

0 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK1 chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

(corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento da FSM Do receptor

Camada Transporte 3-37

rdt30 canais com erros e perdas

Nova hipoacutetese canal de base pode agora perder pacotes (dados ou ACKs) checksum de seq

ACKs retransmissotildees ajudaratildeo mas natildeo seratildeo suficientes

Abordagem emissor aguarda um tempo ldquorazoaacutevelrdquo a recepccedilatildeo de ACKs

retransmite se nenhum ACK eacute recebido neste tempo

se pkt (ou ACK) apenas atrasado (natildeo foi perdido)

retransmissatildeo causaraacute duplicaccedilatildeo mas uso de de seq tratam isso

receptor deve especificar de seq do pacote sendo confirmado

requer temporizador

Camada Transporte 3-38

Emissor rdt30

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

Wait

for

ACK0

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

Wait for

call 1 from

above

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt0) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt1)

stop_timer

stop_timer

udt_send(sndpkt)

start_timer

timeout

udt_send(sndpkt)

start_timer

timeout

rdt_rcv(rcvpkt)

Wait for

call 0from

above

Wait

for

ACK1

L

rdt_rcv(rcvpkt)

L

L

L

Camada Transporte 3-39

rdt30 em accedilatildeo

Camada Transporte 3-40

rdt30 em accedilatildeo

Camada Transporte 3-41

Desempenho do rdt30

rdt30 funciona mas desempenho eacute ruim examplo enlace de 1 Gbps 15 ms de atraso

de propagaccedilatildeo fim-a-fim pacote de 1KB

T transmit = 8kbpkt

109 bsec = 8 microsec

U sender utilizaccedilatildeo fraccedilatildeo do tempo em que o emissor estaacute ocupado enviando

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R =

L (tamanho do pacote bits) R (taxa de transmissatildeo bps)

=

Pacote de 1KB a cada 30 msec -gt 33kBsec de vazatildeo em um enlace de 1 Gbps

O protocolo de rede limita o uso de recursos fiacutesicos

= 0027

Camada Transporte 3-42

rdt30 funcionamento do stop-and-wait

Primeiro bit do pacote transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit do pkt transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega ACK

envidado

ACK chega envia proacuteximo

pacote t = RTT + L R

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R = = 0027

Camada Transporte 3-43

Protocolos com Pipeline

Pipelining emissor permite muacuteltiplos pacotes enviados e que ainda natildeo foram confirmados range do nuacutemero de sequumlecircncia deve ser aumentado

ldquobufferizaccedilatildeordquo no emissor eou receptor

2 formas geneacutericas de protocolos pipeline go-Back-N selective repeat (SR)

Camada Transporte 3-44

Pipelining aumento da utilizaccedilatildeo

Primeiro bit do pkt transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega envia ACK

ACK chega envia proacuteximo

pacote t = RTT + L R

Uacuteltimo bit do 2o pacote chega envia ACK

Uacuteltimo bit do 3o pacote chega envia

ACK

U sender

= 024

30008 = 00008

microseconds

3 L R

RTT + L R =

Utilizaccedilatildeo aumenta de um fator de 3 (neste

exemplo)

= 008

Camada Transporte 3-45

Go-Back-N Emissor de seq de k bits no cabeccedilalho do pacote

ldquojanelardquo de ateacute N consecutivos pacotes natildeo confirmados permitida

ACK(n) confirma todos os pacotes ateacute o n - ldquoACK cumulativordquo

Pode receber ACKs duplicados ACKs (veja receptor)

Temporizador para cada pacote enviado

timeout(n) retransmite pkt n e todos pacotes com s de seq maiores que estatildeo dentro da janela

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Camada Transporte 3-46

GBN FSM do emissor estendida

Wait start_timer

udt_send(sndpkt[base])

udt_send(sndpkt[base+1])

hellip

udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

if (nextseqnum lt base+N)

sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)

udt_send(sndpkt[nextseqnum])

if (base == nextseqnum)

start_timer

nextseqnum++

else

refuse_data(data)

base = getacknum(rcvpkt)+1

If (base == nextseqnum)

stop_timer

else

start_timer

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

base=1

nextseqnum=1

rdt_rcv(rcvpkt)

ampamp corrupt(rcvpkt)

L

Somente ACKs satildeo usados (sem NAKs)

Camada Transporte 3-47

GBN FSM do receptor estendida

ACK-only sempre envia ACK para pacote recebido ldquona ordemrdquo corretamente com de seq mais elevado Pode gerar ACKs duplicados Precisa recordar somente o de seq esperado

(expectedseqnum)

Pkt fora de ordem descarta (natildeo armazena) -gt receptor natildeo possui buffer Re-ACK pkt com o de seq mais elevado e em ordem

Wait

udt_send(sndpkt)

default

rdt_rcv(rcvpkt)

ampamp notcurrupt(rcvpkt)

ampamp hasseqnum(rcvpktexpectedseqnum)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(expectedseqnumACKchksum)

udt_send(sndpkt)

expectedseqnum++

expectedseqnum=1

sndpkt =

make_pkt(expectedseqnumACKchksum)

L

Camada Transporte 3-48

GBN em accedilatildeo

Tamanho da janela = 4

Camada Transporte 3-49

SR - Selective Repeat

Receptor confirma individualmente cada pkt recebido corretamente armazena pkts quando necessaacuterio para eventual envio

de pacotes ordenados agrave camada superior

Emissor reenvia somente pkts para os quais o ACK natildeo foi recebido Emissor possui temporizador para cada pacote natildeo

confirmado (unACKed pkt)

Janela do emissor N consecutivos s de seq

Novamente limita s de seq de enviados pkts natildeo confirmados (unACKed pkts)

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 29: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-29

rdt20 operaccedilatildeo na ausecircncia de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-30

rdt20 cenaacuterio na presenccedila de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-31

rdt20 tem um problema fatal

O que acontece se um ACKNAK eacute corrompido

emissor natildeo sabe o que aconteceu no receptor

Natildeo pode somente retransmitir possibilidade de duplicaccedilatildeo de pacotes

Tratando duplicaccedilotildees Emissor retransmitepacote

atual se ACKNAK eacute corrompido

Emissor adiciona nuacutemeros de sequumlecircncia a cada pacote

Receptor descarta (natildeo entrega para a camada superior) pacotes duplicados

Emissor envia 1 pacote e entatildeo aguarda pela Resposta do receptor

stop and wait

Camada Transporte 3-32

rdt21 emissor trata ACKNAKs corrompidos

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

Wait for

ACK or

NAK 0 udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

Wait for

call 1 from

above

Wait for

ACK or

NAK 1

L L

Camada Transporte 3-33

rdt21 receptor trata ACKNAKs corrompidos

Wait for

0 from

below

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq0(rcvpkt)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

Wait for

1 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq0(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq1(rcvpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

Camada Transporte 3-34

rdt21 discussatildeo

Emissor

de seq adicionado a pkt

2 ‟s de seq (01) satildeo suficientes Por que

Deve verificar se ACKNAK recebido estaacute corrompido

2x mais estados state deve ldquorecordarrdquo

se pacote ldquoatualrdquo possui de seq 0 ou 1

Receptor

Deve verificar se pacote recebido eacute um duplicado estado indica se de

seq do pacote esperado eacute 0 ou 1

nota receptor natildeo pode saber se seu uacuteltimo ACKNAK foi recebido OK no emissor

Camada Transporte 3-35

rdt22 um protocolo sem NAKs

Igual ao rdt21 mas usando ACKs somente

Ao inveacutes de NAK receptor envia ACK do uacuteltimo pacote recebido corretamente (OK) Receptor deve incluir explicitamente o de seq do pacote

sendo confirmado

ACK duplicado no emissor resulta na mesma accedilatildeo como para o NAK retransmiccedilatildeo do pacote atual

Camada Transporte 3-36

rdt22 fragmentos do emissor e receptor

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

Wait for

ACK

0

Fragmento da FSM do emissor

Wait for

0 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK1 chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

(corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento da FSM Do receptor

Camada Transporte 3-37

rdt30 canais com erros e perdas

Nova hipoacutetese canal de base pode agora perder pacotes (dados ou ACKs) checksum de seq

ACKs retransmissotildees ajudaratildeo mas natildeo seratildeo suficientes

Abordagem emissor aguarda um tempo ldquorazoaacutevelrdquo a recepccedilatildeo de ACKs

retransmite se nenhum ACK eacute recebido neste tempo

se pkt (ou ACK) apenas atrasado (natildeo foi perdido)

retransmissatildeo causaraacute duplicaccedilatildeo mas uso de de seq tratam isso

receptor deve especificar de seq do pacote sendo confirmado

requer temporizador

Camada Transporte 3-38

Emissor rdt30

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

Wait

for

ACK0

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

Wait for

call 1 from

above

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt0) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt1)

stop_timer

stop_timer

udt_send(sndpkt)

start_timer

timeout

udt_send(sndpkt)

start_timer

timeout

rdt_rcv(rcvpkt)

Wait for

call 0from

above

Wait

for

ACK1

L

rdt_rcv(rcvpkt)

L

L

L

Camada Transporte 3-39

rdt30 em accedilatildeo

Camada Transporte 3-40

rdt30 em accedilatildeo

Camada Transporte 3-41

Desempenho do rdt30

rdt30 funciona mas desempenho eacute ruim examplo enlace de 1 Gbps 15 ms de atraso

de propagaccedilatildeo fim-a-fim pacote de 1KB

T transmit = 8kbpkt

109 bsec = 8 microsec

U sender utilizaccedilatildeo fraccedilatildeo do tempo em que o emissor estaacute ocupado enviando

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R =

L (tamanho do pacote bits) R (taxa de transmissatildeo bps)

=

Pacote de 1KB a cada 30 msec -gt 33kBsec de vazatildeo em um enlace de 1 Gbps

O protocolo de rede limita o uso de recursos fiacutesicos

= 0027

Camada Transporte 3-42

rdt30 funcionamento do stop-and-wait

Primeiro bit do pacote transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit do pkt transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega ACK

envidado

ACK chega envia proacuteximo

pacote t = RTT + L R

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R = = 0027

Camada Transporte 3-43

Protocolos com Pipeline

Pipelining emissor permite muacuteltiplos pacotes enviados e que ainda natildeo foram confirmados range do nuacutemero de sequumlecircncia deve ser aumentado

ldquobufferizaccedilatildeordquo no emissor eou receptor

2 formas geneacutericas de protocolos pipeline go-Back-N selective repeat (SR)

Camada Transporte 3-44

Pipelining aumento da utilizaccedilatildeo

Primeiro bit do pkt transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega envia ACK

ACK chega envia proacuteximo

pacote t = RTT + L R

Uacuteltimo bit do 2o pacote chega envia ACK

Uacuteltimo bit do 3o pacote chega envia

ACK

U sender

= 024

30008 = 00008

microseconds

3 L R

RTT + L R =

Utilizaccedilatildeo aumenta de um fator de 3 (neste

exemplo)

= 008

Camada Transporte 3-45

Go-Back-N Emissor de seq de k bits no cabeccedilalho do pacote

ldquojanelardquo de ateacute N consecutivos pacotes natildeo confirmados permitida

ACK(n) confirma todos os pacotes ateacute o n - ldquoACK cumulativordquo

Pode receber ACKs duplicados ACKs (veja receptor)

Temporizador para cada pacote enviado

timeout(n) retransmite pkt n e todos pacotes com s de seq maiores que estatildeo dentro da janela

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Camada Transporte 3-46

GBN FSM do emissor estendida

Wait start_timer

udt_send(sndpkt[base])

udt_send(sndpkt[base+1])

hellip

udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

if (nextseqnum lt base+N)

sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)

udt_send(sndpkt[nextseqnum])

if (base == nextseqnum)

start_timer

nextseqnum++

else

refuse_data(data)

base = getacknum(rcvpkt)+1

If (base == nextseqnum)

stop_timer

else

start_timer

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

base=1

nextseqnum=1

rdt_rcv(rcvpkt)

ampamp corrupt(rcvpkt)

L

Somente ACKs satildeo usados (sem NAKs)

Camada Transporte 3-47

GBN FSM do receptor estendida

ACK-only sempre envia ACK para pacote recebido ldquona ordemrdquo corretamente com de seq mais elevado Pode gerar ACKs duplicados Precisa recordar somente o de seq esperado

(expectedseqnum)

Pkt fora de ordem descarta (natildeo armazena) -gt receptor natildeo possui buffer Re-ACK pkt com o de seq mais elevado e em ordem

Wait

udt_send(sndpkt)

default

rdt_rcv(rcvpkt)

ampamp notcurrupt(rcvpkt)

ampamp hasseqnum(rcvpktexpectedseqnum)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(expectedseqnumACKchksum)

udt_send(sndpkt)

expectedseqnum++

expectedseqnum=1

sndpkt =

make_pkt(expectedseqnumACKchksum)

L

Camada Transporte 3-48

GBN em accedilatildeo

Tamanho da janela = 4

Camada Transporte 3-49

SR - Selective Repeat

Receptor confirma individualmente cada pkt recebido corretamente armazena pkts quando necessaacuterio para eventual envio

de pacotes ordenados agrave camada superior

Emissor reenvia somente pkts para os quais o ACK natildeo foi recebido Emissor possui temporizador para cada pacote natildeo

confirmado (unACKed pkt)

Janela do emissor N consecutivos s de seq

Novamente limita s de seq de enviados pkts natildeo confirmados (unACKed pkts)

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 30: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-30

rdt20 cenaacuterio na presenccedila de erros

Wait for

call from

above

snkpkt = make_pkt(data checksum)

udt_send(sndpkt)

extract(rcvpktdata)

deliver_data(data)

udt_send(ACK)

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) ampamp

corrupt(rcvpkt)

Wait for

ACK or

NAK

Wait for

call from

below

rdt_send(data)

Camada Transporte 3-31

rdt20 tem um problema fatal

O que acontece se um ACKNAK eacute corrompido

emissor natildeo sabe o que aconteceu no receptor

Natildeo pode somente retransmitir possibilidade de duplicaccedilatildeo de pacotes

Tratando duplicaccedilotildees Emissor retransmitepacote

atual se ACKNAK eacute corrompido

Emissor adiciona nuacutemeros de sequumlecircncia a cada pacote

Receptor descarta (natildeo entrega para a camada superior) pacotes duplicados

Emissor envia 1 pacote e entatildeo aguarda pela Resposta do receptor

stop and wait

Camada Transporte 3-32

rdt21 emissor trata ACKNAKs corrompidos

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

Wait for

ACK or

NAK 0 udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

Wait for

call 1 from

above

Wait for

ACK or

NAK 1

L L

Camada Transporte 3-33

rdt21 receptor trata ACKNAKs corrompidos

Wait for

0 from

below

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq0(rcvpkt)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

Wait for

1 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq0(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq1(rcvpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

Camada Transporte 3-34

rdt21 discussatildeo

Emissor

de seq adicionado a pkt

2 ‟s de seq (01) satildeo suficientes Por que

Deve verificar se ACKNAK recebido estaacute corrompido

2x mais estados state deve ldquorecordarrdquo

se pacote ldquoatualrdquo possui de seq 0 ou 1

Receptor

Deve verificar se pacote recebido eacute um duplicado estado indica se de

seq do pacote esperado eacute 0 ou 1

nota receptor natildeo pode saber se seu uacuteltimo ACKNAK foi recebido OK no emissor

Camada Transporte 3-35

rdt22 um protocolo sem NAKs

Igual ao rdt21 mas usando ACKs somente

Ao inveacutes de NAK receptor envia ACK do uacuteltimo pacote recebido corretamente (OK) Receptor deve incluir explicitamente o de seq do pacote

sendo confirmado

ACK duplicado no emissor resulta na mesma accedilatildeo como para o NAK retransmiccedilatildeo do pacote atual

Camada Transporte 3-36

rdt22 fragmentos do emissor e receptor

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

Wait for

ACK

0

Fragmento da FSM do emissor

Wait for

0 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK1 chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

(corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento da FSM Do receptor

Camada Transporte 3-37

rdt30 canais com erros e perdas

Nova hipoacutetese canal de base pode agora perder pacotes (dados ou ACKs) checksum de seq

ACKs retransmissotildees ajudaratildeo mas natildeo seratildeo suficientes

Abordagem emissor aguarda um tempo ldquorazoaacutevelrdquo a recepccedilatildeo de ACKs

retransmite se nenhum ACK eacute recebido neste tempo

se pkt (ou ACK) apenas atrasado (natildeo foi perdido)

retransmissatildeo causaraacute duplicaccedilatildeo mas uso de de seq tratam isso

receptor deve especificar de seq do pacote sendo confirmado

requer temporizador

Camada Transporte 3-38

Emissor rdt30

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

Wait

for

ACK0

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

Wait for

call 1 from

above

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt0) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt1)

stop_timer

stop_timer

udt_send(sndpkt)

start_timer

timeout

udt_send(sndpkt)

start_timer

timeout

rdt_rcv(rcvpkt)

Wait for

call 0from

above

Wait

for

ACK1

L

rdt_rcv(rcvpkt)

L

L

L

Camada Transporte 3-39

rdt30 em accedilatildeo

Camada Transporte 3-40

rdt30 em accedilatildeo

Camada Transporte 3-41

Desempenho do rdt30

rdt30 funciona mas desempenho eacute ruim examplo enlace de 1 Gbps 15 ms de atraso

de propagaccedilatildeo fim-a-fim pacote de 1KB

T transmit = 8kbpkt

109 bsec = 8 microsec

U sender utilizaccedilatildeo fraccedilatildeo do tempo em que o emissor estaacute ocupado enviando

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R =

L (tamanho do pacote bits) R (taxa de transmissatildeo bps)

=

Pacote de 1KB a cada 30 msec -gt 33kBsec de vazatildeo em um enlace de 1 Gbps

O protocolo de rede limita o uso de recursos fiacutesicos

= 0027

Camada Transporte 3-42

rdt30 funcionamento do stop-and-wait

Primeiro bit do pacote transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit do pkt transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega ACK

envidado

ACK chega envia proacuteximo

pacote t = RTT + L R

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R = = 0027

Camada Transporte 3-43

Protocolos com Pipeline

Pipelining emissor permite muacuteltiplos pacotes enviados e que ainda natildeo foram confirmados range do nuacutemero de sequumlecircncia deve ser aumentado

ldquobufferizaccedilatildeordquo no emissor eou receptor

2 formas geneacutericas de protocolos pipeline go-Back-N selective repeat (SR)

Camada Transporte 3-44

Pipelining aumento da utilizaccedilatildeo

Primeiro bit do pkt transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega envia ACK

ACK chega envia proacuteximo

pacote t = RTT + L R

Uacuteltimo bit do 2o pacote chega envia ACK

Uacuteltimo bit do 3o pacote chega envia

ACK

U sender

= 024

30008 = 00008

microseconds

3 L R

RTT + L R =

Utilizaccedilatildeo aumenta de um fator de 3 (neste

exemplo)

= 008

Camada Transporte 3-45

Go-Back-N Emissor de seq de k bits no cabeccedilalho do pacote

ldquojanelardquo de ateacute N consecutivos pacotes natildeo confirmados permitida

ACK(n) confirma todos os pacotes ateacute o n - ldquoACK cumulativordquo

Pode receber ACKs duplicados ACKs (veja receptor)

Temporizador para cada pacote enviado

timeout(n) retransmite pkt n e todos pacotes com s de seq maiores que estatildeo dentro da janela

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Camada Transporte 3-46

GBN FSM do emissor estendida

Wait start_timer

udt_send(sndpkt[base])

udt_send(sndpkt[base+1])

hellip

udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

if (nextseqnum lt base+N)

sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)

udt_send(sndpkt[nextseqnum])

if (base == nextseqnum)

start_timer

nextseqnum++

else

refuse_data(data)

base = getacknum(rcvpkt)+1

If (base == nextseqnum)

stop_timer

else

start_timer

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

base=1

nextseqnum=1

rdt_rcv(rcvpkt)

ampamp corrupt(rcvpkt)

L

Somente ACKs satildeo usados (sem NAKs)

Camada Transporte 3-47

GBN FSM do receptor estendida

ACK-only sempre envia ACK para pacote recebido ldquona ordemrdquo corretamente com de seq mais elevado Pode gerar ACKs duplicados Precisa recordar somente o de seq esperado

(expectedseqnum)

Pkt fora de ordem descarta (natildeo armazena) -gt receptor natildeo possui buffer Re-ACK pkt com o de seq mais elevado e em ordem

Wait

udt_send(sndpkt)

default

rdt_rcv(rcvpkt)

ampamp notcurrupt(rcvpkt)

ampamp hasseqnum(rcvpktexpectedseqnum)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(expectedseqnumACKchksum)

udt_send(sndpkt)

expectedseqnum++

expectedseqnum=1

sndpkt =

make_pkt(expectedseqnumACKchksum)

L

Camada Transporte 3-48

GBN em accedilatildeo

Tamanho da janela = 4

Camada Transporte 3-49

SR - Selective Repeat

Receptor confirma individualmente cada pkt recebido corretamente armazena pkts quando necessaacuterio para eventual envio

de pacotes ordenados agrave camada superior

Emissor reenvia somente pkts para os quais o ACK natildeo foi recebido Emissor possui temporizador para cada pacote natildeo

confirmado (unACKed pkt)

Janela do emissor N consecutivos s de seq

Novamente limita s de seq de enviados pkts natildeo confirmados (unACKed pkts)

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 31: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-31

rdt20 tem um problema fatal

O que acontece se um ACKNAK eacute corrompido

emissor natildeo sabe o que aconteceu no receptor

Natildeo pode somente retransmitir possibilidade de duplicaccedilatildeo de pacotes

Tratando duplicaccedilotildees Emissor retransmitepacote

atual se ACKNAK eacute corrompido

Emissor adiciona nuacutemeros de sequumlecircncia a cada pacote

Receptor descarta (natildeo entrega para a camada superior) pacotes duplicados

Emissor envia 1 pacote e entatildeo aguarda pela Resposta do receptor

stop and wait

Camada Transporte 3-32

rdt21 emissor trata ACKNAKs corrompidos

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

Wait for

ACK or

NAK 0 udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

Wait for

call 1 from

above

Wait for

ACK or

NAK 1

L L

Camada Transporte 3-33

rdt21 receptor trata ACKNAKs corrompidos

Wait for

0 from

below

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq0(rcvpkt)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

Wait for

1 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq0(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq1(rcvpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

Camada Transporte 3-34

rdt21 discussatildeo

Emissor

de seq adicionado a pkt

2 ‟s de seq (01) satildeo suficientes Por que

Deve verificar se ACKNAK recebido estaacute corrompido

2x mais estados state deve ldquorecordarrdquo

se pacote ldquoatualrdquo possui de seq 0 ou 1

Receptor

Deve verificar se pacote recebido eacute um duplicado estado indica se de

seq do pacote esperado eacute 0 ou 1

nota receptor natildeo pode saber se seu uacuteltimo ACKNAK foi recebido OK no emissor

Camada Transporte 3-35

rdt22 um protocolo sem NAKs

Igual ao rdt21 mas usando ACKs somente

Ao inveacutes de NAK receptor envia ACK do uacuteltimo pacote recebido corretamente (OK) Receptor deve incluir explicitamente o de seq do pacote

sendo confirmado

ACK duplicado no emissor resulta na mesma accedilatildeo como para o NAK retransmiccedilatildeo do pacote atual

Camada Transporte 3-36

rdt22 fragmentos do emissor e receptor

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

Wait for

ACK

0

Fragmento da FSM do emissor

Wait for

0 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK1 chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

(corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento da FSM Do receptor

Camada Transporte 3-37

rdt30 canais com erros e perdas

Nova hipoacutetese canal de base pode agora perder pacotes (dados ou ACKs) checksum de seq

ACKs retransmissotildees ajudaratildeo mas natildeo seratildeo suficientes

Abordagem emissor aguarda um tempo ldquorazoaacutevelrdquo a recepccedilatildeo de ACKs

retransmite se nenhum ACK eacute recebido neste tempo

se pkt (ou ACK) apenas atrasado (natildeo foi perdido)

retransmissatildeo causaraacute duplicaccedilatildeo mas uso de de seq tratam isso

receptor deve especificar de seq do pacote sendo confirmado

requer temporizador

Camada Transporte 3-38

Emissor rdt30

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

Wait

for

ACK0

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

Wait for

call 1 from

above

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt0) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt1)

stop_timer

stop_timer

udt_send(sndpkt)

start_timer

timeout

udt_send(sndpkt)

start_timer

timeout

rdt_rcv(rcvpkt)

Wait for

call 0from

above

Wait

for

ACK1

L

rdt_rcv(rcvpkt)

L

L

L

Camada Transporte 3-39

rdt30 em accedilatildeo

Camada Transporte 3-40

rdt30 em accedilatildeo

Camada Transporte 3-41

Desempenho do rdt30

rdt30 funciona mas desempenho eacute ruim examplo enlace de 1 Gbps 15 ms de atraso

de propagaccedilatildeo fim-a-fim pacote de 1KB

T transmit = 8kbpkt

109 bsec = 8 microsec

U sender utilizaccedilatildeo fraccedilatildeo do tempo em que o emissor estaacute ocupado enviando

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R =

L (tamanho do pacote bits) R (taxa de transmissatildeo bps)

=

Pacote de 1KB a cada 30 msec -gt 33kBsec de vazatildeo em um enlace de 1 Gbps

O protocolo de rede limita o uso de recursos fiacutesicos

= 0027

Camada Transporte 3-42

rdt30 funcionamento do stop-and-wait

Primeiro bit do pacote transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit do pkt transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega ACK

envidado

ACK chega envia proacuteximo

pacote t = RTT + L R

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R = = 0027

Camada Transporte 3-43

Protocolos com Pipeline

Pipelining emissor permite muacuteltiplos pacotes enviados e que ainda natildeo foram confirmados range do nuacutemero de sequumlecircncia deve ser aumentado

ldquobufferizaccedilatildeordquo no emissor eou receptor

2 formas geneacutericas de protocolos pipeline go-Back-N selective repeat (SR)

Camada Transporte 3-44

Pipelining aumento da utilizaccedilatildeo

Primeiro bit do pkt transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega envia ACK

ACK chega envia proacuteximo

pacote t = RTT + L R

Uacuteltimo bit do 2o pacote chega envia ACK

Uacuteltimo bit do 3o pacote chega envia

ACK

U sender

= 024

30008 = 00008

microseconds

3 L R

RTT + L R =

Utilizaccedilatildeo aumenta de um fator de 3 (neste

exemplo)

= 008

Camada Transporte 3-45

Go-Back-N Emissor de seq de k bits no cabeccedilalho do pacote

ldquojanelardquo de ateacute N consecutivos pacotes natildeo confirmados permitida

ACK(n) confirma todos os pacotes ateacute o n - ldquoACK cumulativordquo

Pode receber ACKs duplicados ACKs (veja receptor)

Temporizador para cada pacote enviado

timeout(n) retransmite pkt n e todos pacotes com s de seq maiores que estatildeo dentro da janela

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Camada Transporte 3-46

GBN FSM do emissor estendida

Wait start_timer

udt_send(sndpkt[base])

udt_send(sndpkt[base+1])

hellip

udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

if (nextseqnum lt base+N)

sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)

udt_send(sndpkt[nextseqnum])

if (base == nextseqnum)

start_timer

nextseqnum++

else

refuse_data(data)

base = getacknum(rcvpkt)+1

If (base == nextseqnum)

stop_timer

else

start_timer

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

base=1

nextseqnum=1

rdt_rcv(rcvpkt)

ampamp corrupt(rcvpkt)

L

Somente ACKs satildeo usados (sem NAKs)

Camada Transporte 3-47

GBN FSM do receptor estendida

ACK-only sempre envia ACK para pacote recebido ldquona ordemrdquo corretamente com de seq mais elevado Pode gerar ACKs duplicados Precisa recordar somente o de seq esperado

(expectedseqnum)

Pkt fora de ordem descarta (natildeo armazena) -gt receptor natildeo possui buffer Re-ACK pkt com o de seq mais elevado e em ordem

Wait

udt_send(sndpkt)

default

rdt_rcv(rcvpkt)

ampamp notcurrupt(rcvpkt)

ampamp hasseqnum(rcvpktexpectedseqnum)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(expectedseqnumACKchksum)

udt_send(sndpkt)

expectedseqnum++

expectedseqnum=1

sndpkt =

make_pkt(expectedseqnumACKchksum)

L

Camada Transporte 3-48

GBN em accedilatildeo

Tamanho da janela = 4

Camada Transporte 3-49

SR - Selective Repeat

Receptor confirma individualmente cada pkt recebido corretamente armazena pkts quando necessaacuterio para eventual envio

de pacotes ordenados agrave camada superior

Emissor reenvia somente pkts para os quais o ACK natildeo foi recebido Emissor possui temporizador para cada pacote natildeo

confirmado (unACKed pkt)

Janela do emissor N consecutivos s de seq

Novamente limita s de seq de enviados pkts natildeo confirmados (unACKed pkts)

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 32: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-32

rdt21 emissor trata ACKNAKs corrompidos

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

Wait for

ACK or

NAK 0 udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isNAK(rcvpkt) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt)

Wait for

call 1 from

above

Wait for

ACK or

NAK 1

L L

Camada Transporte 3-33

rdt21 receptor trata ACKNAKs corrompidos

Wait for

0 from

below

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq0(rcvpkt)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

Wait for

1 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq0(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq1(rcvpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

Camada Transporte 3-34

rdt21 discussatildeo

Emissor

de seq adicionado a pkt

2 ‟s de seq (01) satildeo suficientes Por que

Deve verificar se ACKNAK recebido estaacute corrompido

2x mais estados state deve ldquorecordarrdquo

se pacote ldquoatualrdquo possui de seq 0 ou 1

Receptor

Deve verificar se pacote recebido eacute um duplicado estado indica se de

seq do pacote esperado eacute 0 ou 1

nota receptor natildeo pode saber se seu uacuteltimo ACKNAK foi recebido OK no emissor

Camada Transporte 3-35

rdt22 um protocolo sem NAKs

Igual ao rdt21 mas usando ACKs somente

Ao inveacutes de NAK receptor envia ACK do uacuteltimo pacote recebido corretamente (OK) Receptor deve incluir explicitamente o de seq do pacote

sendo confirmado

ACK duplicado no emissor resulta na mesma accedilatildeo como para o NAK retransmiccedilatildeo do pacote atual

Camada Transporte 3-36

rdt22 fragmentos do emissor e receptor

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

Wait for

ACK

0

Fragmento da FSM do emissor

Wait for

0 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK1 chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

(corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento da FSM Do receptor

Camada Transporte 3-37

rdt30 canais com erros e perdas

Nova hipoacutetese canal de base pode agora perder pacotes (dados ou ACKs) checksum de seq

ACKs retransmissotildees ajudaratildeo mas natildeo seratildeo suficientes

Abordagem emissor aguarda um tempo ldquorazoaacutevelrdquo a recepccedilatildeo de ACKs

retransmite se nenhum ACK eacute recebido neste tempo

se pkt (ou ACK) apenas atrasado (natildeo foi perdido)

retransmissatildeo causaraacute duplicaccedilatildeo mas uso de de seq tratam isso

receptor deve especificar de seq do pacote sendo confirmado

requer temporizador

Camada Transporte 3-38

Emissor rdt30

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

Wait

for

ACK0

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

Wait for

call 1 from

above

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt0) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt1)

stop_timer

stop_timer

udt_send(sndpkt)

start_timer

timeout

udt_send(sndpkt)

start_timer

timeout

rdt_rcv(rcvpkt)

Wait for

call 0from

above

Wait

for

ACK1

L

rdt_rcv(rcvpkt)

L

L

L

Camada Transporte 3-39

rdt30 em accedilatildeo

Camada Transporte 3-40

rdt30 em accedilatildeo

Camada Transporte 3-41

Desempenho do rdt30

rdt30 funciona mas desempenho eacute ruim examplo enlace de 1 Gbps 15 ms de atraso

de propagaccedilatildeo fim-a-fim pacote de 1KB

T transmit = 8kbpkt

109 bsec = 8 microsec

U sender utilizaccedilatildeo fraccedilatildeo do tempo em que o emissor estaacute ocupado enviando

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R =

L (tamanho do pacote bits) R (taxa de transmissatildeo bps)

=

Pacote de 1KB a cada 30 msec -gt 33kBsec de vazatildeo em um enlace de 1 Gbps

O protocolo de rede limita o uso de recursos fiacutesicos

= 0027

Camada Transporte 3-42

rdt30 funcionamento do stop-and-wait

Primeiro bit do pacote transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit do pkt transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega ACK

envidado

ACK chega envia proacuteximo

pacote t = RTT + L R

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R = = 0027

Camada Transporte 3-43

Protocolos com Pipeline

Pipelining emissor permite muacuteltiplos pacotes enviados e que ainda natildeo foram confirmados range do nuacutemero de sequumlecircncia deve ser aumentado

ldquobufferizaccedilatildeordquo no emissor eou receptor

2 formas geneacutericas de protocolos pipeline go-Back-N selective repeat (SR)

Camada Transporte 3-44

Pipelining aumento da utilizaccedilatildeo

Primeiro bit do pkt transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega envia ACK

ACK chega envia proacuteximo

pacote t = RTT + L R

Uacuteltimo bit do 2o pacote chega envia ACK

Uacuteltimo bit do 3o pacote chega envia

ACK

U sender

= 024

30008 = 00008

microseconds

3 L R

RTT + L R =

Utilizaccedilatildeo aumenta de um fator de 3 (neste

exemplo)

= 008

Camada Transporte 3-45

Go-Back-N Emissor de seq de k bits no cabeccedilalho do pacote

ldquojanelardquo de ateacute N consecutivos pacotes natildeo confirmados permitida

ACK(n) confirma todos os pacotes ateacute o n - ldquoACK cumulativordquo

Pode receber ACKs duplicados ACKs (veja receptor)

Temporizador para cada pacote enviado

timeout(n) retransmite pkt n e todos pacotes com s de seq maiores que estatildeo dentro da janela

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Camada Transporte 3-46

GBN FSM do emissor estendida

Wait start_timer

udt_send(sndpkt[base])

udt_send(sndpkt[base+1])

hellip

udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

if (nextseqnum lt base+N)

sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)

udt_send(sndpkt[nextseqnum])

if (base == nextseqnum)

start_timer

nextseqnum++

else

refuse_data(data)

base = getacknum(rcvpkt)+1

If (base == nextseqnum)

stop_timer

else

start_timer

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

base=1

nextseqnum=1

rdt_rcv(rcvpkt)

ampamp corrupt(rcvpkt)

L

Somente ACKs satildeo usados (sem NAKs)

Camada Transporte 3-47

GBN FSM do receptor estendida

ACK-only sempre envia ACK para pacote recebido ldquona ordemrdquo corretamente com de seq mais elevado Pode gerar ACKs duplicados Precisa recordar somente o de seq esperado

(expectedseqnum)

Pkt fora de ordem descarta (natildeo armazena) -gt receptor natildeo possui buffer Re-ACK pkt com o de seq mais elevado e em ordem

Wait

udt_send(sndpkt)

default

rdt_rcv(rcvpkt)

ampamp notcurrupt(rcvpkt)

ampamp hasseqnum(rcvpktexpectedseqnum)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(expectedseqnumACKchksum)

udt_send(sndpkt)

expectedseqnum++

expectedseqnum=1

sndpkt =

make_pkt(expectedseqnumACKchksum)

L

Camada Transporte 3-48

GBN em accedilatildeo

Tamanho da janela = 4

Camada Transporte 3-49

SR - Selective Repeat

Receptor confirma individualmente cada pkt recebido corretamente armazena pkts quando necessaacuterio para eventual envio

de pacotes ordenados agrave camada superior

Emissor reenvia somente pkts para os quais o ACK natildeo foi recebido Emissor possui temporizador para cada pacote natildeo

confirmado (unACKed pkt)

Janela do emissor N consecutivos s de seq

Novamente limita s de seq de enviados pkts natildeo confirmados (unACKed pkts)

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 33: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-33

rdt21 receptor trata ACKNAKs corrompidos

Wait for

0 from

below

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq0(rcvpkt)

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

Wait for

1 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq0(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

not corrupt(rcvpkt) ampamp

has_seq1(rcvpkt)

rdt_rcv(rcvpkt) ampamp (corrupt(rcvpkt)

sndpkt = make_pkt(ACK chksum)

udt_send(sndpkt)

sndpkt = make_pkt(NAK chksum)

udt_send(sndpkt)

Camada Transporte 3-34

rdt21 discussatildeo

Emissor

de seq adicionado a pkt

2 ‟s de seq (01) satildeo suficientes Por que

Deve verificar se ACKNAK recebido estaacute corrompido

2x mais estados state deve ldquorecordarrdquo

se pacote ldquoatualrdquo possui de seq 0 ou 1

Receptor

Deve verificar se pacote recebido eacute um duplicado estado indica se de

seq do pacote esperado eacute 0 ou 1

nota receptor natildeo pode saber se seu uacuteltimo ACKNAK foi recebido OK no emissor

Camada Transporte 3-35

rdt22 um protocolo sem NAKs

Igual ao rdt21 mas usando ACKs somente

Ao inveacutes de NAK receptor envia ACK do uacuteltimo pacote recebido corretamente (OK) Receptor deve incluir explicitamente o de seq do pacote

sendo confirmado

ACK duplicado no emissor resulta na mesma accedilatildeo como para o NAK retransmiccedilatildeo do pacote atual

Camada Transporte 3-36

rdt22 fragmentos do emissor e receptor

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

Wait for

ACK

0

Fragmento da FSM do emissor

Wait for

0 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK1 chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

(corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento da FSM Do receptor

Camada Transporte 3-37

rdt30 canais com erros e perdas

Nova hipoacutetese canal de base pode agora perder pacotes (dados ou ACKs) checksum de seq

ACKs retransmissotildees ajudaratildeo mas natildeo seratildeo suficientes

Abordagem emissor aguarda um tempo ldquorazoaacutevelrdquo a recepccedilatildeo de ACKs

retransmite se nenhum ACK eacute recebido neste tempo

se pkt (ou ACK) apenas atrasado (natildeo foi perdido)

retransmissatildeo causaraacute duplicaccedilatildeo mas uso de de seq tratam isso

receptor deve especificar de seq do pacote sendo confirmado

requer temporizador

Camada Transporte 3-38

Emissor rdt30

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

Wait

for

ACK0

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

Wait for

call 1 from

above

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt0) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt1)

stop_timer

stop_timer

udt_send(sndpkt)

start_timer

timeout

udt_send(sndpkt)

start_timer

timeout

rdt_rcv(rcvpkt)

Wait for

call 0from

above

Wait

for

ACK1

L

rdt_rcv(rcvpkt)

L

L

L

Camada Transporte 3-39

rdt30 em accedilatildeo

Camada Transporte 3-40

rdt30 em accedilatildeo

Camada Transporte 3-41

Desempenho do rdt30

rdt30 funciona mas desempenho eacute ruim examplo enlace de 1 Gbps 15 ms de atraso

de propagaccedilatildeo fim-a-fim pacote de 1KB

T transmit = 8kbpkt

109 bsec = 8 microsec

U sender utilizaccedilatildeo fraccedilatildeo do tempo em que o emissor estaacute ocupado enviando

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R =

L (tamanho do pacote bits) R (taxa de transmissatildeo bps)

=

Pacote de 1KB a cada 30 msec -gt 33kBsec de vazatildeo em um enlace de 1 Gbps

O protocolo de rede limita o uso de recursos fiacutesicos

= 0027

Camada Transporte 3-42

rdt30 funcionamento do stop-and-wait

Primeiro bit do pacote transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit do pkt transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega ACK

envidado

ACK chega envia proacuteximo

pacote t = RTT + L R

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R = = 0027

Camada Transporte 3-43

Protocolos com Pipeline

Pipelining emissor permite muacuteltiplos pacotes enviados e que ainda natildeo foram confirmados range do nuacutemero de sequumlecircncia deve ser aumentado

ldquobufferizaccedilatildeordquo no emissor eou receptor

2 formas geneacutericas de protocolos pipeline go-Back-N selective repeat (SR)

Camada Transporte 3-44

Pipelining aumento da utilizaccedilatildeo

Primeiro bit do pkt transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega envia ACK

ACK chega envia proacuteximo

pacote t = RTT + L R

Uacuteltimo bit do 2o pacote chega envia ACK

Uacuteltimo bit do 3o pacote chega envia

ACK

U sender

= 024

30008 = 00008

microseconds

3 L R

RTT + L R =

Utilizaccedilatildeo aumenta de um fator de 3 (neste

exemplo)

= 008

Camada Transporte 3-45

Go-Back-N Emissor de seq de k bits no cabeccedilalho do pacote

ldquojanelardquo de ateacute N consecutivos pacotes natildeo confirmados permitida

ACK(n) confirma todos os pacotes ateacute o n - ldquoACK cumulativordquo

Pode receber ACKs duplicados ACKs (veja receptor)

Temporizador para cada pacote enviado

timeout(n) retransmite pkt n e todos pacotes com s de seq maiores que estatildeo dentro da janela

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Camada Transporte 3-46

GBN FSM do emissor estendida

Wait start_timer

udt_send(sndpkt[base])

udt_send(sndpkt[base+1])

hellip

udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

if (nextseqnum lt base+N)

sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)

udt_send(sndpkt[nextseqnum])

if (base == nextseqnum)

start_timer

nextseqnum++

else

refuse_data(data)

base = getacknum(rcvpkt)+1

If (base == nextseqnum)

stop_timer

else

start_timer

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

base=1

nextseqnum=1

rdt_rcv(rcvpkt)

ampamp corrupt(rcvpkt)

L

Somente ACKs satildeo usados (sem NAKs)

Camada Transporte 3-47

GBN FSM do receptor estendida

ACK-only sempre envia ACK para pacote recebido ldquona ordemrdquo corretamente com de seq mais elevado Pode gerar ACKs duplicados Precisa recordar somente o de seq esperado

(expectedseqnum)

Pkt fora de ordem descarta (natildeo armazena) -gt receptor natildeo possui buffer Re-ACK pkt com o de seq mais elevado e em ordem

Wait

udt_send(sndpkt)

default

rdt_rcv(rcvpkt)

ampamp notcurrupt(rcvpkt)

ampamp hasseqnum(rcvpktexpectedseqnum)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(expectedseqnumACKchksum)

udt_send(sndpkt)

expectedseqnum++

expectedseqnum=1

sndpkt =

make_pkt(expectedseqnumACKchksum)

L

Camada Transporte 3-48

GBN em accedilatildeo

Tamanho da janela = 4

Camada Transporte 3-49

SR - Selective Repeat

Receptor confirma individualmente cada pkt recebido corretamente armazena pkts quando necessaacuterio para eventual envio

de pacotes ordenados agrave camada superior

Emissor reenvia somente pkts para os quais o ACK natildeo foi recebido Emissor possui temporizador para cada pacote natildeo

confirmado (unACKed pkt)

Janela do emissor N consecutivos s de seq

Novamente limita s de seq de enviados pkts natildeo confirmados (unACKed pkts)

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 34: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-34

rdt21 discussatildeo

Emissor

de seq adicionado a pkt

2 ‟s de seq (01) satildeo suficientes Por que

Deve verificar se ACKNAK recebido estaacute corrompido

2x mais estados state deve ldquorecordarrdquo

se pacote ldquoatualrdquo possui de seq 0 ou 1

Receptor

Deve verificar se pacote recebido eacute um duplicado estado indica se de

seq do pacote esperado eacute 0 ou 1

nota receptor natildeo pode saber se seu uacuteltimo ACKNAK foi recebido OK no emissor

Camada Transporte 3-35

rdt22 um protocolo sem NAKs

Igual ao rdt21 mas usando ACKs somente

Ao inveacutes de NAK receptor envia ACK do uacuteltimo pacote recebido corretamente (OK) Receptor deve incluir explicitamente o de seq do pacote

sendo confirmado

ACK duplicado no emissor resulta na mesma accedilatildeo como para o NAK retransmiccedilatildeo do pacote atual

Camada Transporte 3-36

rdt22 fragmentos do emissor e receptor

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

Wait for

ACK

0

Fragmento da FSM do emissor

Wait for

0 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK1 chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

(corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento da FSM Do receptor

Camada Transporte 3-37

rdt30 canais com erros e perdas

Nova hipoacutetese canal de base pode agora perder pacotes (dados ou ACKs) checksum de seq

ACKs retransmissotildees ajudaratildeo mas natildeo seratildeo suficientes

Abordagem emissor aguarda um tempo ldquorazoaacutevelrdquo a recepccedilatildeo de ACKs

retransmite se nenhum ACK eacute recebido neste tempo

se pkt (ou ACK) apenas atrasado (natildeo foi perdido)

retransmissatildeo causaraacute duplicaccedilatildeo mas uso de de seq tratam isso

receptor deve especificar de seq do pacote sendo confirmado

requer temporizador

Camada Transporte 3-38

Emissor rdt30

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

Wait

for

ACK0

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

Wait for

call 1 from

above

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt0) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt1)

stop_timer

stop_timer

udt_send(sndpkt)

start_timer

timeout

udt_send(sndpkt)

start_timer

timeout

rdt_rcv(rcvpkt)

Wait for

call 0from

above

Wait

for

ACK1

L

rdt_rcv(rcvpkt)

L

L

L

Camada Transporte 3-39

rdt30 em accedilatildeo

Camada Transporte 3-40

rdt30 em accedilatildeo

Camada Transporte 3-41

Desempenho do rdt30

rdt30 funciona mas desempenho eacute ruim examplo enlace de 1 Gbps 15 ms de atraso

de propagaccedilatildeo fim-a-fim pacote de 1KB

T transmit = 8kbpkt

109 bsec = 8 microsec

U sender utilizaccedilatildeo fraccedilatildeo do tempo em que o emissor estaacute ocupado enviando

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R =

L (tamanho do pacote bits) R (taxa de transmissatildeo bps)

=

Pacote de 1KB a cada 30 msec -gt 33kBsec de vazatildeo em um enlace de 1 Gbps

O protocolo de rede limita o uso de recursos fiacutesicos

= 0027

Camada Transporte 3-42

rdt30 funcionamento do stop-and-wait

Primeiro bit do pacote transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit do pkt transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega ACK

envidado

ACK chega envia proacuteximo

pacote t = RTT + L R

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R = = 0027

Camada Transporte 3-43

Protocolos com Pipeline

Pipelining emissor permite muacuteltiplos pacotes enviados e que ainda natildeo foram confirmados range do nuacutemero de sequumlecircncia deve ser aumentado

ldquobufferizaccedilatildeordquo no emissor eou receptor

2 formas geneacutericas de protocolos pipeline go-Back-N selective repeat (SR)

Camada Transporte 3-44

Pipelining aumento da utilizaccedilatildeo

Primeiro bit do pkt transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega envia ACK

ACK chega envia proacuteximo

pacote t = RTT + L R

Uacuteltimo bit do 2o pacote chega envia ACK

Uacuteltimo bit do 3o pacote chega envia

ACK

U sender

= 024

30008 = 00008

microseconds

3 L R

RTT + L R =

Utilizaccedilatildeo aumenta de um fator de 3 (neste

exemplo)

= 008

Camada Transporte 3-45

Go-Back-N Emissor de seq de k bits no cabeccedilalho do pacote

ldquojanelardquo de ateacute N consecutivos pacotes natildeo confirmados permitida

ACK(n) confirma todos os pacotes ateacute o n - ldquoACK cumulativordquo

Pode receber ACKs duplicados ACKs (veja receptor)

Temporizador para cada pacote enviado

timeout(n) retransmite pkt n e todos pacotes com s de seq maiores que estatildeo dentro da janela

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Camada Transporte 3-46

GBN FSM do emissor estendida

Wait start_timer

udt_send(sndpkt[base])

udt_send(sndpkt[base+1])

hellip

udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

if (nextseqnum lt base+N)

sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)

udt_send(sndpkt[nextseqnum])

if (base == nextseqnum)

start_timer

nextseqnum++

else

refuse_data(data)

base = getacknum(rcvpkt)+1

If (base == nextseqnum)

stop_timer

else

start_timer

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

base=1

nextseqnum=1

rdt_rcv(rcvpkt)

ampamp corrupt(rcvpkt)

L

Somente ACKs satildeo usados (sem NAKs)

Camada Transporte 3-47

GBN FSM do receptor estendida

ACK-only sempre envia ACK para pacote recebido ldquona ordemrdquo corretamente com de seq mais elevado Pode gerar ACKs duplicados Precisa recordar somente o de seq esperado

(expectedseqnum)

Pkt fora de ordem descarta (natildeo armazena) -gt receptor natildeo possui buffer Re-ACK pkt com o de seq mais elevado e em ordem

Wait

udt_send(sndpkt)

default

rdt_rcv(rcvpkt)

ampamp notcurrupt(rcvpkt)

ampamp hasseqnum(rcvpktexpectedseqnum)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(expectedseqnumACKchksum)

udt_send(sndpkt)

expectedseqnum++

expectedseqnum=1

sndpkt =

make_pkt(expectedseqnumACKchksum)

L

Camada Transporte 3-48

GBN em accedilatildeo

Tamanho da janela = 4

Camada Transporte 3-49

SR - Selective Repeat

Receptor confirma individualmente cada pkt recebido corretamente armazena pkts quando necessaacuterio para eventual envio

de pacotes ordenados agrave camada superior

Emissor reenvia somente pkts para os quais o ACK natildeo foi recebido Emissor possui temporizador para cada pacote natildeo

confirmado (unACKed pkt)

Janela do emissor N consecutivos s de seq

Novamente limita s de seq de enviados pkts natildeo confirmados (unACKed pkts)

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 35: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-35

rdt22 um protocolo sem NAKs

Igual ao rdt21 mas usando ACKs somente

Ao inveacutes de NAK receptor envia ACK do uacuteltimo pacote recebido corretamente (OK) Receptor deve incluir explicitamente o de seq do pacote

sendo confirmado

ACK duplicado no emissor resulta na mesma accedilatildeo como para o NAK retransmiccedilatildeo do pacote atual

Camada Transporte 3-36

rdt22 fragmentos do emissor e receptor

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

Wait for

ACK

0

Fragmento da FSM do emissor

Wait for

0 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK1 chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

(corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento da FSM Do receptor

Camada Transporte 3-37

rdt30 canais com erros e perdas

Nova hipoacutetese canal de base pode agora perder pacotes (dados ou ACKs) checksum de seq

ACKs retransmissotildees ajudaratildeo mas natildeo seratildeo suficientes

Abordagem emissor aguarda um tempo ldquorazoaacutevelrdquo a recepccedilatildeo de ACKs

retransmite se nenhum ACK eacute recebido neste tempo

se pkt (ou ACK) apenas atrasado (natildeo foi perdido)

retransmissatildeo causaraacute duplicaccedilatildeo mas uso de de seq tratam isso

receptor deve especificar de seq do pacote sendo confirmado

requer temporizador

Camada Transporte 3-38

Emissor rdt30

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

Wait

for

ACK0

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

Wait for

call 1 from

above

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt0) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt1)

stop_timer

stop_timer

udt_send(sndpkt)

start_timer

timeout

udt_send(sndpkt)

start_timer

timeout

rdt_rcv(rcvpkt)

Wait for

call 0from

above

Wait

for

ACK1

L

rdt_rcv(rcvpkt)

L

L

L

Camada Transporte 3-39

rdt30 em accedilatildeo

Camada Transporte 3-40

rdt30 em accedilatildeo

Camada Transporte 3-41

Desempenho do rdt30

rdt30 funciona mas desempenho eacute ruim examplo enlace de 1 Gbps 15 ms de atraso

de propagaccedilatildeo fim-a-fim pacote de 1KB

T transmit = 8kbpkt

109 bsec = 8 microsec

U sender utilizaccedilatildeo fraccedilatildeo do tempo em que o emissor estaacute ocupado enviando

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R =

L (tamanho do pacote bits) R (taxa de transmissatildeo bps)

=

Pacote de 1KB a cada 30 msec -gt 33kBsec de vazatildeo em um enlace de 1 Gbps

O protocolo de rede limita o uso de recursos fiacutesicos

= 0027

Camada Transporte 3-42

rdt30 funcionamento do stop-and-wait

Primeiro bit do pacote transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit do pkt transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega ACK

envidado

ACK chega envia proacuteximo

pacote t = RTT + L R

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R = = 0027

Camada Transporte 3-43

Protocolos com Pipeline

Pipelining emissor permite muacuteltiplos pacotes enviados e que ainda natildeo foram confirmados range do nuacutemero de sequumlecircncia deve ser aumentado

ldquobufferizaccedilatildeordquo no emissor eou receptor

2 formas geneacutericas de protocolos pipeline go-Back-N selective repeat (SR)

Camada Transporte 3-44

Pipelining aumento da utilizaccedilatildeo

Primeiro bit do pkt transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega envia ACK

ACK chega envia proacuteximo

pacote t = RTT + L R

Uacuteltimo bit do 2o pacote chega envia ACK

Uacuteltimo bit do 3o pacote chega envia

ACK

U sender

= 024

30008 = 00008

microseconds

3 L R

RTT + L R =

Utilizaccedilatildeo aumenta de um fator de 3 (neste

exemplo)

= 008

Camada Transporte 3-45

Go-Back-N Emissor de seq de k bits no cabeccedilalho do pacote

ldquojanelardquo de ateacute N consecutivos pacotes natildeo confirmados permitida

ACK(n) confirma todos os pacotes ateacute o n - ldquoACK cumulativordquo

Pode receber ACKs duplicados ACKs (veja receptor)

Temporizador para cada pacote enviado

timeout(n) retransmite pkt n e todos pacotes com s de seq maiores que estatildeo dentro da janela

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Camada Transporte 3-46

GBN FSM do emissor estendida

Wait start_timer

udt_send(sndpkt[base])

udt_send(sndpkt[base+1])

hellip

udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

if (nextseqnum lt base+N)

sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)

udt_send(sndpkt[nextseqnum])

if (base == nextseqnum)

start_timer

nextseqnum++

else

refuse_data(data)

base = getacknum(rcvpkt)+1

If (base == nextseqnum)

stop_timer

else

start_timer

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

base=1

nextseqnum=1

rdt_rcv(rcvpkt)

ampamp corrupt(rcvpkt)

L

Somente ACKs satildeo usados (sem NAKs)

Camada Transporte 3-47

GBN FSM do receptor estendida

ACK-only sempre envia ACK para pacote recebido ldquona ordemrdquo corretamente com de seq mais elevado Pode gerar ACKs duplicados Precisa recordar somente o de seq esperado

(expectedseqnum)

Pkt fora de ordem descarta (natildeo armazena) -gt receptor natildeo possui buffer Re-ACK pkt com o de seq mais elevado e em ordem

Wait

udt_send(sndpkt)

default

rdt_rcv(rcvpkt)

ampamp notcurrupt(rcvpkt)

ampamp hasseqnum(rcvpktexpectedseqnum)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(expectedseqnumACKchksum)

udt_send(sndpkt)

expectedseqnum++

expectedseqnum=1

sndpkt =

make_pkt(expectedseqnumACKchksum)

L

Camada Transporte 3-48

GBN em accedilatildeo

Tamanho da janela = 4

Camada Transporte 3-49

SR - Selective Repeat

Receptor confirma individualmente cada pkt recebido corretamente armazena pkts quando necessaacuterio para eventual envio

de pacotes ordenados agrave camada superior

Emissor reenvia somente pkts para os quais o ACK natildeo foi recebido Emissor possui temporizador para cada pacote natildeo

confirmado (unACKed pkt)

Janela do emissor N consecutivos s de seq

Novamente limita s de seq de enviados pkts natildeo confirmados (unACKed pkts)

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 36: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-36

rdt22 fragmentos do emissor e receptor

Wait for

call 0 from

above

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

rdt_send(data)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

Wait for

ACK

0

Fragmento da FSM do emissor

Wait for

0 from

below

rdt_rcv(rcvpkt) ampamp notcorrupt(rcvpkt)

ampamp has_seq1(rcvpkt)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(ACK1 chksum)

udt_send(sndpkt)

rdt_rcv(rcvpkt) ampamp

(corrupt(rcvpkt) ||

has_seq1(rcvpkt))

udt_send(sndpkt)

fragmento da FSM Do receptor

Camada Transporte 3-37

rdt30 canais com erros e perdas

Nova hipoacutetese canal de base pode agora perder pacotes (dados ou ACKs) checksum de seq

ACKs retransmissotildees ajudaratildeo mas natildeo seratildeo suficientes

Abordagem emissor aguarda um tempo ldquorazoaacutevelrdquo a recepccedilatildeo de ACKs

retransmite se nenhum ACK eacute recebido neste tempo

se pkt (ou ACK) apenas atrasado (natildeo foi perdido)

retransmissatildeo causaraacute duplicaccedilatildeo mas uso de de seq tratam isso

receptor deve especificar de seq do pacote sendo confirmado

requer temporizador

Camada Transporte 3-38

Emissor rdt30

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

Wait

for

ACK0

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

Wait for

call 1 from

above

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt0) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt1)

stop_timer

stop_timer

udt_send(sndpkt)

start_timer

timeout

udt_send(sndpkt)

start_timer

timeout

rdt_rcv(rcvpkt)

Wait for

call 0from

above

Wait

for

ACK1

L

rdt_rcv(rcvpkt)

L

L

L

Camada Transporte 3-39

rdt30 em accedilatildeo

Camada Transporte 3-40

rdt30 em accedilatildeo

Camada Transporte 3-41

Desempenho do rdt30

rdt30 funciona mas desempenho eacute ruim examplo enlace de 1 Gbps 15 ms de atraso

de propagaccedilatildeo fim-a-fim pacote de 1KB

T transmit = 8kbpkt

109 bsec = 8 microsec

U sender utilizaccedilatildeo fraccedilatildeo do tempo em que o emissor estaacute ocupado enviando

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R =

L (tamanho do pacote bits) R (taxa de transmissatildeo bps)

=

Pacote de 1KB a cada 30 msec -gt 33kBsec de vazatildeo em um enlace de 1 Gbps

O protocolo de rede limita o uso de recursos fiacutesicos

= 0027

Camada Transporte 3-42

rdt30 funcionamento do stop-and-wait

Primeiro bit do pacote transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit do pkt transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega ACK

envidado

ACK chega envia proacuteximo

pacote t = RTT + L R

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R = = 0027

Camada Transporte 3-43

Protocolos com Pipeline

Pipelining emissor permite muacuteltiplos pacotes enviados e que ainda natildeo foram confirmados range do nuacutemero de sequumlecircncia deve ser aumentado

ldquobufferizaccedilatildeordquo no emissor eou receptor

2 formas geneacutericas de protocolos pipeline go-Back-N selective repeat (SR)

Camada Transporte 3-44

Pipelining aumento da utilizaccedilatildeo

Primeiro bit do pkt transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega envia ACK

ACK chega envia proacuteximo

pacote t = RTT + L R

Uacuteltimo bit do 2o pacote chega envia ACK

Uacuteltimo bit do 3o pacote chega envia

ACK

U sender

= 024

30008 = 00008

microseconds

3 L R

RTT + L R =

Utilizaccedilatildeo aumenta de um fator de 3 (neste

exemplo)

= 008

Camada Transporte 3-45

Go-Back-N Emissor de seq de k bits no cabeccedilalho do pacote

ldquojanelardquo de ateacute N consecutivos pacotes natildeo confirmados permitida

ACK(n) confirma todos os pacotes ateacute o n - ldquoACK cumulativordquo

Pode receber ACKs duplicados ACKs (veja receptor)

Temporizador para cada pacote enviado

timeout(n) retransmite pkt n e todos pacotes com s de seq maiores que estatildeo dentro da janela

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Camada Transporte 3-46

GBN FSM do emissor estendida

Wait start_timer

udt_send(sndpkt[base])

udt_send(sndpkt[base+1])

hellip

udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

if (nextseqnum lt base+N)

sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)

udt_send(sndpkt[nextseqnum])

if (base == nextseqnum)

start_timer

nextseqnum++

else

refuse_data(data)

base = getacknum(rcvpkt)+1

If (base == nextseqnum)

stop_timer

else

start_timer

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

base=1

nextseqnum=1

rdt_rcv(rcvpkt)

ampamp corrupt(rcvpkt)

L

Somente ACKs satildeo usados (sem NAKs)

Camada Transporte 3-47

GBN FSM do receptor estendida

ACK-only sempre envia ACK para pacote recebido ldquona ordemrdquo corretamente com de seq mais elevado Pode gerar ACKs duplicados Precisa recordar somente o de seq esperado

(expectedseqnum)

Pkt fora de ordem descarta (natildeo armazena) -gt receptor natildeo possui buffer Re-ACK pkt com o de seq mais elevado e em ordem

Wait

udt_send(sndpkt)

default

rdt_rcv(rcvpkt)

ampamp notcurrupt(rcvpkt)

ampamp hasseqnum(rcvpktexpectedseqnum)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(expectedseqnumACKchksum)

udt_send(sndpkt)

expectedseqnum++

expectedseqnum=1

sndpkt =

make_pkt(expectedseqnumACKchksum)

L

Camada Transporte 3-48

GBN em accedilatildeo

Tamanho da janela = 4

Camada Transporte 3-49

SR - Selective Repeat

Receptor confirma individualmente cada pkt recebido corretamente armazena pkts quando necessaacuterio para eventual envio

de pacotes ordenados agrave camada superior

Emissor reenvia somente pkts para os quais o ACK natildeo foi recebido Emissor possui temporizador para cada pacote natildeo

confirmado (unACKed pkt)

Janela do emissor N consecutivos s de seq

Novamente limita s de seq de enviados pkts natildeo confirmados (unACKed pkts)

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 37: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-37

rdt30 canais com erros e perdas

Nova hipoacutetese canal de base pode agora perder pacotes (dados ou ACKs) checksum de seq

ACKs retransmissotildees ajudaratildeo mas natildeo seratildeo suficientes

Abordagem emissor aguarda um tempo ldquorazoaacutevelrdquo a recepccedilatildeo de ACKs

retransmite se nenhum ACK eacute recebido neste tempo

se pkt (ou ACK) apenas atrasado (natildeo foi perdido)

retransmissatildeo causaraacute duplicaccedilatildeo mas uso de de seq tratam isso

receptor deve especificar de seq do pacote sendo confirmado

requer temporizador

Camada Transporte 3-38

Emissor rdt30

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

Wait

for

ACK0

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

Wait for

call 1 from

above

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt0) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt1)

stop_timer

stop_timer

udt_send(sndpkt)

start_timer

timeout

udt_send(sndpkt)

start_timer

timeout

rdt_rcv(rcvpkt)

Wait for

call 0from

above

Wait

for

ACK1

L

rdt_rcv(rcvpkt)

L

L

L

Camada Transporte 3-39

rdt30 em accedilatildeo

Camada Transporte 3-40

rdt30 em accedilatildeo

Camada Transporte 3-41

Desempenho do rdt30

rdt30 funciona mas desempenho eacute ruim examplo enlace de 1 Gbps 15 ms de atraso

de propagaccedilatildeo fim-a-fim pacote de 1KB

T transmit = 8kbpkt

109 bsec = 8 microsec

U sender utilizaccedilatildeo fraccedilatildeo do tempo em que o emissor estaacute ocupado enviando

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R =

L (tamanho do pacote bits) R (taxa de transmissatildeo bps)

=

Pacote de 1KB a cada 30 msec -gt 33kBsec de vazatildeo em um enlace de 1 Gbps

O protocolo de rede limita o uso de recursos fiacutesicos

= 0027

Camada Transporte 3-42

rdt30 funcionamento do stop-and-wait

Primeiro bit do pacote transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit do pkt transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega ACK

envidado

ACK chega envia proacuteximo

pacote t = RTT + L R

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R = = 0027

Camada Transporte 3-43

Protocolos com Pipeline

Pipelining emissor permite muacuteltiplos pacotes enviados e que ainda natildeo foram confirmados range do nuacutemero de sequumlecircncia deve ser aumentado

ldquobufferizaccedilatildeordquo no emissor eou receptor

2 formas geneacutericas de protocolos pipeline go-Back-N selective repeat (SR)

Camada Transporte 3-44

Pipelining aumento da utilizaccedilatildeo

Primeiro bit do pkt transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega envia ACK

ACK chega envia proacuteximo

pacote t = RTT + L R

Uacuteltimo bit do 2o pacote chega envia ACK

Uacuteltimo bit do 3o pacote chega envia

ACK

U sender

= 024

30008 = 00008

microseconds

3 L R

RTT + L R =

Utilizaccedilatildeo aumenta de um fator de 3 (neste

exemplo)

= 008

Camada Transporte 3-45

Go-Back-N Emissor de seq de k bits no cabeccedilalho do pacote

ldquojanelardquo de ateacute N consecutivos pacotes natildeo confirmados permitida

ACK(n) confirma todos os pacotes ateacute o n - ldquoACK cumulativordquo

Pode receber ACKs duplicados ACKs (veja receptor)

Temporizador para cada pacote enviado

timeout(n) retransmite pkt n e todos pacotes com s de seq maiores que estatildeo dentro da janela

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Camada Transporte 3-46

GBN FSM do emissor estendida

Wait start_timer

udt_send(sndpkt[base])

udt_send(sndpkt[base+1])

hellip

udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

if (nextseqnum lt base+N)

sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)

udt_send(sndpkt[nextseqnum])

if (base == nextseqnum)

start_timer

nextseqnum++

else

refuse_data(data)

base = getacknum(rcvpkt)+1

If (base == nextseqnum)

stop_timer

else

start_timer

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

base=1

nextseqnum=1

rdt_rcv(rcvpkt)

ampamp corrupt(rcvpkt)

L

Somente ACKs satildeo usados (sem NAKs)

Camada Transporte 3-47

GBN FSM do receptor estendida

ACK-only sempre envia ACK para pacote recebido ldquona ordemrdquo corretamente com de seq mais elevado Pode gerar ACKs duplicados Precisa recordar somente o de seq esperado

(expectedseqnum)

Pkt fora de ordem descarta (natildeo armazena) -gt receptor natildeo possui buffer Re-ACK pkt com o de seq mais elevado e em ordem

Wait

udt_send(sndpkt)

default

rdt_rcv(rcvpkt)

ampamp notcurrupt(rcvpkt)

ampamp hasseqnum(rcvpktexpectedseqnum)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(expectedseqnumACKchksum)

udt_send(sndpkt)

expectedseqnum++

expectedseqnum=1

sndpkt =

make_pkt(expectedseqnumACKchksum)

L

Camada Transporte 3-48

GBN em accedilatildeo

Tamanho da janela = 4

Camada Transporte 3-49

SR - Selective Repeat

Receptor confirma individualmente cada pkt recebido corretamente armazena pkts quando necessaacuterio para eventual envio

de pacotes ordenados agrave camada superior

Emissor reenvia somente pkts para os quais o ACK natildeo foi recebido Emissor possui temporizador para cada pacote natildeo

confirmado (unACKed pkt)

Janela do emissor N consecutivos s de seq

Novamente limita s de seq de enviados pkts natildeo confirmados (unACKed pkts)

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 38: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-38

Emissor rdt30

sndpkt = make_pkt(0 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

Wait

for

ACK0

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt1) )

Wait for

call 1 from

above

sndpkt = make_pkt(1 data checksum)

udt_send(sndpkt)

start_timer

rdt_send(data)

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt0)

rdt_rcv(rcvpkt) ampamp

( corrupt(rcvpkt) ||

isACK(rcvpkt0) )

rdt_rcv(rcvpkt)

ampamp notcorrupt(rcvpkt)

ampamp isACK(rcvpkt1)

stop_timer

stop_timer

udt_send(sndpkt)

start_timer

timeout

udt_send(sndpkt)

start_timer

timeout

rdt_rcv(rcvpkt)

Wait for

call 0from

above

Wait

for

ACK1

L

rdt_rcv(rcvpkt)

L

L

L

Camada Transporte 3-39

rdt30 em accedilatildeo

Camada Transporte 3-40

rdt30 em accedilatildeo

Camada Transporte 3-41

Desempenho do rdt30

rdt30 funciona mas desempenho eacute ruim examplo enlace de 1 Gbps 15 ms de atraso

de propagaccedilatildeo fim-a-fim pacote de 1KB

T transmit = 8kbpkt

109 bsec = 8 microsec

U sender utilizaccedilatildeo fraccedilatildeo do tempo em que o emissor estaacute ocupado enviando

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R =

L (tamanho do pacote bits) R (taxa de transmissatildeo bps)

=

Pacote de 1KB a cada 30 msec -gt 33kBsec de vazatildeo em um enlace de 1 Gbps

O protocolo de rede limita o uso de recursos fiacutesicos

= 0027

Camada Transporte 3-42

rdt30 funcionamento do stop-and-wait

Primeiro bit do pacote transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit do pkt transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega ACK

envidado

ACK chega envia proacuteximo

pacote t = RTT + L R

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R = = 0027

Camada Transporte 3-43

Protocolos com Pipeline

Pipelining emissor permite muacuteltiplos pacotes enviados e que ainda natildeo foram confirmados range do nuacutemero de sequumlecircncia deve ser aumentado

ldquobufferizaccedilatildeordquo no emissor eou receptor

2 formas geneacutericas de protocolos pipeline go-Back-N selective repeat (SR)

Camada Transporte 3-44

Pipelining aumento da utilizaccedilatildeo

Primeiro bit do pkt transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega envia ACK

ACK chega envia proacuteximo

pacote t = RTT + L R

Uacuteltimo bit do 2o pacote chega envia ACK

Uacuteltimo bit do 3o pacote chega envia

ACK

U sender

= 024

30008 = 00008

microseconds

3 L R

RTT + L R =

Utilizaccedilatildeo aumenta de um fator de 3 (neste

exemplo)

= 008

Camada Transporte 3-45

Go-Back-N Emissor de seq de k bits no cabeccedilalho do pacote

ldquojanelardquo de ateacute N consecutivos pacotes natildeo confirmados permitida

ACK(n) confirma todos os pacotes ateacute o n - ldquoACK cumulativordquo

Pode receber ACKs duplicados ACKs (veja receptor)

Temporizador para cada pacote enviado

timeout(n) retransmite pkt n e todos pacotes com s de seq maiores que estatildeo dentro da janela

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Camada Transporte 3-46

GBN FSM do emissor estendida

Wait start_timer

udt_send(sndpkt[base])

udt_send(sndpkt[base+1])

hellip

udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

if (nextseqnum lt base+N)

sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)

udt_send(sndpkt[nextseqnum])

if (base == nextseqnum)

start_timer

nextseqnum++

else

refuse_data(data)

base = getacknum(rcvpkt)+1

If (base == nextseqnum)

stop_timer

else

start_timer

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

base=1

nextseqnum=1

rdt_rcv(rcvpkt)

ampamp corrupt(rcvpkt)

L

Somente ACKs satildeo usados (sem NAKs)

Camada Transporte 3-47

GBN FSM do receptor estendida

ACK-only sempre envia ACK para pacote recebido ldquona ordemrdquo corretamente com de seq mais elevado Pode gerar ACKs duplicados Precisa recordar somente o de seq esperado

(expectedseqnum)

Pkt fora de ordem descarta (natildeo armazena) -gt receptor natildeo possui buffer Re-ACK pkt com o de seq mais elevado e em ordem

Wait

udt_send(sndpkt)

default

rdt_rcv(rcvpkt)

ampamp notcurrupt(rcvpkt)

ampamp hasseqnum(rcvpktexpectedseqnum)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(expectedseqnumACKchksum)

udt_send(sndpkt)

expectedseqnum++

expectedseqnum=1

sndpkt =

make_pkt(expectedseqnumACKchksum)

L

Camada Transporte 3-48

GBN em accedilatildeo

Tamanho da janela = 4

Camada Transporte 3-49

SR - Selective Repeat

Receptor confirma individualmente cada pkt recebido corretamente armazena pkts quando necessaacuterio para eventual envio

de pacotes ordenados agrave camada superior

Emissor reenvia somente pkts para os quais o ACK natildeo foi recebido Emissor possui temporizador para cada pacote natildeo

confirmado (unACKed pkt)

Janela do emissor N consecutivos s de seq

Novamente limita s de seq de enviados pkts natildeo confirmados (unACKed pkts)

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 39: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-39

rdt30 em accedilatildeo

Camada Transporte 3-40

rdt30 em accedilatildeo

Camada Transporte 3-41

Desempenho do rdt30

rdt30 funciona mas desempenho eacute ruim examplo enlace de 1 Gbps 15 ms de atraso

de propagaccedilatildeo fim-a-fim pacote de 1KB

T transmit = 8kbpkt

109 bsec = 8 microsec

U sender utilizaccedilatildeo fraccedilatildeo do tempo em que o emissor estaacute ocupado enviando

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R =

L (tamanho do pacote bits) R (taxa de transmissatildeo bps)

=

Pacote de 1KB a cada 30 msec -gt 33kBsec de vazatildeo em um enlace de 1 Gbps

O protocolo de rede limita o uso de recursos fiacutesicos

= 0027

Camada Transporte 3-42

rdt30 funcionamento do stop-and-wait

Primeiro bit do pacote transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit do pkt transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega ACK

envidado

ACK chega envia proacuteximo

pacote t = RTT + L R

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R = = 0027

Camada Transporte 3-43

Protocolos com Pipeline

Pipelining emissor permite muacuteltiplos pacotes enviados e que ainda natildeo foram confirmados range do nuacutemero de sequumlecircncia deve ser aumentado

ldquobufferizaccedilatildeordquo no emissor eou receptor

2 formas geneacutericas de protocolos pipeline go-Back-N selective repeat (SR)

Camada Transporte 3-44

Pipelining aumento da utilizaccedilatildeo

Primeiro bit do pkt transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega envia ACK

ACK chega envia proacuteximo

pacote t = RTT + L R

Uacuteltimo bit do 2o pacote chega envia ACK

Uacuteltimo bit do 3o pacote chega envia

ACK

U sender

= 024

30008 = 00008

microseconds

3 L R

RTT + L R =

Utilizaccedilatildeo aumenta de um fator de 3 (neste

exemplo)

= 008

Camada Transporte 3-45

Go-Back-N Emissor de seq de k bits no cabeccedilalho do pacote

ldquojanelardquo de ateacute N consecutivos pacotes natildeo confirmados permitida

ACK(n) confirma todos os pacotes ateacute o n - ldquoACK cumulativordquo

Pode receber ACKs duplicados ACKs (veja receptor)

Temporizador para cada pacote enviado

timeout(n) retransmite pkt n e todos pacotes com s de seq maiores que estatildeo dentro da janela

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Camada Transporte 3-46

GBN FSM do emissor estendida

Wait start_timer

udt_send(sndpkt[base])

udt_send(sndpkt[base+1])

hellip

udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

if (nextseqnum lt base+N)

sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)

udt_send(sndpkt[nextseqnum])

if (base == nextseqnum)

start_timer

nextseqnum++

else

refuse_data(data)

base = getacknum(rcvpkt)+1

If (base == nextseqnum)

stop_timer

else

start_timer

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

base=1

nextseqnum=1

rdt_rcv(rcvpkt)

ampamp corrupt(rcvpkt)

L

Somente ACKs satildeo usados (sem NAKs)

Camada Transporte 3-47

GBN FSM do receptor estendida

ACK-only sempre envia ACK para pacote recebido ldquona ordemrdquo corretamente com de seq mais elevado Pode gerar ACKs duplicados Precisa recordar somente o de seq esperado

(expectedseqnum)

Pkt fora de ordem descarta (natildeo armazena) -gt receptor natildeo possui buffer Re-ACK pkt com o de seq mais elevado e em ordem

Wait

udt_send(sndpkt)

default

rdt_rcv(rcvpkt)

ampamp notcurrupt(rcvpkt)

ampamp hasseqnum(rcvpktexpectedseqnum)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(expectedseqnumACKchksum)

udt_send(sndpkt)

expectedseqnum++

expectedseqnum=1

sndpkt =

make_pkt(expectedseqnumACKchksum)

L

Camada Transporte 3-48

GBN em accedilatildeo

Tamanho da janela = 4

Camada Transporte 3-49

SR - Selective Repeat

Receptor confirma individualmente cada pkt recebido corretamente armazena pkts quando necessaacuterio para eventual envio

de pacotes ordenados agrave camada superior

Emissor reenvia somente pkts para os quais o ACK natildeo foi recebido Emissor possui temporizador para cada pacote natildeo

confirmado (unACKed pkt)

Janela do emissor N consecutivos s de seq

Novamente limita s de seq de enviados pkts natildeo confirmados (unACKed pkts)

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 40: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-40

rdt30 em accedilatildeo

Camada Transporte 3-41

Desempenho do rdt30

rdt30 funciona mas desempenho eacute ruim examplo enlace de 1 Gbps 15 ms de atraso

de propagaccedilatildeo fim-a-fim pacote de 1KB

T transmit = 8kbpkt

109 bsec = 8 microsec

U sender utilizaccedilatildeo fraccedilatildeo do tempo em que o emissor estaacute ocupado enviando

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R =

L (tamanho do pacote bits) R (taxa de transmissatildeo bps)

=

Pacote de 1KB a cada 30 msec -gt 33kBsec de vazatildeo em um enlace de 1 Gbps

O protocolo de rede limita o uso de recursos fiacutesicos

= 0027

Camada Transporte 3-42

rdt30 funcionamento do stop-and-wait

Primeiro bit do pacote transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit do pkt transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega ACK

envidado

ACK chega envia proacuteximo

pacote t = RTT + L R

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R = = 0027

Camada Transporte 3-43

Protocolos com Pipeline

Pipelining emissor permite muacuteltiplos pacotes enviados e que ainda natildeo foram confirmados range do nuacutemero de sequumlecircncia deve ser aumentado

ldquobufferizaccedilatildeordquo no emissor eou receptor

2 formas geneacutericas de protocolos pipeline go-Back-N selective repeat (SR)

Camada Transporte 3-44

Pipelining aumento da utilizaccedilatildeo

Primeiro bit do pkt transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega envia ACK

ACK chega envia proacuteximo

pacote t = RTT + L R

Uacuteltimo bit do 2o pacote chega envia ACK

Uacuteltimo bit do 3o pacote chega envia

ACK

U sender

= 024

30008 = 00008

microseconds

3 L R

RTT + L R =

Utilizaccedilatildeo aumenta de um fator de 3 (neste

exemplo)

= 008

Camada Transporte 3-45

Go-Back-N Emissor de seq de k bits no cabeccedilalho do pacote

ldquojanelardquo de ateacute N consecutivos pacotes natildeo confirmados permitida

ACK(n) confirma todos os pacotes ateacute o n - ldquoACK cumulativordquo

Pode receber ACKs duplicados ACKs (veja receptor)

Temporizador para cada pacote enviado

timeout(n) retransmite pkt n e todos pacotes com s de seq maiores que estatildeo dentro da janela

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Camada Transporte 3-46

GBN FSM do emissor estendida

Wait start_timer

udt_send(sndpkt[base])

udt_send(sndpkt[base+1])

hellip

udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

if (nextseqnum lt base+N)

sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)

udt_send(sndpkt[nextseqnum])

if (base == nextseqnum)

start_timer

nextseqnum++

else

refuse_data(data)

base = getacknum(rcvpkt)+1

If (base == nextseqnum)

stop_timer

else

start_timer

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

base=1

nextseqnum=1

rdt_rcv(rcvpkt)

ampamp corrupt(rcvpkt)

L

Somente ACKs satildeo usados (sem NAKs)

Camada Transporte 3-47

GBN FSM do receptor estendida

ACK-only sempre envia ACK para pacote recebido ldquona ordemrdquo corretamente com de seq mais elevado Pode gerar ACKs duplicados Precisa recordar somente o de seq esperado

(expectedseqnum)

Pkt fora de ordem descarta (natildeo armazena) -gt receptor natildeo possui buffer Re-ACK pkt com o de seq mais elevado e em ordem

Wait

udt_send(sndpkt)

default

rdt_rcv(rcvpkt)

ampamp notcurrupt(rcvpkt)

ampamp hasseqnum(rcvpktexpectedseqnum)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(expectedseqnumACKchksum)

udt_send(sndpkt)

expectedseqnum++

expectedseqnum=1

sndpkt =

make_pkt(expectedseqnumACKchksum)

L

Camada Transporte 3-48

GBN em accedilatildeo

Tamanho da janela = 4

Camada Transporte 3-49

SR - Selective Repeat

Receptor confirma individualmente cada pkt recebido corretamente armazena pkts quando necessaacuterio para eventual envio

de pacotes ordenados agrave camada superior

Emissor reenvia somente pkts para os quais o ACK natildeo foi recebido Emissor possui temporizador para cada pacote natildeo

confirmado (unACKed pkt)

Janela do emissor N consecutivos s de seq

Novamente limita s de seq de enviados pkts natildeo confirmados (unACKed pkts)

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 41: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-41

Desempenho do rdt30

rdt30 funciona mas desempenho eacute ruim examplo enlace de 1 Gbps 15 ms de atraso

de propagaccedilatildeo fim-a-fim pacote de 1KB

T transmit = 8kbpkt

109 bsec = 8 microsec

U sender utilizaccedilatildeo fraccedilatildeo do tempo em que o emissor estaacute ocupado enviando

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R =

L (tamanho do pacote bits) R (taxa de transmissatildeo bps)

=

Pacote de 1KB a cada 30 msec -gt 33kBsec de vazatildeo em um enlace de 1 Gbps

O protocolo de rede limita o uso de recursos fiacutesicos

= 0027

Camada Transporte 3-42

rdt30 funcionamento do stop-and-wait

Primeiro bit do pacote transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit do pkt transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega ACK

envidado

ACK chega envia proacuteximo

pacote t = RTT + L R

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R = = 0027

Camada Transporte 3-43

Protocolos com Pipeline

Pipelining emissor permite muacuteltiplos pacotes enviados e que ainda natildeo foram confirmados range do nuacutemero de sequumlecircncia deve ser aumentado

ldquobufferizaccedilatildeordquo no emissor eou receptor

2 formas geneacutericas de protocolos pipeline go-Back-N selective repeat (SR)

Camada Transporte 3-44

Pipelining aumento da utilizaccedilatildeo

Primeiro bit do pkt transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega envia ACK

ACK chega envia proacuteximo

pacote t = RTT + L R

Uacuteltimo bit do 2o pacote chega envia ACK

Uacuteltimo bit do 3o pacote chega envia

ACK

U sender

= 024

30008 = 00008

microseconds

3 L R

RTT + L R =

Utilizaccedilatildeo aumenta de um fator de 3 (neste

exemplo)

= 008

Camada Transporte 3-45

Go-Back-N Emissor de seq de k bits no cabeccedilalho do pacote

ldquojanelardquo de ateacute N consecutivos pacotes natildeo confirmados permitida

ACK(n) confirma todos os pacotes ateacute o n - ldquoACK cumulativordquo

Pode receber ACKs duplicados ACKs (veja receptor)

Temporizador para cada pacote enviado

timeout(n) retransmite pkt n e todos pacotes com s de seq maiores que estatildeo dentro da janela

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Camada Transporte 3-46

GBN FSM do emissor estendida

Wait start_timer

udt_send(sndpkt[base])

udt_send(sndpkt[base+1])

hellip

udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

if (nextseqnum lt base+N)

sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)

udt_send(sndpkt[nextseqnum])

if (base == nextseqnum)

start_timer

nextseqnum++

else

refuse_data(data)

base = getacknum(rcvpkt)+1

If (base == nextseqnum)

stop_timer

else

start_timer

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

base=1

nextseqnum=1

rdt_rcv(rcvpkt)

ampamp corrupt(rcvpkt)

L

Somente ACKs satildeo usados (sem NAKs)

Camada Transporte 3-47

GBN FSM do receptor estendida

ACK-only sempre envia ACK para pacote recebido ldquona ordemrdquo corretamente com de seq mais elevado Pode gerar ACKs duplicados Precisa recordar somente o de seq esperado

(expectedseqnum)

Pkt fora de ordem descarta (natildeo armazena) -gt receptor natildeo possui buffer Re-ACK pkt com o de seq mais elevado e em ordem

Wait

udt_send(sndpkt)

default

rdt_rcv(rcvpkt)

ampamp notcurrupt(rcvpkt)

ampamp hasseqnum(rcvpktexpectedseqnum)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(expectedseqnumACKchksum)

udt_send(sndpkt)

expectedseqnum++

expectedseqnum=1

sndpkt =

make_pkt(expectedseqnumACKchksum)

L

Camada Transporte 3-48

GBN em accedilatildeo

Tamanho da janela = 4

Camada Transporte 3-49

SR - Selective Repeat

Receptor confirma individualmente cada pkt recebido corretamente armazena pkts quando necessaacuterio para eventual envio

de pacotes ordenados agrave camada superior

Emissor reenvia somente pkts para os quais o ACK natildeo foi recebido Emissor possui temporizador para cada pacote natildeo

confirmado (unACKed pkt)

Janela do emissor N consecutivos s de seq

Novamente limita s de seq de enviados pkts natildeo confirmados (unACKed pkts)

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 42: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-42

rdt30 funcionamento do stop-and-wait

Primeiro bit do pacote transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit do pkt transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega ACK

envidado

ACK chega envia proacuteximo

pacote t = RTT + L R

U sender

= 008

30008 = 000027

microseconds

L R

RTT + L R = = 0027

Camada Transporte 3-43

Protocolos com Pipeline

Pipelining emissor permite muacuteltiplos pacotes enviados e que ainda natildeo foram confirmados range do nuacutemero de sequumlecircncia deve ser aumentado

ldquobufferizaccedilatildeordquo no emissor eou receptor

2 formas geneacutericas de protocolos pipeline go-Back-N selective repeat (SR)

Camada Transporte 3-44

Pipelining aumento da utilizaccedilatildeo

Primeiro bit do pkt transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega envia ACK

ACK chega envia proacuteximo

pacote t = RTT + L R

Uacuteltimo bit do 2o pacote chega envia ACK

Uacuteltimo bit do 3o pacote chega envia

ACK

U sender

= 024

30008 = 00008

microseconds

3 L R

RTT + L R =

Utilizaccedilatildeo aumenta de um fator de 3 (neste

exemplo)

= 008

Camada Transporte 3-45

Go-Back-N Emissor de seq de k bits no cabeccedilalho do pacote

ldquojanelardquo de ateacute N consecutivos pacotes natildeo confirmados permitida

ACK(n) confirma todos os pacotes ateacute o n - ldquoACK cumulativordquo

Pode receber ACKs duplicados ACKs (veja receptor)

Temporizador para cada pacote enviado

timeout(n) retransmite pkt n e todos pacotes com s de seq maiores que estatildeo dentro da janela

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Camada Transporte 3-46

GBN FSM do emissor estendida

Wait start_timer

udt_send(sndpkt[base])

udt_send(sndpkt[base+1])

hellip

udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

if (nextseqnum lt base+N)

sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)

udt_send(sndpkt[nextseqnum])

if (base == nextseqnum)

start_timer

nextseqnum++

else

refuse_data(data)

base = getacknum(rcvpkt)+1

If (base == nextseqnum)

stop_timer

else

start_timer

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

base=1

nextseqnum=1

rdt_rcv(rcvpkt)

ampamp corrupt(rcvpkt)

L

Somente ACKs satildeo usados (sem NAKs)

Camada Transporte 3-47

GBN FSM do receptor estendida

ACK-only sempre envia ACK para pacote recebido ldquona ordemrdquo corretamente com de seq mais elevado Pode gerar ACKs duplicados Precisa recordar somente o de seq esperado

(expectedseqnum)

Pkt fora de ordem descarta (natildeo armazena) -gt receptor natildeo possui buffer Re-ACK pkt com o de seq mais elevado e em ordem

Wait

udt_send(sndpkt)

default

rdt_rcv(rcvpkt)

ampamp notcurrupt(rcvpkt)

ampamp hasseqnum(rcvpktexpectedseqnum)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(expectedseqnumACKchksum)

udt_send(sndpkt)

expectedseqnum++

expectedseqnum=1

sndpkt =

make_pkt(expectedseqnumACKchksum)

L

Camada Transporte 3-48

GBN em accedilatildeo

Tamanho da janela = 4

Camada Transporte 3-49

SR - Selective Repeat

Receptor confirma individualmente cada pkt recebido corretamente armazena pkts quando necessaacuterio para eventual envio

de pacotes ordenados agrave camada superior

Emissor reenvia somente pkts para os quais o ACK natildeo foi recebido Emissor possui temporizador para cada pacote natildeo

confirmado (unACKed pkt)

Janela do emissor N consecutivos s de seq

Novamente limita s de seq de enviados pkts natildeo confirmados (unACKed pkts)

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 43: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-43

Protocolos com Pipeline

Pipelining emissor permite muacuteltiplos pacotes enviados e que ainda natildeo foram confirmados range do nuacutemero de sequumlecircncia deve ser aumentado

ldquobufferizaccedilatildeordquo no emissor eou receptor

2 formas geneacutericas de protocolos pipeline go-Back-N selective repeat (SR)

Camada Transporte 3-44

Pipelining aumento da utilizaccedilatildeo

Primeiro bit do pkt transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega envia ACK

ACK chega envia proacuteximo

pacote t = RTT + L R

Uacuteltimo bit do 2o pacote chega envia ACK

Uacuteltimo bit do 3o pacote chega envia

ACK

U sender

= 024

30008 = 00008

microseconds

3 L R

RTT + L R =

Utilizaccedilatildeo aumenta de um fator de 3 (neste

exemplo)

= 008

Camada Transporte 3-45

Go-Back-N Emissor de seq de k bits no cabeccedilalho do pacote

ldquojanelardquo de ateacute N consecutivos pacotes natildeo confirmados permitida

ACK(n) confirma todos os pacotes ateacute o n - ldquoACK cumulativordquo

Pode receber ACKs duplicados ACKs (veja receptor)

Temporizador para cada pacote enviado

timeout(n) retransmite pkt n e todos pacotes com s de seq maiores que estatildeo dentro da janela

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Camada Transporte 3-46

GBN FSM do emissor estendida

Wait start_timer

udt_send(sndpkt[base])

udt_send(sndpkt[base+1])

hellip

udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

if (nextseqnum lt base+N)

sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)

udt_send(sndpkt[nextseqnum])

if (base == nextseqnum)

start_timer

nextseqnum++

else

refuse_data(data)

base = getacknum(rcvpkt)+1

If (base == nextseqnum)

stop_timer

else

start_timer

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

base=1

nextseqnum=1

rdt_rcv(rcvpkt)

ampamp corrupt(rcvpkt)

L

Somente ACKs satildeo usados (sem NAKs)

Camada Transporte 3-47

GBN FSM do receptor estendida

ACK-only sempre envia ACK para pacote recebido ldquona ordemrdquo corretamente com de seq mais elevado Pode gerar ACKs duplicados Precisa recordar somente o de seq esperado

(expectedseqnum)

Pkt fora de ordem descarta (natildeo armazena) -gt receptor natildeo possui buffer Re-ACK pkt com o de seq mais elevado e em ordem

Wait

udt_send(sndpkt)

default

rdt_rcv(rcvpkt)

ampamp notcurrupt(rcvpkt)

ampamp hasseqnum(rcvpktexpectedseqnum)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(expectedseqnumACKchksum)

udt_send(sndpkt)

expectedseqnum++

expectedseqnum=1

sndpkt =

make_pkt(expectedseqnumACKchksum)

L

Camada Transporte 3-48

GBN em accedilatildeo

Tamanho da janela = 4

Camada Transporte 3-49

SR - Selective Repeat

Receptor confirma individualmente cada pkt recebido corretamente armazena pkts quando necessaacuterio para eventual envio

de pacotes ordenados agrave camada superior

Emissor reenvia somente pkts para os quais o ACK natildeo foi recebido Emissor possui temporizador para cada pacote natildeo

confirmado (unACKed pkt)

Janela do emissor N consecutivos s de seq

Novamente limita s de seq de enviados pkts natildeo confirmados (unACKed pkts)

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 44: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-44

Pipelining aumento da utilizaccedilatildeo

Primeiro bit do pkt transmitido t = 0

emissor receptor

RTT

Uacuteltimo bit transmitido t = L R

Primeiro bit do pacote chega

Uacuteltimo bit do pacote chega envia ACK

ACK chega envia proacuteximo

pacote t = RTT + L R

Uacuteltimo bit do 2o pacote chega envia ACK

Uacuteltimo bit do 3o pacote chega envia

ACK

U sender

= 024

30008 = 00008

microseconds

3 L R

RTT + L R =

Utilizaccedilatildeo aumenta de um fator de 3 (neste

exemplo)

= 008

Camada Transporte 3-45

Go-Back-N Emissor de seq de k bits no cabeccedilalho do pacote

ldquojanelardquo de ateacute N consecutivos pacotes natildeo confirmados permitida

ACK(n) confirma todos os pacotes ateacute o n - ldquoACK cumulativordquo

Pode receber ACKs duplicados ACKs (veja receptor)

Temporizador para cada pacote enviado

timeout(n) retransmite pkt n e todos pacotes com s de seq maiores que estatildeo dentro da janela

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Camada Transporte 3-46

GBN FSM do emissor estendida

Wait start_timer

udt_send(sndpkt[base])

udt_send(sndpkt[base+1])

hellip

udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

if (nextseqnum lt base+N)

sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)

udt_send(sndpkt[nextseqnum])

if (base == nextseqnum)

start_timer

nextseqnum++

else

refuse_data(data)

base = getacknum(rcvpkt)+1

If (base == nextseqnum)

stop_timer

else

start_timer

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

base=1

nextseqnum=1

rdt_rcv(rcvpkt)

ampamp corrupt(rcvpkt)

L

Somente ACKs satildeo usados (sem NAKs)

Camada Transporte 3-47

GBN FSM do receptor estendida

ACK-only sempre envia ACK para pacote recebido ldquona ordemrdquo corretamente com de seq mais elevado Pode gerar ACKs duplicados Precisa recordar somente o de seq esperado

(expectedseqnum)

Pkt fora de ordem descarta (natildeo armazena) -gt receptor natildeo possui buffer Re-ACK pkt com o de seq mais elevado e em ordem

Wait

udt_send(sndpkt)

default

rdt_rcv(rcvpkt)

ampamp notcurrupt(rcvpkt)

ampamp hasseqnum(rcvpktexpectedseqnum)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(expectedseqnumACKchksum)

udt_send(sndpkt)

expectedseqnum++

expectedseqnum=1

sndpkt =

make_pkt(expectedseqnumACKchksum)

L

Camada Transporte 3-48

GBN em accedilatildeo

Tamanho da janela = 4

Camada Transporte 3-49

SR - Selective Repeat

Receptor confirma individualmente cada pkt recebido corretamente armazena pkts quando necessaacuterio para eventual envio

de pacotes ordenados agrave camada superior

Emissor reenvia somente pkts para os quais o ACK natildeo foi recebido Emissor possui temporizador para cada pacote natildeo

confirmado (unACKed pkt)

Janela do emissor N consecutivos s de seq

Novamente limita s de seq de enviados pkts natildeo confirmados (unACKed pkts)

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 45: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-45

Go-Back-N Emissor de seq de k bits no cabeccedilalho do pacote

ldquojanelardquo de ateacute N consecutivos pacotes natildeo confirmados permitida

ACK(n) confirma todos os pacotes ateacute o n - ldquoACK cumulativordquo

Pode receber ACKs duplicados ACKs (veja receptor)

Temporizador para cada pacote enviado

timeout(n) retransmite pkt n e todos pacotes com s de seq maiores que estatildeo dentro da janela

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Camada Transporte 3-46

GBN FSM do emissor estendida

Wait start_timer

udt_send(sndpkt[base])

udt_send(sndpkt[base+1])

hellip

udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

if (nextseqnum lt base+N)

sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)

udt_send(sndpkt[nextseqnum])

if (base == nextseqnum)

start_timer

nextseqnum++

else

refuse_data(data)

base = getacknum(rcvpkt)+1

If (base == nextseqnum)

stop_timer

else

start_timer

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

base=1

nextseqnum=1

rdt_rcv(rcvpkt)

ampamp corrupt(rcvpkt)

L

Somente ACKs satildeo usados (sem NAKs)

Camada Transporte 3-47

GBN FSM do receptor estendida

ACK-only sempre envia ACK para pacote recebido ldquona ordemrdquo corretamente com de seq mais elevado Pode gerar ACKs duplicados Precisa recordar somente o de seq esperado

(expectedseqnum)

Pkt fora de ordem descarta (natildeo armazena) -gt receptor natildeo possui buffer Re-ACK pkt com o de seq mais elevado e em ordem

Wait

udt_send(sndpkt)

default

rdt_rcv(rcvpkt)

ampamp notcurrupt(rcvpkt)

ampamp hasseqnum(rcvpktexpectedseqnum)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(expectedseqnumACKchksum)

udt_send(sndpkt)

expectedseqnum++

expectedseqnum=1

sndpkt =

make_pkt(expectedseqnumACKchksum)

L

Camada Transporte 3-48

GBN em accedilatildeo

Tamanho da janela = 4

Camada Transporte 3-49

SR - Selective Repeat

Receptor confirma individualmente cada pkt recebido corretamente armazena pkts quando necessaacuterio para eventual envio

de pacotes ordenados agrave camada superior

Emissor reenvia somente pkts para os quais o ACK natildeo foi recebido Emissor possui temporizador para cada pacote natildeo

confirmado (unACKed pkt)

Janela do emissor N consecutivos s de seq

Novamente limita s de seq de enviados pkts natildeo confirmados (unACKed pkts)

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 46: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-46

GBN FSM do emissor estendida

Wait start_timer

udt_send(sndpkt[base])

udt_send(sndpkt[base+1])

hellip

udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

if (nextseqnum lt base+N)

sndpkt[nextseqnum] = make_pkt(nextseqnumdatachksum)

udt_send(sndpkt[nextseqnum])

if (base == nextseqnum)

start_timer

nextseqnum++

else

refuse_data(data)

base = getacknum(rcvpkt)+1

If (base == nextseqnum)

stop_timer

else

start_timer

rdt_rcv(rcvpkt) ampamp

notcorrupt(rcvpkt)

base=1

nextseqnum=1

rdt_rcv(rcvpkt)

ampamp corrupt(rcvpkt)

L

Somente ACKs satildeo usados (sem NAKs)

Camada Transporte 3-47

GBN FSM do receptor estendida

ACK-only sempre envia ACK para pacote recebido ldquona ordemrdquo corretamente com de seq mais elevado Pode gerar ACKs duplicados Precisa recordar somente o de seq esperado

(expectedseqnum)

Pkt fora de ordem descarta (natildeo armazena) -gt receptor natildeo possui buffer Re-ACK pkt com o de seq mais elevado e em ordem

Wait

udt_send(sndpkt)

default

rdt_rcv(rcvpkt)

ampamp notcurrupt(rcvpkt)

ampamp hasseqnum(rcvpktexpectedseqnum)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(expectedseqnumACKchksum)

udt_send(sndpkt)

expectedseqnum++

expectedseqnum=1

sndpkt =

make_pkt(expectedseqnumACKchksum)

L

Camada Transporte 3-48

GBN em accedilatildeo

Tamanho da janela = 4

Camada Transporte 3-49

SR - Selective Repeat

Receptor confirma individualmente cada pkt recebido corretamente armazena pkts quando necessaacuterio para eventual envio

de pacotes ordenados agrave camada superior

Emissor reenvia somente pkts para os quais o ACK natildeo foi recebido Emissor possui temporizador para cada pacote natildeo

confirmado (unACKed pkt)

Janela do emissor N consecutivos s de seq

Novamente limita s de seq de enviados pkts natildeo confirmados (unACKed pkts)

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 47: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-47

GBN FSM do receptor estendida

ACK-only sempre envia ACK para pacote recebido ldquona ordemrdquo corretamente com de seq mais elevado Pode gerar ACKs duplicados Precisa recordar somente o de seq esperado

(expectedseqnum)

Pkt fora de ordem descarta (natildeo armazena) -gt receptor natildeo possui buffer Re-ACK pkt com o de seq mais elevado e em ordem

Wait

udt_send(sndpkt)

default

rdt_rcv(rcvpkt)

ampamp notcurrupt(rcvpkt)

ampamp hasseqnum(rcvpktexpectedseqnum)

extract(rcvpktdata)

deliver_data(data)

sndpkt = make_pkt(expectedseqnumACKchksum)

udt_send(sndpkt)

expectedseqnum++

expectedseqnum=1

sndpkt =

make_pkt(expectedseqnumACKchksum)

L

Camada Transporte 3-48

GBN em accedilatildeo

Tamanho da janela = 4

Camada Transporte 3-49

SR - Selective Repeat

Receptor confirma individualmente cada pkt recebido corretamente armazena pkts quando necessaacuterio para eventual envio

de pacotes ordenados agrave camada superior

Emissor reenvia somente pkts para os quais o ACK natildeo foi recebido Emissor possui temporizador para cada pacote natildeo

confirmado (unACKed pkt)

Janela do emissor N consecutivos s de seq

Novamente limita s de seq de enviados pkts natildeo confirmados (unACKed pkts)

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 48: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-48

GBN em accedilatildeo

Tamanho da janela = 4

Camada Transporte 3-49

SR - Selective Repeat

Receptor confirma individualmente cada pkt recebido corretamente armazena pkts quando necessaacuterio para eventual envio

de pacotes ordenados agrave camada superior

Emissor reenvia somente pkts para os quais o ACK natildeo foi recebido Emissor possui temporizador para cada pacote natildeo

confirmado (unACKed pkt)

Janela do emissor N consecutivos s de seq

Novamente limita s de seq de enviados pkts natildeo confirmados (unACKed pkts)

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 49: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-49

SR - Selective Repeat

Receptor confirma individualmente cada pkt recebido corretamente armazena pkts quando necessaacuterio para eventual envio

de pacotes ordenados agrave camada superior

Emissor reenvia somente pkts para os quais o ACK natildeo foi recebido Emissor possui temporizador para cada pacote natildeo

confirmado (unACKed pkt)

Janela do emissor N consecutivos s de seq

Novamente limita s de seq de enviados pkts natildeo confirmados (unACKed pkts)

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 50: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-50

Selective repeat janelas do emissor e receptor

Jaacute confirmados

Enviados mas natildeo

confirmados

Utilizaacuteveis mas natildeo enviados

Natildeo utilizaacuteveis no

momento

Fora de ordem (armazenados)

mas jaacute confirmados

Sendo aguardados

Aceitaacuteveis (dentro da

janela)

Natildeo utilizaacuteveis no

momento

Nuacutemeros de seq do ponto de vista do emissor

Nuacutemeros de seq do ponto de vista do receptor

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 51: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-51

Selective repeat

Dados da camada superior

Se proacuteximo de seq disponiacutevel dentro da janela envia pkt

timeout(n) reenvia pkt n reinicia

temporizador

ACK(n) no intervalo [sendbasesendbase+N]

marca pkt n como recebido se n eacute o menor de seq de

pacotes natildeo confirmados avanccedila base da janela para o proacuteximo de seq natildeo confirmado

emissor

pkt n no intervalo [rcvbase rcvbase+N-1]

envia ACK(n)

For a de ordem buffer

Em ordem entrega (incluindo pkts ordenados no buffer) avanccedila janela para o proacuteximo pkt ainda natildeo recebido

pkt n no intervalo [rcvbase-Nrcvbase-1]

ACK(n)

Caso contraacuterio ignore

receptor

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 52: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-52

Selective repeat em accedilatildeo

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 53: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-53

Selective repeat dilema

Exemplo s de seq 0 1 2 3

Tamanho da janela =3

Receptor natildeo vecirc

diferenccedila nos dois cenaacuterios

Incorretamente passa dados duplicados como sendo novos no exemplo (a)

Q qual a relaccedilatildeo entre o o de seq maacuteximo e o tamanho da janela

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 54: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-54

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 55: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-55

TCP Overview RFCs 793 1122 1323 2018 2581

Dados full duplex Fluxo de dados bidirecional

sobre a mesma conexatildeo

MSS Maximum Segment Size (tamanho maacuteximo de segmento)

Orientado agrave conexatildeo handshaking (troca de msgs

de controle) inicia emissor e estado do receptor antes da troca de dados

Fluxo controlado Emissor natildeo vai enviar mais

dados que o receptor possa receber

ponto-a-ponto Um emissor um receptor

Stream de bytes confiaacutevel e em ordem ldquomensagens natildeo possuem

limitesrdquo

pipelined Controle de fluxo e

congestionamento do TCP setam tamanho da janela

Buffers nos emissor e receptor

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes dataapplication

reads data

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 56: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-56

Estrutura do segmento TCP

da porta do emissor da porta do destino

32 bits

Dados da aplicaccedilatildeo

(tamanho variaacutevel)

nuacutemero de sequumlecircncia

nuacutemero confirmado (ACK)

Janela do receptor

Urg data pnter checksum

F S R P A U tam cabccedil

natildeo usado

Opccedilotildees (tamanho variaacutevel)

URG dados urgentes (geralmente natildeo usado)

ACK de ACK vaacutelido

PSH passar dados imediatamente para

a camada superior (geralmente natildeo usado)

RST SYN FIN estabelecimento

de conexatildeo (comandos setup

teardown)

de bytes receptor estaacute desejando receber

Contagem por bytes de dados (natildeo por segmentos)

Internet checksum

(como no UDP)

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 57: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-57

de seq e ACKs noTCP s de seq

byte stream ldquonumberrdquo of first byte in segment‟s data

ACKs

de seq do proacuteximo byte aguardado pelo outro lado

ACK cumulativo

Q como receptor trata segmentos fora de ordem

R especificaccedilatildeo TCP natildeo diz ndash deixada para o desenvolvedor

Host A Host B

Usuaacuterio digita

bdquoC‟

host confirma (ACK) recepccedilatildeo

do caracter bdquoC‟ ecoado

host confirma (ACK)

recepccedilatildeo de bdquoC‟ ecoa bdquoC‟

de volta

tempo

Cenaacuterio com telnet

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 58: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-58

Round Trip Time (RTT) e Timeout no TCP

Q como setar o valor do timeout do TCP

maior que o RTT mas o RTT varia

Muito curto timeout prematuro

Retransmissotildees desnecessaacuterias

Muito longo reaccedilatildeo lenta agrave perda de segmentos

Q como estimar o RTT SampleRTT tempo medido a

partir da transmissatildeo do segmento ateacute a recepccedilatildeo do ACK

ignora retransmissotildees

SampleRTT variaraacute deseja-se uma estimativa de RTT ldquosuavizadardquo

Faz-se uma meacutedia de vaacuterias medidas recentes natildeo se usa somente a atual (SampleRTT)

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 59: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-59

Round Trip Time (RTT) e Timeout no TCP EstimatedRTT = (1- )EstimatedRTT + SampleRTT

Exponential Weighted Moving Average (EWMA)

Influecircncia de amostras do passado decresce exponencialmente de forma raacutepida Peso para um dado SampleRTT decai exponencialmente

raacutepido quando atualizaccedilotildees (novos SampleRTTs) satildeo feitas

Maior peso para amostras recentes

Valor tiacutepico = 0125

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 60: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-60

Exemplo de estimaccedilatildeo do RTT RTT gaiacsumassedu to fantasiaeurecomfr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 61: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-61

Round Trip Time (RTT) e Timeout no TCP Setando o timeout EstimtedRTT + ldquomargem segurardquo

Quanto maior a variaccedilatildeo no RTT estimado (EstimatedRTT)

-gt maior a margem de seguranccedila

Primeira estimativa de quanto a amostra do RTT (SampleRTT) desvia do RTT estimado (EstimatedRTT)

TimeoutInterval = EstimatedRTT + 4DevRTT

DevRTT = (1-)DevRTT +

|SampleRTT-EstimatedRTT|

(tipicamente = 025)

Em seguida o intervalo de timeout eacute setado para

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 62: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-62

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 63: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-63

Transferecircncia confiaacutevel de dados no TCP

TCP cria serviccedilo de transf confiaacutevel de dados no topo do serviccedilo natildeo-confiaacutevel do IP

Segmentos ldquoPipelinedrdquo Acks cumulativos Conceitualmente o TCP

usa muacuteltiplos temporizadores de transmissatildeo

Retransmissotildees satildeo disparadas por Eventos de expiraccedilatildeo

(timeout) Acks duplicados

Inicialmente considere um emissor TCP simplificado ignore acks duplicados ignore controle de

fluxo ignore controle de congestionamento

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 64: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-64

TCP transferecircncia confiaacutevel de dados

emissor simplificado supondo

wait for

event

wait for

event

evento dado recebido

da camada superior

evento expiraccedilatildeo do

tempor do seg com de seq y

evento ACK recebido

com ACK = y

cria envia segmento

retransmite segmento

processamento do ACK

bullfluxo de dados uni-direcional bullsem controle de fluxo congestionamento

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 65: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-65

TCP transfe-recircncia confiaacutevel de dados

00 sendbase = nuacutemero de sequumlecircncia inicial

01 nextseqnum = nuacutemero de sequumlecircncia inicial

02

03 loop (forever)

04 switch(event)

05 event dados recebidos da aplicaccedilatildeo acima

06 cria segmento TCP com nuacutemero de sequumlecircncia nextseqnum

07 inicia temporizador para segmento nextseqnum

08 passa segmento para IP

09 nextseqnum = nextseqnum + comprimento(dados)

10 event expirado temporizador de segmento c no de sequumlecircncia y

11 retransmite segmento com nuacutemero de sequumlecircncia y

12 calcula novo intervalo de temporizaccedilatildeo para segmento y

13 reinicia temporizador para nuacutemero de sequumlecircncia y

14 event ACK recebido com valor de campo ACK de y

15 se (y gt sendbase) ACK cumulativo de todos dados ateacute y

16 cancela temporizadores p segmentos c nos de sequumlecircncia lt y

17 sendbase = y

18

19 senatildeo eacute ACK duplicado para segmento jaacute reconhecido

20 incrementa nuacutemero de ACKs duplicados recebidos para y

21 if (nuacutemero de ACKs duplicados recebidos para y == 3)

22 TCP retransmissatildeo raacutepida

23 reenvia segmento com nuacutemero de sequumlecircncia y

24 reinicia temporizador para nuacutemero de sequumlecircncia y

25

26 fim de loop forever

emissor TCP simplificado

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 66: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-66

Eventos no emissor TCP dados receb da aplic

Cria segmento com de seq

de seq eacute o nuacutemero do primeiro byte de dados no segmento

Inicia temporizador se jaacute natildeo estiver executando

Intervalo de expiraccedilatildeo TimeOutInterval

timeout

retransmite segmento que causou o timeout

reinicia temporizador

Ack recebido

Se confirma segmentos preacutevios natildeo-confirmados Atualiza o que eacute conhecido

a ser confirmado

Inicia temporizador se existem segmentos devidos

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 67: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-67

TCP cenaacuterios com retransmissatildeo

Host A

tempo Timeout prematuro

Host B

Seq=

92

tim

eou

t

Host A

perda

tim

eou

t

Cenaacuterio com ACK perdido

Host B

X

tempo

Seq=

92

tim

eou

t SendBase

= 100

SendBase = 120

SendBase = 120

Sendbase = 100

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 68: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-68

TCP + cenaacuterios com retransmissatildeo

Host A

perda

tim

eou

t

Cenaacuterio com ACK cumulativo

Host B

X

tempo

SendBase = 120

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 69: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-69

Geraccedilatildeo de ACK no TCP [recomendaccedilotildees

na RFC 1122 e na RFC 2581] Evento no Receptor

Chegada ldquona ordemrdquo de segmento

com esperado de seq Todos os

dados ateacute o de seq esperado

jaacute confirmados Sem lacunas

Chegada ldquona ordemrdquo de segmento

com de seq esperado Um outro seg

ldquoem ordemrdquo aguardando transmissatildeo

de ACK

Chegada de segmento fora

de ordem com de seq gt que

esperado Lacuna detectada

Chegada de segmento que

parcialmente ou totalmente

preenche a lacuna

Accedilatildeo do Receptor TCP

Atrasar ACK Aguarde ateacute 500ms

pelo proacuteximo segmento Se natildeo chegar

envie ACK

Enviar imediatamente ACK cumulativo

uacutenico confirmando ambos segmentos

ldquona ordemrdquo

Enviar imediatamente ACK (duplicado)

indicando de seq do proacuteximo byte

esperado

Enviar imediatamente ACK dado que

segmento inicia no princiacutepio da

lacuna

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 70: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-70

Fast Retransmit ndash Retransmissatildeo Raacutepida

Periacuteodo de expiraccedilatildeo relativamente longo Grande atraso antes de

reenviar pacote perdido

Detecta segmentos perdidos via ACKs duplicados Emissor

frequumlentemente envia muitos segmentos sucessivos

Se segmento eacute perdido haveraacute provavelmente muitos ACKs duplicados

Se emissor recebe 3 duplicados ACKs (4 ACKS consecutivosidecircnticossem outros pacotes no meio) para o mesmo dado ele supotildee que segmento apoacutes dado confirmado foi perdido fast retransmit reenvia

segmento antes do temporizador expirar

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 71: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-71

evento ACK recebido com campo ACK de valor igual a y

if (y gt SendBase)

SendBase = y

if (haacute atualmente segmentos ainda natildeo confirmados)

iniciar temporizador

else

incrementar contador de ACKs duplicados recebidos para y

if (contador de ACKs duplicados recebidos para y = 3)

reenviar segmento com de seq y

Algoritmo do Fast retransmit

Um ACK duplicado para segmento jaacute confirmado

fast retransmit

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 72: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-72

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 73: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-73

Controle de FluxoTCP

Lado receptor da conexatildeo TCP possui um buffer receptor

serviccedilo de ldquocasamentordquo de taxas ldquocasarrdquo a taxa de envio com a taxa de drenagem de dados da aplicaccedilatildeo receptora Processo aplicaccedilatildeo

pode ser lento ao ler dados do buffer

Emissor natildeo estoura o buffer do receptor transmitindo demais

ou muito raacutepido

Controle de fluxo

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 74: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-74

Controle de fluxoTCP funcionamento

(Suponha que receptor TCP descarte segmentos for a de ordem)

espaccedilo livre no buffer = RcvWindow

= RcvBuffer-[LastByteRcvd -

LastByteRead]

Recept informa espaccedilo livre atraveacutes da inclusatildeo nos segmentos do valor da janela de recepccedilatildeo RcvWindow

Emissor limita dados natildeo confirmados ao tamanho da janela RcvWindow

guarante que buffer do receptor natildeo ldquotransbordardquo

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 75: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-75

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 76: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-76

Gerenciamento de conexatildeo TCP Lembre-se estabelecimento

de conexatildeo entre o emissor e receptor TCP antes da troca de segmentos de dados

inicializar variaacuteveis TCP

s de seq

buffers informaccedilatildeo de controle de fluxo (eg RcvWindow)

cliente iniciador da conexatildeo

Socket clientSocket = new

Socket(hostnameport

number) servidor contactado pelo

cliente Socket connectionSocket =

welcomeSocketaccept()

Three-way handshake

Passo 1 host cliente envia segmento SYN TCP para o servidor

especifica de seq inicial

sem dados

Passo 2 host servidor recebe SYN responde com segmento SYNACK

servidor aloca buffers

especifica de seq inicial do servidor

Passo 3 cliente recebe SYNACK responde com segmento ACK que pode conter dados

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 77: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-77

Gerenciamento de ConexatildeoTCP (cont)

Fechando uma conexatildeo

cliente fecha socket clientSocketclose()

Passo 1 cliente envia segmento TCP de controle FIN ao servidor

Passo 2 servidor recebe FIN responde com ACK Fecha conexatildeo envia FIN

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 78: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-78

Gerenciamento de Conexatildeo TCP (cont)

Passo 3 cliente recebe FIN responde com ACK

Entra na ldquoespera temporizadardquo ndash responderaacute com ACK aos FINs recebidos

Passo 4 servidor recebe ACK Conexatildeo fechada

cliente servidor

fechar

fechar

fechado

Esp

era

tem

pori

zada

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 79: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-79

Gerenciamento de Conexatildeo TCP (cont)

Ciclo de vida do cliente TCP

Ciclo de vida do servidor TCP

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 80: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-80

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Transferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 81: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-81

Princiacutepios do Controle de Congestionamento

Congestionamento informalmente ldquofontes demais enviando dados

demais muito raacutepido ultrapassando a capacidade da rederdquo

diferente de controle de fluxo

manifestaccedilotildees

Pacotes perdidos (ldquoestourordquo de buffer nos roteadores)

Atrasos elevados (ldquoenfileiramentordquo em buffers nos roteadores)

Problema na lista dos top-10

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 82: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-82

Causascustos do congestionamento

cenaacuterio 1 2 emissores 2

receptores 1 roteador buffers

infinitos sem retransmissotildees

Atraso (delay) muito elevado quando rede congestionada

Vazatildeo (throughput) maacutexima alcanccedilaacutevel

Buffers ilimitados do

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

Em bytessegundo

Enlace de capacidade C

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 83: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-83

Causascustos do congestionamento

cenaacuterio 2 1 roteador buffers finitos

emissor retransmissatildeo de pacote perdido

Buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 84: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-84

Causascustos do congestionamento

cenaacuterio 2 (a) sempre (goodput)

(b) Retransmissotildees ldquoperfeitasrdquo somente quando perda

(c) Retransmissatildeo de pacotes atrasados (natildeo perdidos) faz

maior (que caso perfeito) para mesmo

l in

l out

=

l in

l out

gt

l in

l out

ldquocustosrdquo do congestionamento

(b) mais trabalho (retransmissotildees) para dada ldquogoodputrdquo

(c) Retransmissotildees desnecessaacuterias enlace carrega muacuteltiplas coacutepias do mesmo pacote

R2

R2 lin

lout

b

R2

R2 lin

lout

a

R2

R2 lin

lout

c

R4

R3

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 85: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-85

Causascustos do congestionamento

cenaacuterio 3 4 emissores

Caminhos com muacuteltiplos saltos

timeoutretransmissatildeo

l in

Q o que acontece quando e aumentam

l in

buffers finitos de

enlace de saiacuteda

compartilhado

Host A lin dado original

Host B

lout

lin dado original mais dado retransmitido

Host B

Host C Host D

Host A

R1

R2

R3

R4

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 86: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-86

Causascustos do congestionamento

cenaacuterio 3

Um outro ldquocustordquo do congestionamento

Quando pacote descartado a capacidade de transmissatildeo ldquoupstreamrdquo usada para este pacote foi desperdiccedilada

H

o

s

t

A

H

o

s

t

B

lo

u

t

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 87: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-87

Abordagens para o controle de congestionamento

Controle de congestionamento fim-agrave-fim

Sem feedback expliacutecito da rede

Congestionamento inferido pelos end-systems atraveacutes das perdas e atrasos observados

Abordagem usada pelo TCP

Controle de congestionamento assistido pela rede (Network-

assisted congestion control) roteadores provecircem feedback

para os end systems

bit uacutenico indicando congestionamento (SNA DECbit TCPIP ECN ATM)

Taxa expliacutecita que emissor deve usar

2 abordagens amplas para o controle de congestionamento

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 88: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-88

Estudo de caso Controle de congestionamento ABR da rede ATM

ABR available bit rate ldquoserviccedilo elaacutesticordquo

Se caminho emissor-receptor estiver ldquosub-utilizadordquo (underloaded)

Emissor deve usar banda disponiacutevel

Se caminho emissor-receptor estiver congestionado

Emissor reduz taxa para o menor valor garantido

Ceacutelulas RM (resource management)

Enviadas pelo emissor intercaladas com ceacutelulas de dados

bits na ceacutelula RM cell setados pelos comutadores (ldquonetwork-assistedrdquo) Bit NI nenhum incremento

na taxa (mild congestion)

Bit CI indicaccedilatildeo de congestinamento

Receptor retorna ceacutelulas RM ao emissor com os bits inalterados

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 89: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-89

Estudo de caso Controle de congestionamento ABR da rede ATM

Campo ER (explicit rate) de 2 bytes no cabeccedilalho da ceacutelula RM Comutador congestionado pode reduzir valor ER na ceacutelula Taxa do emissor ajustada para a menor taxa suportada pelo

caminho ateacute o receptor

Bit EFCI em ceacutelulas de dados setado para 1 em comutadores congestionados Se ceacutelula de dados precedendo ceacutelula RM possui o bit RFCI setado

emissor seta bit CI na ceacutelula RM retornada

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 90: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-90

Resumo do Moacutedulo 3

31 Serviccedilos da camada transporte

32 Multiplexaccedilatildeo e demultiplexatildeo

33 transporte natildeo-orientado agrave conexatildeo UDP

34 Princiacutepios da transferecircncia confiaacutevel de dados

35 transporte orientado agrave conexatildeo TCP Estrutura do segmento Tranferecircncia de dados

confiaacutevel Controle de fluxo Gerenciamento de

conexatildeo

36 Princiacutepios do controle de congestionamento

37 controle de congestionamento TCP

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 91: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-91

TCP Controle de Congestionamento

controle fim a fim (sem apoio da rede)

taxa de transmissatildeo limitada pela tamanho da janela de congestionamento Congwin

w segmentos cada um c MSS bytes enviados por RTT

throughput =

w MSS

RTT

Bytessec

Congwin

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 92: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-92

TCP Partida lenta (slow start)

aumento exponencial (por RTT) no tamanho da janela (natildeo muito lenta)

evento de perda temporizador (Tahoe TCP) eou trecircs ACKs duplicados (Reno TCP)

inicializa Congwin = 1

for (cada segmento c ACK)

Congwin++

until (evento de perda OR

CongWin gt threshold)

Estaccedilatildeo A

RT

T

Estaccedilatildeo B

tempo

Algoritmo Partida Lenta

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 93: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-93

TCP Evitar Congestionamento

partida lenta acabou

Congwin gt threshold

Until (event de perda)

cada w segmentos

reconhecidos

Congwin++

threshold = Congwin2

Congwin = 1

faccedila partida lenta

1

1 TCP Reno pula partida lenta (recuperaccedilatildeo raacutepida) depois de trecircs ACKs duplicados

Evitar congestionamento

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 94: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-94

Controle de congestionamentoTCP additive increase multiplicative decrease (AIMD)

8 Kbytes

16 Kbytes

24 Kbytes

time

congestion

window

Abordagem aumentar taxa de transmissatildeo (tamanho da janela) sondar bw ainda utilizaacutevel ateacute ocorrecircncia de perda de pacote

Aumento aditivo aumenta CongWin de 1 MSS a cada RTT ateacute perda ser detectada

reduccedilatildeo multiplicativa reduz CongWin pela metade apoacutes detectar perda

tempo

Comportamento dente-de-serra

Sondagem de bw

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 95: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-95

Refinamento

Q Quando o aumento exponencial deve parar para se tornar linear

A Quando CongWin assume 12 do seu valor antes do timeout

Implementaccedilatildeo Threshold (limiar) Variaacutevel No evento de perda

Threshold eacute setado para 12 da CongWin Valor da janela antes do evento de perda

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 96: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-96

Refinamento inferindo perdas Apoacutes 3 ACKs duplicados

CongWin eacute reduzida pela metade

Janela cresce lineamente

Mas apoacutes evento de timeout

CongWin eacute setada para 1 MSS

Janela entatildeo cresce exponencialmente

Ateacute um threshold (limiar) e entatildeo volta a crescer linearmente

3 ACKs dup indica rede capaz de entregar alguns segmentos timeout indica um cenaacuterio ldquomais alarmanterdquo de congestionamento

Filosofia

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 97: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-97

Sumaacuterio Controle de Congestionamento

Quando CongWin estaacute abaixo de Threshold emissor estaacute na fase slow-start janela cresce exponencialmente

Quando CongWin estaacute acima de Threshold emissor estaacute na fase congestion-avoidance janela cresce linearmente

Quando trecircs ACKs duplicados ocorrem Threshold eacute setado para CongWin2 e CongWin eacute setado para Threshold

Quando timeout ocorre Threshold eacute setado para CongWin2 e CongWin eacute setado para 1 MSS

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 98: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-98

Controle de congestionamento TCP estado Evento Accedilatildeo do emissor TCP Comentaacuterio

Slow Start

(SS)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin + MSS

If (CongWin gt Threshold)

estado atual setado para

ldquoCongestion Avoidancerdquo

Dobra CongWin a cada

RTT

Congestion

Avoidance

(CA)

ACK

recebido

para dado

ainda natildeo

confirmado

CongWin = CongWin+MSS

(MSSCongWin)

Aumento aditivo CongWin

aumenta de 1 MSS a cada

RTT

SS ou CA Perda

detectada

atraveacutes de 3

ACKs

duplicados

Threshold = CongWin2

CongWin = Threshold

Estado atual setado para

ldquoCongestion Avoidancerdquo

Recuperaccedilatildeo raacutepida

implementando reduccedilatildeo

multiplicativa CongWin natildeo

cairaacute abaixo de 1 MSS

SS ou CA Timeout Threshold = CongWin2

CongWin = 1 MSS

Estado atual setado para ldquoSlow

Startrdquo

Entra no slow start

SS ou CA ACK

duplicado

Incrementar contador de ACK

duplicado para o segmento

sendo confirmado

CongWin e Threshold natildeo

mudam

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 99: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-99

Vazatildeo do TCP

Qual a vazatildeo meacutedia do TCP em funccedilatildeo do tamanho da janela e do RTT Ignore slow start

Seja W o tamanho da janela quando uma perda ocorre

Quando janela eacute W vazatildeo eacute WRTT

Logo apoacutes perda janela cai agrave W2 e vazatildeo agrave W2RTT

Vazatildeo meacutedia 75 WRTT

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 100: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-100

Caracteriacutesticas do TCP

Exemplo segmentos de 1500 bytes RTT = 100ms deseja-se 10 Gbps de vazatildeo

Requer janela W = 83333 segmentos sendo enviados

Vazatildeo em termos da taxa de perdas (L)

L = 210-10 Uau Novas versotildees do TCP para altas taxas de envio

necessaacuterias

LRTT

MSS221

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 101: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-101

Objetivo da justiccedila se K sessotildees TCP compartilham um mesmo enlace (de gargalo) de banda passante R cada uma deve ter uma taxa meacutedia de RK

Conexatildeo TCP 1

Roteador gargalo capacidade R

conexatildeoTCP 2

Justiccedila no TCP (TCP Fairness)

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 102: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-102

Por que TCP eacute justo

2 sessotildees competindo Aumento aditivo - saltos de 1 (vazatildeo aumenta)

Reduccedilatildeo multiplicativa dimuni vazatildeo proporcionalmente

R

R

Compartilhamento igual da banda pasante

Vazatildeo da conexatildeo 1

congestion avoidance aumento aditivo

perda diminui janela por fator de 2

congestion avoidance aumento aditivo perda diminui janela por fator de 2

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 103: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-103

Justiccedila (mais)

Justiccedila e o UDP

Apps multimiacutedia geralmente natildeo usam TCP Para natildeo restringir taxa

devido ao controle de congestionamento

Em vez do TCP as apps multimiacutedia usam UDP aacuteudioviacutedeo injetados agrave

taxas constantes toleram perdas de pacotes

Aacuterea de pesquisa TCP friendly (protocolos amigos do TCP)

Justiccedila e conexotildees TCP paralelas

Nada previne apps de abrirem conexotildees paralelas entre dois hosts

Web browsers fazem isto

Exemplo enlace de taxa R suportando 9 conexotildees Nova app requisita 1 conexTCP

recece taxa R10

Nova app requisita 11 conexTCPs recebe R2

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 104: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-104

Modelagem de Atraso

Q Quanto tempo leva para receber um objeto de um servidor Web apoacutes o envio da requisiccedilatildeo

Ignorando congestionamento atraso eacute influenciado por

Estabelecimento de conexatildeo TCP

Atraso de transmissatildeo de dados

slow start (partida lenta)

Notaccedilatildeo hipoacuteteses Assuma 1 enlace de taxa R

entre cliente e servidor

S MSS (bits)

O tamanho do objeto (bits)

sem retransmissotildees (sem perdas natildeo haacute pkts corrompidos)

Tamanho da janela Primeiro assuma janela de

congestionamento fixa W segmentos

Em seguida assuma janela dinacircmica com modelagem do slow start

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 105: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-105

Janela de congestionamento fixa (1)

Primeiro caso WSR gt RTT + SR ACK para

primeiro segmento na janela retorna antes da transmissatildeo de todos os segmentos da janela

delay = 2RTT + OR

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 106: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-106

Janela de congestionamento fixa(2)

Segundo caso WSR lt RTT + SR

aguarda por ACK apoacutes enviar todos os segmentos previstos na janela

delay = 2RTT + OR + (K-1)[SR + RTT - WSR]

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 107: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-107

Modelagem do Atraso no TCP Slow Start (1)

Agora suponha que janela cresce de acordo com o slow start O atraso para um objeto seraacute

R

S

R

SRTTP

R

ORTTLatency P )12(2

onde P eacute o nuacutemero de vezes que o TCP fica esperando no servidor

1min KQP

-onde Q eacute o nuacutemero de vezes que o servidor espera caso o objeto fosse de tamanho infinito

- e K eacute o nuacutemero necessaacuterio de janelas para transmitir o objeto

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 108: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-108

Modelagem do Atraso no TCP Slow Start (2)

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Exemplo bull OS = 15 segmentos bull K = 4 janelas bull Q = 2 bull P = minK-1Q = 2 Servidor espera P=2 vezes

Componentes do atraso bull 2 RTT para estabelecimento de conex e requisiccedilatildeo bull OR para transmitir objeo bull tempo que o servidor espera devido ao slow start

Servidor espera P = minK-1Q vezes

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 109: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-109

Modelagem do Atraso no TCP (3)

R

S

R

SRTTPRTT

R

O

R

SRTT

R

SRTT

R

O

idleTimeRTTR

O

P

kP

k

P

p

p

)12(][2

]2[2

2delay

1

1

1

th window after the timeidle 2 1 kR

SRTT

R

S k

ementacknowledg receivesserver until

segment send tostartsserver whenfrom time RTTR

S

window kth the transmit totime2 1

R

Sk

RTT

initiate TCP

connection

request

objectfirst window

= SR

second window

= 2SR

third window

= 4SR

fourth window

= 8SR

complete

transmissionobject

delivered

time at

client

time at

server

Tempo desde o iniacutecio do envio de um segmento ateacute o recebimento do ack

Tempo para transmitir a k-eacutesima janela

Tempo de espera apoacutes k-eacutesima janela

atraso Tempo de espera p

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 110: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-110

Modelagem do Atraso no TCP (4)

)1(log

)1(logmin

12min

222min

222min

2

2

110

110

S

O

S

Okk

S

Ok

SOk

OSSSkK

k

k

k

Caacutelculo de Q nuacutemero de ldquoesperasrdquo para objeto de tamanho infinito eacute similar (veja o livro)

Lembre que K = nuacutemero de janelas para transmitir objeto Como calculamos K

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 111: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-111

Modelagem do HTTP Assuma que uma paacutegina Web consista em

1 paacutegina-base em HTML (de tamanho O bits) M imagens (cada uma de tamanho O bits)

HTTP natildeo-persistente M+1 conexotildees TCP em seacuterie Tempo de Resposta = (M+1)OR + (M+1)2RTT + soma de tempos

de espera HTTP Persistente

2 RTT para requiccedilatildeo e recebimento da paacutegina-base HTML 1 RTT para requisiccedilatildeo e iniacutecio de recebimento de M images Tempo de Resposta = (M+1)OR + 3RTT + soma de tempos de

espera HTTP Natildeo-persistente com X conexotildees paralelas

Suponha que MX seja inteiro 1 conexatildeo TCP para o aqrquivo de base MX conjuntos de conexotildees paralelas para imagens Tempo de Resposta = (M+1)OR + (MX + 1)2RTT + soma de

tempos de espera

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 112: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-112

0

2

4

6

8

10

12

14

16

18

20

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg) RTT = 100 ms O = 5 Kbytes M=10 e X=5

Para baixa BW tempo de conexatildeo e de resposta dominado pelo tempo de transmissatildeo Conexotildees persistentes somente provecircem pequena melhoria com relaccedilatildeo ao uso de conexotildees paralelas

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 113: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-113

0

10

20

30

40

50

60

70

28

Kbps

100

Kbps

1

Mbps

10

Mbps

non-persistent

persistent

parallel non-persistent

Tempo de resposta do HTTP (em seg)

RTT =1 sec O = 5 Kbytes M=10 and X=5

Para altos RTTs tempo de resposta eacute dominado pelos atrasos de estabelecimento de conexatildeo amp do slow start Conexotildees persistentes proporcionam agora melhoria importante de desempenho particularmente em redes com alto produto atrasobw

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede

Page 114: Infra-Estrutura de Comunicação (IF678)pasg/if678/modulo-3.pdf · P1 aplicação transporte rede enlace física aplicação transporte rede enlace física P3 P1 P2 P4 host 1 host

Camada Transporte 3-114

Moacutedulo 3 Sumaacuterio Princiacutepios por traacutes dos

serviccedilos da camada transporte

multiplexaccedilatildeo demultiplexaccedilatildeo

Transferecircncia confiaacutevel de dados

Controle de fluxo

Controle de congestionamento

Instanciaccedilatildeo e implementaccedilatildeo na Internet

UDP

TCP

A seguir

Deixando a extremidade da rede (camadas aplicaccedilatildeo transporte)

e entrando no nuacutecleo da rede